Skip to main content
PromptQuorumPromptQuorum
Início/Power Local LLM/Crie um RAG local nos seus PDFs em 30 minutos (Ollama + AnythingLLM)
RAG & Document Chat

Crie um RAG local nos seus PDFs em 30 minutos (Ollama + AnythingLLM)

·12 min de leitura·Por Hans Kuepper · Fundador do PromptQuorum, ferramenta de despacho multi-modelo de IA · PromptQuorum

Instale o Ollama, baixe o Llama 3.3 8B, instale o AnythingLLM, conecte-o ao Ollama, troque o modelo de embedding para nomic-embed-text, arraste os seus PDFs para um workspace e faça perguntas. Em um laptop com 16 GB de RAM o processo completo leva 30 minutos, a maior parte dos quais corresponde ao download do modelo.

Um guia completo do caminho mais rápido para um sistema RAG pessoal funcional em um laptop com 16 GB de RAM. Stack: Ollama, Llama 3.3 8B, AnythingLLM, nomic-embed-text. Tempo total: 30 minutos de uma máquina vazia até conversar com os seus próprios PDFs.

Principais conclusões

  • Stack: o Ollama executa o LLM, o AnythingLLM gerencia a interface + o armazenamento vetorial, o Llama 3.3 8B Q4_K_M responde e o nomic-embed-text-v1.5 recupera.
  • Tempo: 30 minutos no total. O passo mais longo é o download do modelo (~8 min a 50 Mbps).
  • Hardware: 16 GB de RAM é o mínimo prático. Com 8 GB só funciona o Phi-4 Mini e conjuntos de documentos pequenos; consulte a seção de modelos alternativos.
  • Privacidade: Uma vez instalado, nada sai da sua máquina. PDFs, embeddings, prompts e respostas permanecem locais.
  • Sem código: Zero Python, zero terminal além dos dois comandos do Ollama. O AnythingLLM é um aplicativo de desktop com importação de documentos por arrastar e soltar.
  • O embedder padrão não é o adequado: o AnythingLLM inclui um embedder integrado muito pequeno. Troque-o para nomic-embed-text-v1.5 no Passo 4; a qualidade da recuperação melhora de forma notável.
  • O tamanho de chunk padrão também não é adequado para PDFs: Chunks de 1000 tokens com uma sobreposição de 200 tokens é um ponto de partida melhor que o valor padrão 512/0. É ajustado no Passo 7.

O que você vai construir

Um sistema RAG de desktop autocontido: uma janela de chat onde você arrasta PDFs e faz perguntas sobre eles. Quatro peças de código aberto, todas gratuitas e todas rodando no seu laptop:

📍 Em uma frase

Um sistema RAG local são quatro peças — um runtime (Ollama), um modelo de resposta (Llama 3.3 8B), uma interface mais armazenamento vetorial (AnythingLLM) e um modelo de embedding (nomic-embed-text-v1.5) — conectadas em uma mesma máquina sem chamadas à nuvem.

💬 Em termos simples

Arraste um PDF, faça uma pergunta, obtenha uma resposta fundamentada com citações, totalmente offline. As quatro peças dividem o trabalho: o Ollama executa os modelos, o Llama 3.3 8B redige a resposta, o AnythingLLM gerencia os chunks e vetores, e o nomic-embed-text-v1.5 converte o texto nos vetores que tornam a recuperação possível. Instalação total: ~30 minutos; custo total: $0.

  • Ollama — runtime local de LLM. Gerencia os arquivos do modelo e expõe uma API compatível com OpenAI em localhost:11434. Fornece o modelo de resposta.
  • Llama 3.3 8B Instruct (Q4_K_M) — modelo de chat de 8B parâmetros da Meta, quantizado para caber em ~5 GB de RAM. Boa qualidade de resposta em perguntas baseadas em documentos em 2026.
  • AnythingLLM Desktop — interface + armazenamento vetorial + orquestração RAG. Inclui o LanceDB embutido, faz parsing de PDFs/DOCX/TXT/MD de forma nativa e se comunica com o Ollama como provedor de LLM.
  • nomic-embed-text-v1.5 — modelo de embedding. Vetores de 768 dimensões, roda através do Ollama a ~600 chunks/s em uma CPU moderna. Substitui o embedder padrão do AnythingLLM, que é insuficiente.
