2026-03-13 21:26:29 +01:00
2026-03-13 18:36:56 +01:00
2026-03-13 18:36:56 +01:00
2026-03-13 18:36:56 +01:00
2026-03-13 18:36:56 +01:00
2026-03-13 21:26:29 +01:00
2026-03-13 18:36:56 +01:00
2026-03-13 18:36:56 +01:00

DocuMind-G4

Dieses Projekt implementiert ein lokales Retrieval-Augmented Generation (RAG) System, das Dokumente aus Paperless-ngx synchronisiert, verarbeitet und über eine Streamlit Web-UI sowie einen Telegram Bot durchsuchbar macht.

Features

  • Delta-Sync mit Paperless-ngx: Synchronisiert nur neue oder geänderte Dokumente via API und löscht entfernte Dokumente automatisch aus dem Vektor-Speicher.
  • Hi-Res PDF Parsing: Nutzt unstructured mit OCR (Tesseract), um Tabellen und komplexe Layouts in PDFs korrekt zu erfassen.
  • Parent-Child Retrieval: Splittet Dokumente intelligent auf (kleine Chunks für die Vektorsuche in ChromaDB, große Chunks/ganze Dokumente für den LLM-Kontext in PostgreSQL/DocStore), um den Kontextverlust zu minimieren.
  • Lokales LLM: Verwendet granite4:tiny-h über Ollama für maximale Daten-Privatsphäre.
  • Multi-Interface: Bietet eine Web-Oberfläche (Streamlit) mit Metadaten-Filterung (z.B. nach Document ID) und einen zugangsbeschränkten Telegram-Bot.
  • Vollständig Dockerisiert: Alle Komponenten (PostgreSQL, ChromaDB, Ollama, Scheduler, Streamlit, Telegram) laufen isoliert in Containern.

Voraussetzungen

  • Docker und Docker Compose müssen installiert sein.
  • Eine laufende Paperless-ngx Instanz.
  • Ein Paperless API Token (kann im Paperless-Admin-Bereich erstellt werden).
  • Ein Telegram Bot Token (über den BotFather in Telegram erstellbar) sowie deine Telegram User-ID.

Setup & Installation

1. Repository vorbereiten Stelle sicher, dass alle Dateien (docker-compose.yml, Dockerfile, requirements.txt, init_ollama.sh und der src/-Ordner) korrekt am selben Ort liegen.

2. Skript ausführbar machen (Linux/macOS) Das Ollama-Startskript benötigt Ausführungsrechte:

chmod +x init_ollama.sh

3. Umgebungsvariablen konfigurieren Erstelle eine .env Datei im Hauptverzeichnis und fülle sie mit deinen Daten:

# Paperless
PAPERLESS_URL=http://<DEINE-PAPERLESS-IP>:8000
PAPERLESS_TOKEN=<DEIN_PAPERLESS_TOKEN>

# Postgres (Standardwerte können belassen werden)
POSTGRES_USER=raguser
POSTGRES_PASSWORD=ragpass
POSTGRES_DB=ragdb
POSTGRES_HOST=postgres
POSTGRES_PORT=5432

# Chroma & Ollama (Interne Docker-Routings)
CHROMA_HOST=chromadb
CHROMA_PORT=8000
OLLAMA_BASE_URL=http://ollama:11434

# Telegram
TELEGRAM_BOT_TOKEN=<DEIN_TELEGRAM_TOKEN>
ALLOWED_TELEGRAM_USERS=<DEINE_USER_ID>

Starten & Ausführen

Starte das gesamte System im Hintergrund:

docker-compose up -d --build

Was passiert beim ersten Start?

  • Die Datenbanken (Postgres, Chroma) werden initialisiert.

  • Der ollama-Container startet, wartet kurz und lädt automatisch das Modell granite4:tiny-h herunter.

  • Der scheduler wartet auf 03:00 Uhr nachts für den initialen Ingest (siehe Troubleshooting für einen manuellen Start).

  • streamlit und der telegram-bot gehen online.

Zugriff:

  • Streamlit Web-UI: Öffne http://localhost:8501 in deinem Browser.

  • Telegram Bot: Suche deinen Bot in Telegram und sende /start.


Nützliche Docker-Befehle (Troubleshooting & Logs)

Da das System aus vielen Microservices besteht, ist es wichtig zu wissen, wie man die Logs der einzelnen Container ausliest.

Logs des nächtlichen Schedulers ansehen: Hier siehst du, ob neue Dokumente aus Paperless geladen wurden oder ob Fehler beim PDF-Parsing (OCR) auftraten.

docker-compose logs -f scheduler

Logs des Telegram-Bots ansehen: Hilfreich, wenn der Bot nicht antwortet oder User-IDs abgewiesen werden.

docker-compose logs -f telegram-bot

Ollama Status prüfen: Sieh nach, ob das Modell erfolgreich heruntergeladen wurde.

docker-compose logs -f ollama

Manuellen Ingest (Sync) sofort anstoßen: Falls du nicht bis 03:00 Uhr nachts warten willst, kannst du den Sync-Job manuell im laufenden Scheduler-Container ausführen:

docker exec -it <name_des_scheduler_containers> python src/ingest_job.py

(Den genauen Containernamen findest du mit docker ps heraus).

System komplett stoppen und Daten behalten:

docker-compose down

System stoppen und ALLE Daten (Vektoren, DB, Modelle) löschen: Achtung: Dies löscht alle Volumes unwiderruflich.

docker-compose down -v
Description
Dieses Projekt implementiert ein lokales Retrieval-Augmented Generation (RAG) System, das Dokumente aus Paperless-ngx synchronisiert, verarbeitet und über eine Web-UI sowie einen Telegram Bot durchsuchbar macht.
Readme 46 KiB
Version 1.0 Latest
2026-03-13 22:33:55 +01:00
Languages
Python 88.9%
Shell 8.4%
Dockerfile 2.7%