Chat com documentos
O recurso permite pesquisar documentos enviados e passar trechos relevantes ao contexto do chat.
Arquivos compatíveis
Envios atuais:
- PDF (com procedência por página)
- Texto simples e logs
- Markdown (
.md,.markdown,.mdx, com procedência por seção) - HTML
- Word (
.docx) - Apresentações (
.pptx, por slide) - Planilhas (
.xlsx, por planilha) e CSV/TSV - Código-fonte (TypeScript, Python, Go, Rust, SQL, YAML e outras linguagens comuns)
- Imagens (
.png,.jpg,.webp,.gif) — o modelo de visão configurado lê o texto (Configurações → Padrões → Modelo de visão) - Áudio (
.wav,.webm) — transcrito pelo provedor STT sob o mesmo controle da entrada de voz - Tamanho máximo: 10 MB
Formatos Office são descompactados por um analisador limitado do próprio repositório; nenhuma biblioteca de documentos de terceiros roda no servidor. Bytes idênticos no mesmo escopo são deduplicados.
Extração de imagem e áudio usa provedores já configurados. Não há OCR ou mecanismo de voz local incluído, e nada sai da instância além da chamada ao modelo escolhido. Um PDF digitalizado recupera suas imagens JPEG e as lê pelo modelo de visão com procedência por página. Digitalizações CCITT fax ou JBIG2 ainda não produzem texto. Sem modelo de visão ou STT, o envio é marcado como falho e o motivo aparece em Configurações → Documentos.
Os arquivos são processados no backend e armazenados com os demais dados.
Modos de busca
| Modo | Quando usado | Observações |
|---|---|---|
| Busca por palavra-chave | Sempre disponível | Classificação BM25, sem exigir embedding |
| Busca híbrida | Embeddings ativados | Combina classificação vetorial e BM25 por reciprocal-rank fusion |
Com embeddings, cada consulta executa e mescla ambas as classificações: uma correspondência exata pode superar um trecho semanticamente semelhante, mas vago, e trechos ainda em processamento continuam acessíveis pelo lado lexical. Se embeddings falharem ou estiverem desativados, a busca usa somente palavras-chave.
A pontuação lexical ocorre em memória sobre os trechos acessíveis. O Libre não mantém um índice de texto completo no disco, pois o texto está criptografado e um índice persistiria texto simples ao lado do cifrado. Um trecho só entra se contiver integralmente pelo menos uma palavra da consulta; assim, ALPHA_BETA_GAMMA não retorna texto que compartilha apenas um fragmento.
Coleções compartilhadas com você participam automaticamente. O controle é aplicado dentro da consulta vetorial: permissões são publicadas na ACL, e revogar oculta os documentos já na busca seguinte sem reprocessar embeddings.
Ativar busca semântica
Instale um modelo:
ollama pull nomic-embed-text
Ative embeddings nas Configurações. É possível usar modelos locais Ollama ou plugins compatíveis.
Padrões:
- Modelo:
nomic-embed-text - Tamanho do trecho: 1000 caracteres
- Sobreposição: 200 caracteres
- Limite de similaridade: 0.3
Citações e modo de documento completo
Trechos recuperados carregam nome do arquivo, índice, pontuação e, quando há mapa, página, slide, planilha ou seção Markdown. O contexto rotula cada trecho, e o painel Fontes lista os locais citados.
Cada chat pode alternar para modo de documento completo. Em vez de trechos, todo o conteúdo extraído dos documentos no escopo é enviado. Uma proteção de tokens (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, padrão 32000) protege a janela; se excedida, o chat volta à busca e explica o motivo.
Enviar e pesquisar
- Envie um arquivo compatível.
- Aguarde o processamento.
- Faça uma pergunta.
- O Libre WebUI recupera trechos relevantes e os inclui no contexto.
Exemplos:
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.
Endpoints da API
| Endpoint | Finalidade |
|---|---|
POST /api/documents/upload | Enviar documento |
GET /api/documents | Listar documentos |
GET /api/documents/session/:sessionId | Listar documentos de uma sessão |
POST /api/documents/search | Pesquisar |
DELETE /api/documents/:documentId | Excluir |
GET /api/documents/embeddings/status | Ver estado dos embeddings |
POST /api/documents/embeddings/regenerate | Regenerar embeddings |
Boas práticas
- Mantenha os envios focados na tarefa.
- Prefira PDFs com texto; digitalizações usam uma chamada do modelo por página.
- Regenere embeddings após trocar o modelo.
- Reduza o limite de similaridade se perder contexto útil.
- Aumente se os resultados tiverem ruído.