Stack RAG local: Ollama (runtime, localhost:11434), Llama 3.3 8B Q4_K_M (~4,9 GB, modelo de resposta), AnythingLLM Desktop (interface + armazenamento vetorial LanceDB) e nomic-embed-text-v1.5 (~280 MB embedder). Fluxo de dados: PDFs → AnythingLLM → nomic-embed-text → LanceDB → Llama 3.3 8B → Resposta.
Stack RAG local: Ollama (runtime, localhost:11434), Llama 3.3 8B Q4_K_M (~4,9 GB, modelo de resposta), AnythingLLM Desktop (interface + armazenamento vetorial LanceDB) e nomic-embed-text-v1.5 (~280 MB embedder). Fluxo de dados: PDFs → AnythingLLM → nomic-embed-text → LanceDB → Llama 3.3 8B → Resposta.

📌Note: O AnythingLLM também tem um LLM padrão integrado e um embedder padrão integrado. Ambos são deliberadamente pequenos para que o aplicativo inicie rápido em hardware de entrada. Nós os substituímos nos passos 4 e 6 porque a qualidade de recuperação é tudo em um sistema RAG.

O que você precisa antes de começar

Um laptop com 16 GB de RAM, 20 GB de disco livre, conexão com a internet e 30 minutos. O sistema operacional pode ser macOS 12+, Windows 10/11 ou qualquer desktop Linux moderno.

  • RAM: 16 GB é o mínimo prático para Llama 3.3 8B Q4 + AnythingLLM + os seus aplicativos de desktop habituais. Com 8 GB funciona o Phi-4 Mini Q4 em vez disso; consulte as alternativas do Passo 2.
  • Disco: 20 GB livres. O Llama 3.3 8B Q4_K_M ocupa ~5 GB, o modelo de embedding ~280 MB, o AnythingLLM ~600 MB, e você precisa de espaço para os embeddings (~10–30 MB por 100 páginas de PDF).
  • Rede: ~50 Mbps no mínimo para o download do modelo. Com 25 Mbps o mesmo passo leva ~16 minutos; o resto do tutorial não é afetado.
  • Permissões: o AnythingLLM não precisa de admin/root. O Ollama se instala em /usr/local/bin no macOS/Linux (pede senha uma vez) ou %LOCALAPPDATA% no Windows (sem admin).
  • Documentos prontos: 5–20 PDFs para começar. Quantidades maiores também funcionam, mas um conjunto pequeno permite testar a qualidade de recuperação mais rápido.
Requisitos do sistema: 16 GB de RAM (mínimo para Llama 3.3 8B Q4 + AnythingLLM), 20 GB de disco livre, 50 Mbps para o download do modelo. macOS 12+, Windows 10/11 ou Linux. O AnythingLLM não requer permissões de administrador.
Requisitos do sistema: 16 GB de RAM (mínimo para Llama 3.3 8B Q4 + AnythingLLM), 20 GB de disco livre, 50 Mbps para o download do modelo. macOS 12+, Windows 10/11 ou Linux. O AnythingLLM não requer permissões de administrador.

Passo 1: Instalar o Ollama (3 min)

**Baixe o instalador do Ollama para o seu sistema operacional em ollama.com/download e execute-o. O instalador adiciona a CLI ollama ao PATH e inicia um serviço em segundo plano.** Não há opções de configuração para escolher.

  • macOS: baixe o .dmg, arraste o Ollama para Aplicativos, abra-o uma vez para instalar o helper da CLI. O ícone de lhama aparece na barra de menus quando o serviço está em execução.
  • Windows: baixe o .exe, execute-o e aceite os valores padrão. O Ollama roda como serviço em segundo plano após a instalação; nenhuma abertura adicional é necessária.
  • Linux: instalação em uma linha: curl -fsSL https://ollama.com/install.sh | sh. O script registra uma unidade systemd; inicie-a com sudo systemctl start ollama.
  • Verificar: abra um terminal e execute ollama --version. Você deve ver uma string de versão. Se o comando não for encontrado, reinicie o terminal para que ele carregue o PATH atualizado.
bash
ollama --version
# ollama version is 0.5.x  (any 0.5+ build works for this tutorial)

⚠️Warning: Se ollama --version funciona mas os passos seguintes falham com "conexão recusada em localhost:11434", o serviço em segundo plano não iniciou automaticamente. macOS: abra o aplicativo em Aplicativos. Linux: sudo systemctl start ollama. Windows: abra o ícone do Ollama na bandeja do sistema.

