Zum Hauptinhalt springen

Dokumentenchat

Der Dokumentenchat ermöglicht Libre WebUI, hochgeladene Dokumente zu durchsuchen und relevante Auszüge in den Chatkontext einzufügen.

Unterstützte Dateien

Derzeit unterstützte Uploads:

  • PDF (mit Herkunft pro Seite)
  • Klartext und Protokolle
  • Markdown (.md, .markdown, .mdx, mit Herkunft pro Abschnitt)
  • HTML
  • Word-Dokumente (.docx)
  • Präsentationen (.pptx, mit Herkunft pro Folie)
  • Tabellen (.xlsx, mit Herkunft pro Arbeitsblatt) und CSV/TSV
  • Quellcode (TypeScript, Python, Go, Rust, SQL, YAML und weitere gängige Sprachen)
  • Bilder (.png, .jpg, .webp, .gif) – das konfigurierte Vision-Modell liest den Text (Einstellungen → Standardwerte → Vision-Modell)
  • Audio (.wav, .webm) – Transkription über den Speech-to-Text-Anbieter hinter derselben STT-Zugriffskontrolle wie die Spracheingabe
  • Maximale Dateigröße: 10 MB

Office-Formate werden mit einem begrenzten Parser aus dem Repository entpackt; im Serverprozess läuft keine externe Dokumentbibliothek. Werden identische Bytes erneut in denselben Bereich hochgeladen, werden sie dedupliziert statt zweimal eingelesen.

Die Extraktion von Bildern und Audio wird an bereits konfigurierte Anbieter geleitet. Es ist keine lokale OCR- oder Spracherkennungs-Engine enthalten, und außer dem Aufruf an das gewählte Modell verlässt nichts die Instanz. Ein PDF ohne Textebene (Scan) wird ebenso behandelt: Eingebettete JPEG-Seitenbilder werden wiederhergestellt und mit Herkunft pro Seite vom Vision-Modell gelesen. Andere Bildkodierungen (CCITT-Fax, JBIG2) liefern weiterhin keinen Text. Ohne Vision-Modell oder STT-Anbieter wird der Upload als fehlgeschlagen markiert und der Grund unter Einstellungen → Dokumente angezeigt.

Das Backend verarbeitet die Dateien und speichert sie mit den übrigen Anwendungsdaten.

Suchmodi

Libre WebUI unterstützt zwei Abrufmodi:

ModusVerwendungHinweise
StichwortsucheImmer verfügbarBM25-Rangfolge; kein Einbettungsmodell erforderlich
HybridsucheEinbettungen in Einstellungen aktiviertFührt Vektor- und BM25-Rangfolge mittels Reciprocal Rank Fusion zusammen

Bei aktivierten Einbettungen führt jede Abfrage beide Rangfolgen aus und kombiniert sie: Eine exakte Übereinstimmung kann einen semantisch ähnlichen, aber ungenaueren Ausschnitt übertreffen, und Ausschnitte mit noch nicht erstellten Einbettungen bleiben über die lexikalische Suche erreichbar. Schlagen Einbettungen fehl oder sind deaktiviert, fällt die Dokumentensuche auf reine Stichwortübereinstimmung zurück.

Die lexikalische Bewertung erfolgt im Prozess über zugängliche Ausschnitte. Libre unterhält absichtlich keinen Volltextindex auf der Festplatte, da der Text verschlüsselt gespeichert wird und ein Tokenindex Klartext neben dem Chiffretext bewahren würde. Ein Ausschnitt nimmt nur teil, wenn er mindestens ein Wort der Abfrage vollständig enthält. Daher zeigt ein zusammengesetzter Bezeichner wie ALPHA_BETA_GAMMA niemals Text an, der nur ein Fragment teilt.

Mit dir geteilte Wissenssammlungen nehmen automatisch an beiden Rangfolgen teil. Die Zugriffskontrolle wird innerhalb der Vektorabfrage erzwungen: Freigaben werden in die Index-ACL veröffentlicht. Der Widerruf blendet Dokumente bei der nächsten Suche aus, ohne Einbettungen neu zu erstellen.

Semantische Suche aktivieren

Installiere ein Einbettungsmodell:

ollama pull nomic-embed-text

Öffne danach die Einstellungen und aktiviere Einbettungen. Du kannst lokale Ollama-Modelle oder geeignete Anbieter-Plugins verwenden.

Standardeinstellungen:

  • Modell: nomic-embed-text
  • Ausschnittgröße: 1000 Zeichen
  • Überlappung: 200 Zeichen
  • Ähnlichkeitsschwelle: 0.3

Quellenangaben und vollständiger Dokumentmodus

Abgerufene Auszüge enthalten ihre Herkunft: Quelldateiname, Ausschnittindex, Abrufbewertung und bei Formaten mit Segmentkarte Seite, Folie, Arbeitsblatt oder Markdown-Abschnitt. Der Chatkontext kennzeichnet jeden Auszug, und die Quellenleiste listet die zitierten Stellen unter dem Dokument auf.

Jeder Chat kann in der Quellenleiste in den vollständigen Dokumentmodus wechseln. Statt Auszügen wird der gesamte extrahierte Inhalt aller Dokumente im Bereich gesendet. Ein Tokenlimit (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, standardmäßig 32000) schützt das Kontextfenster. Wird es überschritten, fällt der Chat auf den Abruf zurück und die Quellenleiste erklärt den Grund.

Hochladen und suchen

  1. Lade eine unterstützte Datei über die Dokumentsteuerung hoch.
  2. Warte auf die Verarbeitung.
  3. Stelle im Chat eine Frage.
  4. Libre WebUI ruft relevante Ausschnitte für die Sitzung ab und fügt sie als Kontext ein.

Beispiel-Prompts:

Summarize the uploaded document in five bullets.
What deadlines are mentioned in the PDF?
Find the section that talks about pricing.
Compare the uploaded policy with this proposed change.

API-Endpunkte

EndpunktZweck
POST /api/documents/uploadUnterstütztes Dokument hochladen
GET /api/documentsHochgeladene Dokumente auflisten
GET /api/documents/session/:sessionIdDokumente einer Chatsitzung auflisten
POST /api/documents/searchDokumente durchsuchen
DELETE /api/documents/:documentIdDokument löschen
GET /api/documents/embeddings/statusEinbettungsstatus anzeigen
POST /api/documents/embeddings/regenerateEinbettungen neu erstellen

Bewährte Verfahren

  • Beschränke Uploads auf die aktuelle Aufgabe.
  • Bevorzuge textbasierte PDFs; Scans funktionieren über das Vision-Modell, kosten aber einen Modellaufruf pro Seite.
  • Erstelle Einbettungen nach einem Modellwechsel neu.
  • Senke die Schwelle, wenn nützlicher Kontext fehlt.
  • Erhöhe sie bei zu ungenauen Ergebnissen.

Verwandte Dokumentation