Chat con documenti
La Chat con documenti consente a Libre WebUI di cercare nei documenti caricati e inserire estratti pertinenti nel contesto della chat.
File supportati
- PDF (con provenienza per pagina)
- Testo semplice e log
- Markdown (
.md,.markdown,.mdx, con provenienza per sezione) - HTML
- Word (
.docx) - Presentazioni (
.pptx, per diapositiva) - Fogli di calcolo (
.xlsx, per foglio) e CSV/TSV - Codice sorgente (TypeScript, Python, Go, Rust, SQL, YAML e altri linguaggi comuni)
- Immagini (
.png,.jpg,.webp,.gif) — il modello di visione configurato legge il testo (Impostazioni → Predefiniti → Modello di visione) - Audio (
.wav,.webm) — trascritto dal provider speech-to-text, con lo stesso controllo STT dell'input vocale - Dimensione massima: 10 MB
I formati Office vengono estratti da un parser limitato incluso nel repository; nel processo server non gira una libreria documentale di terze parti. Byte identici nello stesso ambito vengono deduplicati.
L'estrazione di immagini e audio usa i provider già configurati. Non sono inclusi OCR o motori vocali locali e nulla lascia l'istanza tranne la chiamata al modello scelto. Un PDF scansionato recupera le immagini JPEG delle pagine e le legge tramite il modello di visione, mantenendo la provenienza. Scansioni CCITT fax o JBIG2 non producono testo. Senza modello di visione o provider STT, il caricamento viene indicato come non riuscito con il motivo in Impostazioni → Documenti.
I file vengono elaborati dal backend e archiviati con gli altri dati.
Modalità di ricerca
| Modalità | Quando viene usata | Note |
|---|---|---|
| Ricerca per parole chiave | Sempre disponibile | Classifica BM25, nessun modello di embedding necessario |
| Ricerca ibrida | Embedding abilitati | Combina ranking vettoriale e BM25 con reciprocal-rank fusion |
Con gli embedding attivi, ogni query esegue entrambe le classifiche e le unisce: una corrispondenza esatta può superare un frammento semanticamente simile ma vago, e i frammenti ancora in elaborazione restano accessibili dal lato lessicale. Se gli embedding falliscono o sono disattivati, la ricerca usa solo parole chiave.
Il punteggio lessicale viene calcolato in memoria sui frammenti accessibili. Libre non mantiene un indice full-text su disco, perché il testo dei frammenti è cifrato e un indice conserverebbe testo in chiaro accanto al cifrato. Un frammento entra nella classifica solo se contiene per intero almeno una parola della query; così ALPHA_BETA_GAMMA non restituisce testo che condivide soltanto una parte.
Le raccolte di conoscenza condivise con te partecipano automaticamente. Il controllo di accesso viene applicato nella query vettoriale: le autorizzazioni sono pubblicate nell'ACL dell'indice, quindi revocarle nasconde i documenti già dalla ricerca successiva senza rigenerare gli embedding.
Abilitare la ricerca semantica
ollama pull nomic-embed-text
Poi abilita gli embedding nelle Impostazioni. Puoi usare modelli Ollama locali o plugin compatibili.
Valori predefiniti:
- Modello:
nomic-embed-text - Dimensione frammento: 1000 caratteri
- Sovrapposizione: 200 caratteri
- Soglia di similarità: 0.3
Citazioni e modalità documento completo
Gli estratti includono nome del file, indice del frammento, punteggio e, quando disponibile, pagina, diapositiva, foglio o sezione Markdown. Il contesto etichetta ogni estratto e il pannello Fonti elenca le posizioni citate.
Ogni chat può passare alla modalità documento completo. Invece degli estratti, viene inviato tutto il contenuto estratto dei documenti nell'ambito. Una protezione (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, predefinito 32000) tutela la finestra del modello; se superata, la chat torna al recupero e ne spiega il motivo.
Caricare e cercare
- Carica un file supportato.
- Attendi l'elaborazione.
- Fai una domanda.
- Libre WebUI recupera i frammenti pertinenti e li include nel contesto.
Esempi:
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.
Endpoint API
| Endpoint | Scopo |
|---|---|
POST /api/documents/upload | Caricare un documento |
GET /api/documents | Elencare i documenti |
GET /api/documents/session/:sessionId | Elencare documenti della sessione |
POST /api/documents/search | Cercare |
DELETE /api/documents/:documentId | Eliminare |
GET /api/documents/embeddings/status | Vedere lo stato degli embedding |
POST /api/documents/embeddings/regenerate | Rigenerare gli embedding |
Buone pratiche
- Mantieni i caricamenti pertinenti all'attività.
- Preferisci PDF con testo; le scansioni richiedono una chiamata al modello per pagina.
- Rigenera gli embedding dopo aver cambiato modello.
- Abbassa la soglia se mancano contenuti utili.
- Alzala se i risultati sono rumorosi.