Passo 2: Baixar o Llama 3.3 8B (8 min)

**Execute ollama pull llama3.3:8b-instruct-q4_K_M em um terminal. Isso baixa o GGUF quantizado de 4,9 GB e o registra no Ollama.** A maior parte dos 30 minutos totais corresponde a esse único passo em uma conexão doméstica típica.

  • Tamanho do download: ~4,9 GB (quantização Q4_K_M). A 50 Mbps você esperará aproximadamente 8 minutos; a 100 Mbps aproximadamente 4 minutos; a 25 Mbps aproximadamente 16 minutos.
  • Ver o progresso: o Ollama imprime uma porcentagem e a velocidade. O download é retomado se for interrompido; execute o mesmo comando novamente.
  • Teste rápido do modelo: após concluir o download, execute ollama run llama3.3:8b-instruct-q4_K_M e pergunte "Quanto é 2+2?". Confirme que você obtém uma resposta razoável. Digite /bye para sair.
  • Alternativa com menos RAM: se você tem 8 GB de RAM em vez de 16 GB, execute ollama pull phi3:mini (Phi-4 Mini, ~2,4 GB em disco). Use esse nome de modelo no Passo 3. A qualidade é menor em documentos longos, mas o sistema funciona.
bash
# Recommended for 16 GB RAM
ollama pull llama3.3:8b-instruct-q4_K_M

# Alternative for 8 GB RAM
ollama pull phi3:mini

# Quick smoke test (type /bye to exit)
ollama run llama3.3:8b-instruct-q4_K_M
Opções de modelo por RAM: Llama 3.3 8B Q4_K_M (~4,9 GB, 16 GB de RAM, ~8 min a 50 Mbps) é o recomendado; Phi-4 Mini Q4 (~2,4 GB, 8 GB de RAM, ~4 min) para máquinas com pouca memória; Mistral Small Q4_K_M (~4,1 GB, 16 GB de RAM, ~7 min) como alternativa.
Opções de modelo por RAM: Llama 3.3 8B Q4_K_M (~4,9 GB, 16 GB de RAM, ~8 min a 50 Mbps) é o recomendado; Phi-4 Mini Q4 (~2,4 GB, 8 GB de RAM, ~4 min) para máquinas com pouca memória; Mistral Small Q4_K_M (~4,1 GB, 16 GB de RAM, ~7 min) como alternativa.

💡Tip: Já tem outros modelos do Ollama? ollama list mostra todos eles. Você pode manter vários modelos instalados e alternar entre eles na configuração do workspace do AnythingLLM.

Passo 3: Instalar o AnythingLLM Desktop (4 min)

Baixe o AnythingLLM Desktop em useanything.com (ou anythingllm.com) e execute o instalador. Abra o aplicativo e pule o aviso de "criar conta na nuvem"; o modo somente-local é oferecido na tela seguinte. A instalação é não assistida.

  • macOS: baixe o .dmg, arraste o AnythingLLM para Aplicativos e abra-o. O macOS pode pedir que você confirme que o aplicativo é de um desenvolvedor reconhecido; clique em "Abrir" em Ajustes do Sistema → Privacidade se solicitado.
  • Windows: baixe o instalador .exe. O Windows SmartScreen pode indicar que não é um download habitual; clique em "Mais informações" → "Executar mesmo assim". O aplicativo se instala em %LOCALAPPDATA%\anythingllm-desktop (sem admin).
  • Linux: baixe o .AppImage, marque-o como executável (chmod +x AnythingLLMDesktop.AppImage) e dê dois cliques para executá-lo.
  • Escolha na primeira execução: o AnythingLLM oferece um workspace na nuvem hospedado OU uma configuração somente-local. Escolha Configuração local. Esta é a opção que mantém todo o sistema offline.
  • Criação do workspace: quando solicitado, dê ao primeiro workspace um nome descritivo ("artigos-pesquisa", "contratos", "notas-pessoais"). Cada workspace tem a sua própria coleção de documentos e armazenamento de embeddings.
