Dokumentchat
Dokumentchat lader Libre WebUI søge i uploadede dokumenter og føje relevante uddrag til chatkonteksten.
Understøttede filer
Aktuel uploadunderstøttelse:
- PDF (med oprindelse pr. side)
- Almindelig tekst og logfiler
- Markdown (
.md,.markdown,.mdx, med oprindelse pr. afsnit) - HTML
- Word-dokumenter (
.docx) - Præsentationer (
.pptx, med oprindelse pr. slide) - Regneark (
.xlsx, med oprindelse pr. ark) og CSV/TSV - Kildekode (TypeScript, Python, Go, Rust, SQL, YAML og andre almindelige sprog)
- Billeder (
.png,.jpg,.webp,.gif) — teksten læses af den konfigurerede synsmodel (Indstillinger → Standardindstillinger → Synsmodel) - Lyd (
.wav,.webm) — transskriberes gennem din tale-til-tekst-udbyder bag samme STT-adgangskontrol som stemmeinput - Maksimal filstørrelse: 10 MB
Office-formater pakkes ud med en afgrænset parser i repositoryt; intet tredjepartsdokumentbibliotek kører i serverprocessen. Identiske bytes, der uploades igen i samme omfang, deduplikeres i stedet for at blive indlæst to gange.
Billed- og lydudtræk dirigeres til udbydere, du allerede har konfigureret. Ingen lokal OCR- eller talemotor medfølger, og intet forlader instansen ud over kaldet til den valgte model. En PDF uden tekstlag, altså en scanning, håndteres på samme måde: indlejrede JPEG-sidebilleder gendannes og læses gennem synsmodellen med oprindelse pr. side. Scanninger i andre kodninger (CCITT fax, JBIG2) giver fortsat ingen tekst. Hvis ingen synsmodel eller STT-udbyder er konfigureret, markeres uploaden som mislykket med årsagen i Indstillinger → Dokumenter.
Filer behandles af backend og gemmes sammen med de øvrige programdata.
Søgetilstande
Libre WebUI understøtter to hentetilstande:
| Tilstand | Hvornår den bruges | Bemærkninger |
|---|---|---|
| Nøgleordssøgning | Altid tilgængelig | BM25-rangering; ingen indlejringsmodel kræves |
| Hybridsøgning | Indlejringer aktiveret | Sammenfletter vektorrangering med BM25 gennem reciprocal-rank fusion |
Med indlejringer aktiveret kører hver forespørgsel begge rangeringer og sammenfletter dem. Et nøjagtigt ordmatch kan rangere højere end et semantisk lignende, men vagere segment, og segmenter med indlejringer under oprettelse kan stadig findes leksikalt. Hvis indlejringer fejler eller deaktiveres, falder dokumentsøgning tilbage til ren nøgleordsmatchning.
Leksikal pointgivning kører i processen over segmenter, du har adgang til. Libre vedligeholder bevidst intet fuldtekstindeks på disk, fordi segmenttekst gemmes krypteret, og et tokenindeks ville gemme klartekst ved siden af chifferteksten. Et segment kvalificerer kun, hvis det fuldt indeholder mindst ét ord fra forespørgslen, så en sammensat identifikator som ALPHA_BETA_GAMMA viser aldrig tekst, der kun deler et fragment.
Videnssamlinger, der deles med dig, deltager automatisk i begge rangeringer. Adgangskontrollen håndhæves i vektorforespørgslen; tilladelser publiceres til indeksets ACL, så en tilbagekaldt deling skjuler dokumenterne ved næste søgning uden nye indlejringer.
Aktivér semantisk søgning
Installér en indlejringsmodel:
ollama pull nomic-embed-text
Åbn derefter Indstillinger, og aktivér indlejringer. Du kan bruge lokale Ollama-indlejringsmodeller eller udbyderplugins, som understøtter indlejringer.
Standardindstillinger for indlejringer:
- Model:
nomic-embed-text - Segmentstørrelse: 1000 tegn
- Segmentoverlap: 200 tegn
- Lighedstærskel: 0,3
Kildehenvisninger og fulddokumenttilstand
Hentede uddrag har oprindelsesoplysninger: kildefilnavn, segmentindeks, hentepoint og, for formater med segmentkort, side, slide, ark eller Markdown-afsnit. Chatkonteksten mærker hvert uddrag med placeringen, og samtalens kildepanel viser de citerede placeringer under hvert dokument.
Hver chat kan også skifte til fulddokumenttilstand fra kildepanelet. I stedet for hentede uddrag sendes hele det udtrukne indhold fra alle dokumenter i omfanget. En tokenbeskyttelse (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, standard 32000) beskytter modellens kontekstvindue. Hvis bilagene overskrider den, falder chatten tilbage til hentning, og kildepanelet forklarer hvorfor.
Upload og søg
- Upload en understøttet fil fra dokumentkontrollerne.
- Vent, til behandlingen er færdig.
- Stil et spørgsmål i chatten.
- Libre WebUI henter relevante segmenter for sessionen og medtager dem som kontekst.
Eksempelprompts:
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 | Formål |
|---|---|
POST /api/documents/upload | Upload et understøttet dokument |
GET /api/documents | Vis uploadede dokumenter |
GET /api/documents/session/:sessionId | Vis dokumenter i en chatsession |
POST /api/documents/search | Søg i dokumenter |
DELETE /api/documents/:documentId | Slet et dokument |
GET /api/documents/embeddings/status | Vis indlejringsstatus |
POST /api/documents/embeddings/regenerate | Gendan indlejringer |
Anbefalede fremgangsmåder
- Begræns uploads til den aktuelle opgave.
- Foretræk tekstbaserede PDF-filer; scannede PDF-filer virker gennem synsmodellen, men koster ét modelkald pr. side.
- Gendan indlejringer efter ændring af indlejringsmodellen.
- Sænk lighedstærsklen, hvis semantisk søgning overser nyttig kontekst.
- Hæv tærsklen, hvis resultaterne er støjende.