LançamentoCódigo / SDK · Pronto p/ usoHabr AI→ original

AnythingLLM monta um assistente RAG privado sobre seus documentos em uma noite

O AnythingLLM é um aplicativo de código aberto que divide seus PDFs e DOCX em trechos, guarda tudo em um banco vetorial e entrega ao modelo apenas os fragmentos relevantes. Funciona no desktop ou no Docker e se conecta ao Ollama, ao Claude ou a qualquer gateway compatível com OpenAI. Uma noite basta para montar um assistente privado. Mas o RAG de fábrica é medíocre, e em 2026 foram encontradas vulnerabilidades graves.

Processado por IA de Habr AI; editado por Hamidun News
AnythingLLM monta um assistente RAG privado sobre seus documentos em uma noite
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1O modo Embed, ao contrário de anexar o arquivo, não entope a janela de contexto
CVE-2026-48116 permite RCE no Dockeratualize para a 1.13.0 ou superior
Dado-chave #3Max tokens vem em 1024 por padrão, e respostas longas serão cortadas em silêncio

Situação conhecida: no disco há uma centena de PDFs com contratos, anotações e documentação interna. Você envia um arquivo a um chatbot e ele dá conta. Envia vinte, e o contexto estoura e parte dos dados se perde. Some a assinatura, a VPN e a má vontade de entregar seus documentos à nuvem de outra pessoa. O AnythingLLM foi feito exatamente para essa tarefa.

O que é e como funciona

O AnythingLLM é um aplicativo full-stack de código aberto. Ele pega seus arquivos, divide em chunks, vetoriza, guarda em um banco de dados e entrega ao modelo apenas os trechos relevantes. Não faltam formatos: PDF, DOCX, TXT, páginas da web e áudio via Whisper.

A principal armadilha para iniciantes é que existem duas formas de adicionar um documento. Se você «anexa» o arquivo ao chat, o texto completo vai para a janela de contexto. É rápido, mas com um par de arquivos grandes a janela acaba. O modo Embed funciona como um RAG de verdade: apenas os fragmentos próximos da pergunta chegam ao prompt.

Os documentos vivem em um workspace. São espaços isolados para projetos, cada um com sua própria memória, seus arquivos e seu modelo. Um workspace pode rodar com um Ollama local, outro pode chamar o Claude pela API. A versão 1.13.0 trouxe o Model Router: ele envia as solicitações simples a um modelo barato e as complexas a um modelo de ponta. As regras são definidas por você, por exemplo por palavras-chave ou pelo tamanho da solicitação. Ali também surgiram os Scheduled Jobs, ou seja, agentes agendados.

O banco vetorial padrão é o LanceDB, integrado. Se necessário, é possível conectar PGVector, Chroma, Milvus, Pinecone, Qdrant e outros.

Desktop ou Docker

A versão desktop se instala com um clique no Mac, Windows e Linux. Tudo roda na sua máquina, e o modelo integrado oferece três variantes GGUF de acordo com o seu hardware. Serve para descobrir em dez minutos se você precisa da ferramenta. Mas é um modo para um único usuário, e com uma base grande de documentos o motor integrado começa a sufocar.

O Docker é para o servidor: modo multiusuário, convites, controle de acesso aos workspaces, widgets de chat para sites e API completa. O backup se resume a copiar um único diretório de armazenamento. Dois tropeços comuns:

  • o contêiner roda com um usuário de UID/GID 1000, e se a pasta no host pertence ao root, o SQLite não consegue criar o banco e o contêiner entra em reinício eterno. Resolve-se com chown -R 1000:1000 no diretório de armazenamento;
  • a flag --cap-add SYS_ADMIN parece suspeita, mas sem ela o navegador headless integrado, usado para páginas da web, não inicia.

