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.
📌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/binno 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.
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 comsudo 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.
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_Me pergunte "Quanto é 2+2?". Confirme que você obtém uma resposta razoável. Digite/byepara 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.
# 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💡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.
⚠️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-textno seu terminal primeiro (~280 MB), atualize a lista de modelos no painel e selecionenomic-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.
# Run this in your terminal before opening the Embedding Preference panel
ollama pull nomic-embed-text💡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.
⚠️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.
💡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 type | Example | Healthy answer pattern | Failure pattern |
|---|---|---|---|
| Recuperação de fatos | Que tamanho de amostra Smith et al. 2024 utilizaram? | Citação direta da seção de métodos + referência ao chunk | Resposta genérica ("os pesquisadores costumam usar 100–500 participantes") sem citação |
| Síntese | Resuma a contribuição principal deste artigo. | 3–5 frases extraídas dos chunks do abstract e da conclusão | Repete o título ou cita uma única frase do abstract |
| Entre documentos | Em que Smith e Jones divergem sobre a sobreposição de chunks? | Citações de ambos os artigos com atribuição explícita | Cita apenas um artigo ou inventa uma discordância que não está nos chunks |
💡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.
| Symptom | Likely cause | Fix |
|---|---|---|
| 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á incorreto | Execute 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 cheio | Cancele 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 travado | O Ollama está carregando o modelo de embedding pela primeira vez | Espere 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 query | Chunking 512/0 padrão + embedder padrão fraco | Confirme 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 fonte | O LLM selecionado ainda é o minúsculo padrão ou o contexto é pequeno demais | Confirme 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 vazios | O PDF não tem camada de texto; é uma imagem raster pura | Aplique OCR ao PDF primeiro. macOS: ocrmypdf input.pdf output.pdf. Linux/Windows: instale Tesseract + ocrmypdf. Depois suba novamente o arquivo processado com OCR. |
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.