Instalação do AnythingLLM Desktop em 4 passos: Baixar em anythingllm.com (~600 MB), Instalar sem admin, Abrir e pular o aviso de nuvem, depois escolher "Local Setup" para manter todos os dados offline.
Instalação do AnythingLLM Desktop em 4 passos: Baixar em anythingllm.com (~600 MB), Instalar sem admin, Abrir e pular o aviso de nuvem, depois escolher "Local Setup" para manter todos os dados offline.

⚠️Warning: O LLM padrão do AnythingLLM é um modelo integrado muito pequeno destinado apenas à demo de boas-vindas. No passo seguinte vamos apontá-lo para o seu Ollama local. Não use o padrão para queries reais; as respostas serão fracas demais para serem úteis.

Passo 4: Conectar o AnythingLLM ao Ollama e trocar o embedder (3 min)

**Abra Configurações do AnythingLLM → Preferência de LLM. Escolha "Ollama" como provedor, defina a URL como http://127.0.0.1:11434 e selecione llama3.3:8b-instruct-q4_K_M no menu suspenso de modelos. Salve. Depois vá para Preferência de embedding e troque do padrão para nomic-embed-text através do Ollama.**

  • Painel de Preferência de LLM: Provedor = Ollama, Endpoint = http://127.0.0.1:11434, Modelo = llama3.3:8b-instruct-q4_K_M. Clique em "Salvar alterações". Uma marca de verificação verde confirma a conexão.
  • Painel de Preferência de embedding: o padrão é "AnythingLLM Native Embedder", um embedder integrado muito pequeno. Troque o Provedor para Ollama, depois execute ollama pull nomic-embed-text no seu terminal primeiro (~280 MB), atualize a lista de modelos no painel e selecione nomic-embed-text:latest. Salve.
  • Aviso de re-embedding: se você já adicionou documentos com o embedder anterior, o AnythingLLM pedirá que você os processe novamente. Em uma instalação nova não há documentos, então o aviso não aparece.
  • Banco de dados vetorial: deixe no valor padrão (LanceDB). É local, respaldado por arquivos e não precisa de configuração. Troque-o apenas se você precisar especificamente de PGVector ou Qdrant.