Um modelo externo é conectado pelo provedor Generic OpenAI: basta informar a Base URL, a chave e o ID exato do modelo. É assim que se conectam gateways russos como o Bothub, além de LM Studio, Ollama em modo de compatibilidade, vLLM e OpenRouter. O esquema é o mesmo, muda só o endereço. Vale preencher de imediato dois campos: Token context window, com a janela real do modelo, e Max tokens. O padrão é 1024, e respostas longas serão cortadas sem aviso.

Onde dói

Primeiro, a qualidade do RAG. De fábrica ele funciona, mas só mais ou menos. O resultado depende do tamanho dos chunks, do modelo de embeddings e do limiar de similaridade, e os padrões são um compromisso, não um ajuste para a sua tarefa. Sintoma típico: o modelo responde com base em um parágrafo do meio do PDF e ignora outros três que dizem o mesmo com outras palavras. A primeira noite vai embora nessa investigação.

Segundo, a estabilidade dos agentes. Em 2026 houve vazamentos de memória: cada consulta RAG em uma sessão de agente acrescentava de 100 a 650 MB que não eram liberados. Para experimentos caseiros é tolerável, para um servidor com uma dezena de usuários não.

Terceiro, a segurança. A CVE-2026-48116 permitia executar um comando arbitrário dentro do contêiner por meio de injeção de argumentos no ripgrep. O plugin de arquivos vem ativado por padrão na imagem oficial, então bastava enviar uma mensagem ao agente. A CVE-2026-45403 permitia path traversal por links simbólicos. Ambas foram corrigidas na 1.13.0, e a versão atual no momento da redação deste artigo é a 1.19.0. Além disso, o desktop não tem autenticação, e a versão Docker não pede senha até que você mesmo a ative. Uma porta aberta sem senha não é privacidade, é loteria.

Não recomendo a versão hosted na nuvem, de 50 dólares por mês, para trabalho sério com documentos: ela não tem LLM integrado, o embedder roda em CPU com limites rígidos, e os agentes personalizados e o MCP estão desativados.

Conclusão prática

Se você tem um corpus de textos e não quer entregá-lo a nuvens públicas, o AnythingLLM oferece uma base funcional em uma noite. Comece pelo desktop, passe para o Docker para a equipe, ative a senha logo de início, atualize para a versão mais recente e reserve tempo para ajustar o chunking. Para produção com dados críticos, por ora é melhor manter o assistente sob supervisão, como um estagiário com acesso à produção.

História

Perguntas frequentes sobre a notícia

O que é e como funciona?

O AnythingLLM é um aplicativo full-stack de código aberto. Ele pega seus arquivos, divide em chunks, vetoriza, guarda em um banco de dados e entrega ao modelo apenas os trechos relevantes. Não faltam formatos: PDF, DOCX, TXT, páginas da web e áudio via Whisper. A principal armadilha para iniciantes é que existem duas formas de adicionar um documento. Se você «anexa» o arquivo ao chat, o texto completo vai para a janela de contexto. É rápido, mas com um par de arquivos grandes a janela acaba.

O que se sabe sobre Desktop ou Docker?

A versão desktop se instala com um clique no Mac, Windows e Linux. Tudo roda na sua máquina, e o modelo integrado oferece três variantes GGUF de acordo com o seu hardware. Serve para descobrir em dez minutos se você precisa da ferramenta. Mas é um modo para um único usuário, e com uma base grande de documentos o motor integrado começa a sufocar. O Docker é para o servidor: modo multiusuário, convites, controle de acesso aos workspaces, widgets de chat para sites e API completa.

Onde dói?

Primeiro, a qualidade do RAG. De fábrica ele funciona, mas só mais ou menos. O resultado depende do tamanho dos chunks, do modelo de embeddings e do limiar de similaridade, e os padrões são um compromisso, não um ajuste para a sua tarefa. Sintoma típico: o modelo responde com base em um parágrafo do meio do PDF e ignora outros três que dizem o mesmo com outras palavras. A primeira noite vai embora nessa investigação. Segundo, a estabilidade dos agentes.

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…