Dokumentchatt
Dokumentchatt låter Libre WebUI söka i uppladdade dokument och föra in relevanta utdrag i chattkontexten.
Filer som stöds
Aktuellt uppladdningsstöd:
- PDF (med ursprung per sida)
- Oformaterad text och loggar
- Markdown (
.md,.markdown,.mdx, med ursprung per avsnitt) - HTML
- Word-dokument (
.docx) - Presentationer (
.pptx, med ursprung per bild) - Kalkylblad (
.xlsx, med ursprung per blad) och CSV/TSV - Källkod (TypeScript, Python, Go, Rust, SQL, YAML och andra vanliga språk)
- Bilder (
.png,.jpg,.webp,.gif) — texten läses av den konfigurerade bildförståelsemodellen (Inställningar → Standardinställningar → Bildförståelsemodell) - Ljud (
.wav,.webm) — transkriberas genom din tal-till-text-leverantör bakom samma STT-åtkomstgrind som röstindata - Största filstorlek: 10 MB
Office-format packas upp med en begränsad parser i repositoryt; inget dokumentbibliotek från tredje part körs i serverprocessen. Identiska byte som laddas upp igen inom samma omfång dedupliceras i stället för att läsas in två gånger.
Bild- och ljudextraktion dirigeras till leverantörer du redan har konfigurerat. Ingen lokal OCR- eller talmotor ingår och inget lämnar instansen utöver anropet till vald modell. En PDF utan textlager, alltså en skanning, hanteras likadant: inbäddade JPEG-sidbilder återställs och läses genom bildförståelsemodellen med ursprung per sida. Skanningar i andra bildkodningar (CCITT fax, JBIG2) ger fortfarande ingen text. Om ingen bildförståelsemodell eller STT-leverantör är konfigurerad markeras uppladdningen som misslyckad med orsaken i Inställningar → Dokument.
Filer behandlas av backend och lagras tillsammans med övriga programdata.
Söklägen
Libre WebUI stöder två hämtningslägen:
| Läge | När det används | Anmärkningar |
|---|---|---|
| Nyckelordssökning | Alltid tillgänglig | BM25-rankning; ingen inbäddningsmodell behövs |
| Hybridsökning | Inbäddningar aktiverade | Slår ihop vektorrankning med BM25 genom reciprocal-rank fusion |
Med inbäddningar aktiverade kör varje fråga båda rankningarna och sammanfogar dem. En exakt termmatchning kan rankas högre än ett semantiskt liknande men vagare segment, och segment vars inbäddningar fortfarande skapas kan hittas lexikalt. Om inbäddningar misslyckas eller inaktiveras återgår dokumentsökningen till ren nyckelordsmatchning.
Lexikal poängsättning körs i processen över segment du får åtkomst till. Libre underhåller avsiktligt inget fulltextindex på disk för dokumentsegment, eftersom segmenttext lagras krypterad och ett tokenindex skulle lagra klartext bredvid chiffertexten. Ett segment kvalificerar sig endast om det helt innehåller minst ett ord från frågan, så en sammansatt identifierare som ALPHA_BETA_GAMMA visar aldrig text som bara delar ett fragment.
Kunskapssamlingar som delas med dig deltar automatiskt i båda rankningarna. Åtkomstkontrollen tillämpas inuti vektorfrågan; behörigheter publiceras till indexets ACL, så en återkallad delning döljer dokumenten redan vid nästa sökning utan nya inbäddningar.
Aktivera semantisk sökning
Installera en inbäddningsmodell:
ollama pull nomic-embed-text
Öppna sedan Inställningar och aktivera inbäddningar. Du kan använda lokala Ollama-inbäddningsmodeller eller leverantörsplugin som stöder inbäddningar.
Standardinställningar för inbäddningar:
- Modell:
nomic-embed-text - Segmentstorlek: 1000 tecken
- Segmentöverlappning: 200 tecken
- Likhetströskel: 0,3
Källhänvisningar och fulldokumentläge
Hämtade utdrag har ursprungsinformation: källfilens namn, segmentindex, hämtningspoäng och, för format med segmentkarta, sidan, bilden, bladet eller Markdown-avsnittet. Chattkontexten märker varje utdrag med platsen och konversationens källpanel listar citerade platser under varje dokument.
Varje chatt kan även växla till fulldokumentläge från källpanelen. I stället för hämtade utdrag skickas allt extraherat innehåll från varje dokument i omfånget. Ett tokenskydd (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, standard 32000) skyddar modellens kontextfönster. Om bilagorna överskrider det återgår chatten till hämtning och källpanelen förklarar varför.
Ladda upp och sök
- Ladda upp en fil som stöds från dokumentkontrollerna.
- Vänta tills behandlingen är klar.
- Ställ en fråga i chatten.
- Libre WebUI hämtar relevanta segment för sessionen och inkluderar dem som kontext.
Exempelpromptar:
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-endpoints
| Endpoint | Syfte |
|---|---|
POST /api/documents/upload | Ladda upp ett dokument som stöds |
GET /api/documents | Lista uppladdade dokument |
GET /api/documents/session/:sessionId | Lista dokument i en chattsession |
POST /api/documents/search | Sök i dokument |
DELETE /api/documents/:documentId | Ta bort ett dokument |
GET /api/documents/embeddings/status | Visa inbäddningsstatus |
POST /api/documents/embeddings/regenerate | Skapa om inbäddningar |
Rekommenderade arbetssätt
- Begränsa uppladdningar till den aktuella uppgiften.
- Föredra textbaserade PDF-filer; skannade PDF-filer fungerar genom bildförståelsemodellen men kostar ett modellanrop per sida.
- Skapa om inbäddningar efter byte av inbäddningsmodell.
- Sänk likhetströskeln om semantisk sökning missar användbar kontext.
- Höj tröskeln om resultaten är brusiga.