bash
# Run this in your terminal before opening the Embedding Preference panel
ollama pull nomic-embed-text
Passo 4 em dois painéis: Preferência de LLM (Provedor = Ollama, Endpoint = http://127.0.0.1:11434, Modelo = llama3.3:8b-instruct-q4_K_M), depois Preferência de Embedding (primeiro baixe nomic-embed-text, depois selecione nomic-embed-text:latest via Ollama).
Passo 4 em dois painéis: Preferência de LLM (Provedor = Ollama, Endpoint = http://127.0.0.1:11434, Modelo = llama3.3:8b-instruct-q4_K_M), depois Preferência de Embedding (primeiro baixe nomic-embed-text, depois selecione nomic-embed-text:latest via Ollama).

💡Tip: Por que nomic-embed-text-v1.5 especificamente? Em maio de 2026 ele ocupa o top 5 do ranking MTEB Retrieval para qualquer modelo de menos de 500 MB, roda a 400–800 chunks/s em uma CPU moderna e a mais de 2000 chunks/s em Apple Silicon, e tem licença Apache 2.0. É o primeiro upgrade padrão para quase todos os stacks RAG locais; consulte a comparação de modelos de embedding para conhecer as alternativas.

Passo 5: Subir os primeiros PDFs (5 min)

Abra o seu workspace, clique em "Subir documentos" e arraste de 5 a 20 PDFs. O AnythingLLM extrai o texto, divide-o em chunks (por padrão 512 tokens, 0 de sobreposição), processa cada chunk com o Ollama e armazena os vetores no LanceDB. Uma barra de progresso mostra as páginas analisadas e os chunks processados.

  • Formatos compatíveis: PDF (baseado em texto), DOCX, TXT, MD, EPUB, além de scraping de URLs. Os PDFs de imagem escaneada precisam de OCR primeiro; consulte a seção de solução de problemas.
  • Velocidade: 400–800 chunks/s em uma CPU moderna e mais de 2000 chunks/s em Apple Silicon assim que o Ollama está aquecido. Um conjunto de 20 PDFs com ~50 páginas cada (~3000 chunks no total) conclui o embedding em 5–8 segundos em uma CPU moderna e em 1–2 segundos em Apple Silicon, mais o tempo de análise. Conte com ~5 minutos no total para subir, analisar e processar 20 PDFs.
  • RAM durante o embedding: o Ollama carrega o modelo de embedding (~280 MB) na primeira solicitação e o mantém em cache. Os embeddings posteriores reutilizam o cache.
  • "Mover para o workspace": após o upload, o AnythingLLM coloca os documentos em um pool "em espera". Você deve clicar explicitamente em "Mover para o workspace" → "Salvar e processar" para que sejam consultáveis. Esse fluxo de dois passos é intencional: permite pré-visualizar antes de assumir o custo do embedding.
Do PDF subido à consulta em 5 passos: Subir PDFs (arrastar e soltar) → Extrair camada de texto → Dividir em chunks (1000 tokens / 200 de sobreposição) → Processar com nomic-embed-text via Ollama → Armazenar no LanceDB e fazer perguntas. Velocidade: 400–800 chunks/s em CPU, mais de 2000 em Apple Silicon.
Do PDF subido à consulta em 5 passos: Subir PDFs (arrastar e soltar) → Extrair camada de texto → Dividir em chunks (1000 tokens / 200 de sobreposição) → Processar com nomic-embed-text via Ollama → Armazenar no LanceDB e fazer perguntas. Velocidade: 400–800 chunks/s em CPU, mais de 2000 em Apple Silicon.

⚠️Warning: Os PDFs de digitalizações OCR antigas costumam conter texto corrompido ou camadas de texto vazias; o arquivo parece correto ao olho humano, mas o AnythingLLM extrai "[image]" ou strings vazias. Abra o PDF em um editor de texto (ou execute pdftotext file.pdf - do poppler-utils) para confirmar que a camada de texto existe antes de subi-lo.

Passo 6: Testar queries (5 min)

Escreva uma pergunta no chat do workspace. O AnythingLLM vetoriza a pergunta, recupera os N chunks principais do LanceDB, constrói um prompt com esses chunks como contexto, envia-o ao Ollama e mostra a resposta. A latência em um laptop com 16 GB de RAM é de aproximadamente 3–10 segundos por query.

  • Comece com uma query de recuperação de fatos: "O que significa [termo específico de um dos seus PDFs]?" Isso testa a fundamentação da recuperação. A resposta deve citar o PDF e reproduzir a phrasing exata.
  • Depois uma query de síntese: "Resuma o argumento principal de [autor/título do documento]." Isso testa o quão bem o modelo integra vários chunks.
  • Depois uma query de comparação (apenas se os seus PDFs contiverem conteúdo comparável): "Compare como [doc A] e [doc B] tratam [tema]." Isso testa a recuperação entre documentos.
  • Inspecione as citações: o AnythingLLM mostra os chunks fonte abaixo de cada resposta. Clique neles para verificar que o modelo está se baseando nas passagens corretas. Se as citações forem irrelevantes, a recuperação está quebrada; consulte o Passo 7.

Passo 7: Ajustar o tamanho dos chunks (2 min)

Abra Configurações do workspace → Banco de dados vetorial. Mude o tamanho de chunk de 512 para 1000 e a sobreposição de chunk de 0 para 200. Clique em Salvar e depois processe novamente os seus documentos (a interface pedirá). Esse é o principal parâmetro para melhorar a qualidade da recuperação no AnythingLLM.

  • Por que 1000/200 em vez de 512/0: os parágrafos e seções dos PDFs raramente cabem de forma limpa em 512 tokens. A sobreposição de 200 tokens significa que uma frase que cruza um limite de chunk aparece inteira em pelo menos um chunk vizinho, de modo que a recuperação a capta.
  • Custo do re-embedding: o conjunto de 20 PDFs / 3000 chunks é processado novamente em ~5 segundos. Conjuntos maiores levam proporcionalmente mais tempo. O armazenamento de chunks é sobrescrito, não acrescentado ao existente.
  • Recuperação Top-K: o Top-K padrão é 4 (os 4 chunks de melhor correspondência se tornam contexto). Suba para 6–8 se as suas respostas parecerem pouco fundamentadas; baixe para 2–3 se o modelo se distrair com chunks ruidosos.
  • Modelo de prompt: o AnythingLLM expõe o system prompt em Workspace → Configurações de chat → Prompt. O padrão está bem; ajuste-o apenas se você tiver uma falha específica a resolver.
Configuração de chunks padrão vs. recomendada: os valores padrão 512/0/Top-K 4 deixam fragmentos de frases nos limites. Os valores recomendados 1000 tokens / 200 de sobreposição / Top-K 4–6 capturam as frases nos limites dentro da janela de sobreposição. Processar novamente 20 PDFs leva ~5 segundos.
Configuração de chunks padrão vs. recomendada: os valores padrão 512/0/Top-K 4 deixam fragmentos de frases nos limites. Os valores recomendados 1000 tokens / 200 de sobreposição / Top-K 4–6 capturam as frases nos limites dentro da janela de sobreposição. Processar novamente 20 PDFs leva ~5 segundos.

💡Tip: O ajuste empírico supera a teoria: faça as mesmas 5 queries de teste antes e depois da mudança de tamanho de chunk e compare. Se a recuperação a 1000/200 for pior, você provavelmente tem documentos muito curtos (memorandos de uma página, docstrings de código): tente 256/64 em vez disso.

Como as respostas devem ser de verdade?

Um sistema RAG local corretamente ajustado responde as queries de recuperação de fatos com citações textuais da fonte, sintetiza quando solicitado e cita os chunks que utilizou. Três queries de exemplo em um workspace de artigos de pesquisa, com o que um sistema saudável retorna:

📍 Em uma frase

Uma resposta RAG local saudável cita o chunk fonte de forma literal para a recuperação de fatos, sintetiza entre chunks para perguntas de resumo e cita os IDs de chunk específicos que utilizou; as respostas genéricas sem citações sinalizam um problema de recuperação, não um problema do modelo.

💬 Em termos simples

Se a resposta diz "os pesquisadores costumam usar 100–500 participantes" em vez de "Smith et al. usaram 287 participantes (Métodos, p. 4)", a recuperação está quebrada e o modelo está improvisando com os seus dados de treinamento. Conserte a recuperação primeiro (tamanho de chunk, embedder, limiar de similaridade) antes de trocar o modelo de resposta.

Query typeExampleHealthy answer patternFailure pattern
Recuperação de fatosQue tamanho de amostra Smith et al. 2024 utilizaram?Citação direta da seção de métodos + referência ao chunkResposta genérica ("os pesquisadores costumam usar 100–500 participantes") sem citação
SínteseResuma a contribuição principal deste artigo.3–5 frases extraídas dos chunks do abstract e da conclusãoRepete o título ou cita uma única frase do abstract
Entre documentosEm que Smith e Jones divergem sobre a sobreposição de chunks?Citações de ambos os artigos com atribuição explícitaCita apenas um artigo ou inventa uma discordância que não está nos chunks
3 tipos de query RAG: Recuperação de fatos (citação direta + referência = saudável; resposta genérica = recuperação quebrada), Síntese (3–5 frases do abstract + conclusão = saudável), Entre documentos (citações de ambos os artigos = saudável; cita apenas um ou inventa = quebrado). Verde = saudável, vermelho = conserte primeiro a recuperação.
3 tipos de query RAG: Recuperação de fatos (citação direta + referência = saudável; resposta genérica = recuperação quebrada), Síntese (3–5 frases do abstract + conclusão = saudável), Entre documentos (citações de ambos os artigos = saudável; cita apenas um ou inventa = quebrado). Verde = saudável, vermelho = conserte primeiro a recuperação.

💡Tip: Use esses três padrões de query como o seu conjunto de teste após cada mudança na configuração de recuperação. Se a recuperação de fatos falha mas a síntese funciona, os seus chunks são grandes demais. Se a síntese falha mas a recuperação de fatos funciona, o seu top-k é baixo demais. O padrão do que falha diz qual parâmetro ajustar.

Quando algo falha: seis modos de falha comuns e soluções

A maioria das falhas se enquadra em uma destas seis categorias. Identifique o sintoma na linha correspondente e aplique a solução.

SymptomLikely causeFix
O AnythingLLM mostra "Não foi possível conectar ao Ollama"O serviço do Ollama não está em execução ou o endpoint está incorretoExecute ollama serve (ou reinicie o aplicativo/serviço). Confirme que o endpoint é http://127.0.0.1:11434, não localhost:11434 (no Windows o alias às vezes falha).
O download do modelo trava em 0% ou 99%Problema com o edge de CDN ou disco cheioCancele com Ctrl+C, execute df -h para confirmar o espaço em disco e execute o mesmo ollama pull novamente; o Ollama retoma a partir do último byte.
O passo de embedding parece travadoO Ollama está carregando o modelo de embedding pela primeira vezEspere 30–60 segundos. O carregamento do modelo pela primeira vez leva entre 10 e 40 segundos conforme a velocidade do disco. Os embeddings seguintes são rápidos.
A recuperação devolve chunks não relacionados com a queryChunking 512/0 padrão + embedder padrão fracoConfirme que o Passo 4 (nomic-embed-text) e o Passo 7 (chunking 1000/200) foram ambos aplicados. Processe novamente o workspace.
As respostas são curtas, genéricas ou se recusam a trabalhar com a fonteO LLM selecionado ainda é o minúsculo padrão ou o contexto é pequeno demaisConfirme que a Preferência de LLM mostra llama3.3:8b-instruct-q4_K_M. Suba o top-K de 4 para 6.
Os PDFs de imagem escaneada são subidos mas produzem chunks vaziosO PDF não tem camada de texto; é uma imagem raster puraAplique OCR ao PDF primeiro. macOS: ocrmypdf input.pdf output.pdf. Linux/Windows: instale Tesseract + ocrmypdf. Depois suba novamente o arquivo processado com OCR.
Seis modos de falha: conexão recusada (executar ollama serve), download travado (Ctrl+C → df -h → tentar novamente), embedding travado (esperar 30–60 s), chunks irrelevantes (aplicar Passos 4 + 7), respostas curtas/genéricas (configurar llama3.3:8b-instruct-q4_K_M, subir Top-K), chunks vazios de PDFs escaneados (executar ocrmypdf primeiro).
Seis modos de falha: conexão recusada (executar ollama serve), download travado (Ctrl+C → df -h → tentar novamente), embedding travado (esperar 30–60 s), chunks irrelevantes (aplicar Passos 4 + 7), respostas curtas/genéricas (configurar llama3.3:8b-instruct-q4_K_M, subir Top-K), chunks vazios de PDFs escaneados (executar ocrmypdf primeiro).

Contexto regional: privacidade de dados no Brasil (LGPD e ANPD)

Um sistema RAG local como este responde diretamente aos principais requisitos de privacidade e segurança do Brasil. Ao contrário das soluções RAG na nuvem que enviam dados a provedores externos, tudo permanece na sua máquina.

  • LGPD e a ANPD: No Brasil, a Lei Geral de Proteção de Dados (LGPD, Lei 13.709/2018) exige gerenciar com cuidado os operadores de dados, e a Autoridade Nacional de Proteção de Dados (ANPD) fiscaliza o cumprimento. Um sistema RAG local que nunca envia dados para fora da sua infraestrutura atende a esse requisito diretamente: sem transferência internacional de dados, sem operador externo, base legal simplificada.
  • Setores regulados no Brasil: Organizações de finanças, saúde, jurídico e setor público no Brasil se beneficiam do RAG local: zero dependência de API na nuvem, zero fluxo de dados transfronteiriço, conformidade imediata com a LGPD e com normas setoriais como as resoluções do Banco Central e do Conselho Federal de Medicina.
  • Cenário típico para empresas brasileiras: Arquive cinco anos de contratos de clientes, indexe-os com o AnythingLLM e faça buscas de diligência e consultas de dados de clientes totalmente em local. Custo de operação: praticamente zero. Instalação produtiva: 30 minutos no seu laptop ou servidor local.

FAQ

E se o Ollama não instalar?

No macOS, a falha mais comum é o Gatekeeper bloquear um helper sem assinatura; abra Ajustes do Sistema → Privacidade e Segurança e clique em "Abrir mesmo assim". No Windows, o Defender SmartScreen pode colocar o instalador em quarentena; clique com o botão direito → Propriedades → Desbloquear. No Linux, o script de instalação precisa de sudo para escrever a unidade systemd; se o sudo não estiver disponível, baixe o binário estático em github.com/ollama/ollama/releases e coloque-o manualmente no seu PATH.

Por que o passo de embedding é lento?

O primeiro embedding de uma sessão é lento porque o Ollama carrega o modelo de embedding de forma preguiçosa na RAM (entre 10 e 40 segundos conforme a velocidade do disco). Depois, o embedding roda a 400–800 chunks/s em uma CPU moderna e a mais de 2000 chunks/s em Apple Silicon. Se o desempenho sustentado for inferior a 100 chunks/s, o modelo provavelmente está usando memória virtual do disco; feche outros aplicativos para liberar RAM e tente novamente.

Quantos PDFs eu posso subir de uma vez?

O AnythingLLM aceita centenas de arquivos em um único arrastar e soltar. O limite prático é a RAM durante o passo de análise: ~1 GB no pico para 100 PDFs de tamanho médio (50 páginas cada). Uma vez processados, o armazenamento vetorial em disco é pequeno (~10–30 MB por 100 páginas de PDF). Para 1000+ PDFs, consulte o guia dedicado sobre conversar com 1000 PDFs em local.

Posso usar isso com PDFs protegidos por senha?

O AnythingLLM não consegue descriptografar diretamente PDFs protegidos por senha. Descriptografe-os primeiro com qpdf --password=SUASENHA --decrypt input.pdf output.pdf (o qpdf é gratuito, disponível nos três sistemas operacionais) e depois suba o arquivo desprotegido. Exclua a cópia desprotegida após o embedding se o seu modelo de ameaças exigir; os próprios embeddings não são legíveis por humanos.

O que eu faço se a recuperação devolve chunks incorretos?

Três parâmetros por ordem de impacto: troque do embedder padrão para nomic-embed-text (Passo 4), mude o chunking de 512/0 para 1000/200 e processe novamente (Passo 7), e suba o top-K de 4 para 6 nas Configurações do workspace. Se a recuperação ainda falhar depois dos três, os seus documentos podem precisar de pré-processamento: remova cabeçalhos e rodapés, normalize os espaços em branco ou divida os PDFs muito longos em arquivos por capítulo.

Eu deveria usar um modelo diferente do Llama 3.3 8B?

O Llama 3.3 8B Q4_K_M é a melhor relação qualidade-RAM em 2026 para sistemas com 16 GB. Com 8 GB de RAM use o Phi-4 Mini Q4_K_M (~2,4 GB). Com 24 GB ou mais, experimente o Qwen 3 14B Q4 para uma síntese notavelmente melhor em documentos longos. Para cargas de trabalho multilíngues, o Mistral Nemo 12B lida melhor com conteúdo que não está em inglês do que o Llama 3.3.

Como eu atualizo o modelo mais adiante?

Execute novamente ollama pull llama3.3:8b-instruct-q4_K_M para obter a versão mais recente e reinicie o AnythingLLM para que ele detecte de novo a versão do modelo. Para trocar para um modelo diferente por completo, execute ollama pull <novo-modelo> e depois mude o menu suspenso de Preferência de LLM nas Configurações do AnythingLLM. Não é necessário processar novamente os embeddings porque eles dependem apenas do embedder, não do modelo de resposta.

Posso mover isso para outra máquina?

Sim. Os modelos do Ollama ficam em ~/.ollama/models (macOS/Linux) ou %USERPROFILE%\.ollama\models (Windows); copie a pasta. Os workspaces do AnythingLLM ficam em ~/.anythingllm/storage; copie-a também. Na nova máquina, instale o Ollama e o AnythingLLM Desktop e coloque as pastas copiadas no lugar. Os workspaces e embeddings são restaurados de forma idêntica.

Funciona se os meus PDFs são imagens escaneadas?

Não diretamente: o AnythingLLM extrai texto, mas não consegue fazer OCR de imagens. Pré-processe os PDFs escaneados com ocrmypdf input.pdf output.pdf (multiplataforma, licença MIT, usa Tesseract). Em Apple Silicon, ocrmypdf -l eng+por+spa suporta mais de 70 idiomas. Após o OCR, o PDF de saída tem tanto as imagens originais quanto uma camada de texto pesquisável, e o AnythingLLM extrai o texto corretamente.

Como eu faço backup do meu banco de dados de documentos?

O AnythingLLM armazena tudo em ~/.anythingllm/storage (macOS/Linux) ou %LOCALAPPDATA%\anythingllm-desktop\storage (Windows). Comprima essa pasta com tar/zip e copie-a para um dispositivo de backup. A pasta inclui documentos originais, chunks analisados, índices vetoriais e histórico de chat. A restauração consiste em copiar de volta e reiniciar; nenhum fluxo de importação especial é necessário.

← Voltar para Power Local LLM

RAG local nos seus PDFs 2026: configuração passo a passo