RAG local com LM Studio: conversar com seus documentos
Desde a versão 0.3, o LM Studio inclui a função « Chat with Documents », que executa um RAG completo localmente: indexação, embeddings, recuperação e geração, sem que um único byte saia da sua máquina. É provavelmente a maneira mais rápida de passar de um chat semelhante ao ChatGPT para um assistente que responde com base em seus PDFs, contratos ou anotações. Este guia mostra como ativá-la, o que ela consegue fazer, quais são seus limites e quando é necessário mudar para o AnythingLLM ou uma stack Python.
#Por que usar o LM Studio para o RAG
Fazer RAG local normalmente envolve combinar quatro componentes: um parser de arquivos, um modelo de embeddings, uma base vetorial e um LLM de geração. A maioria dos tutoriais usa Python + LlamaIndex + ChromaDB + Ollama. É uma solução poderosa, mas também são quatro dependências, um ambiente para gerenciar e um script para manter.
LM Studio esconde tudo isso atrás de um ícone de clipe de papel. Você carrega um modelo de geração (Qwen 3.5 9B, Granite 4.2 8B, Gemma 4 12B…), carrega um modelo de embeddings, arrasta um PDF para a conversa e faz sua pergunta. A interface cuida do chunking, da indexação na memória e da inserção dos trechos relevantes no prompt.
- Nenhuma linha de código
- Tudo passa pela interface gráfica. É o caminho mais curto entre « tenho uma pasta com PDFs » e « converso com eles ».
- 100 % offline
- Embeddings, recuperação, geração: tudo roda na sua GPU ou CPU. Nenhuma telemetria sobre o conteúdo dos documentos.
- Compatível com OpenAI
- O servidor local na porta 1234 continua acessível. Você pode usar o RAG na interface gráfica e conectar, em paralelo, um script ao mesmo modelo.
#Pré-requisitos
LM Studio permite consultar seus documentos. Para passar de um teste a uma ferramenta confiável, o kit RAG Local trata do que faz a diferença: a divisão dos documentos em trechos (cap. 7), a escolha de um modelo de embeddings sólido em francês (cap. 8) e a avaliação das respostas (cap. 14).
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
- LM Studio 0.3 ou mais recente
- A função Chat with Documents apareceu na versão 0.3 e foi aprimorada desde então. Verifique sua versão em Settings → About. Em um LM Studio mais antigo, atualize antes de continuar.
- LLM carregado para geração
- Qwen 3.5 9B Q4_K_M (6,6 GB, contexto 256k), Granite 4.2 8B Q4_K_M (5,3 GB, 128k) ou Gemma 4 12B Q4_K_M (7,6 GB, multimodal) são boas opções padrão, todos com licença Apache 2.0. Esses modelos recentes têm amplas janelas de contexto, mas ajuste mesmo assim o parâmetro Context Length no LM Studio (ver abaixo) — caso contrário, você ficará limitado quanto ao número de trechos que o LM Studio pode inserir.
- Um modelo de embeddings
- Necessário e distinto do LLM. nomic-embed-text-v1.5 (137M, ~80 MB em Q4) é a opção padrão recomendada pelo LM Studio. mxbai-embed-large (335M) se você tiver margem. Para conteúdo exclusivamente em francês, multilingual-e5-large é mais adequado.
- VRAM ou RAM
- Some o tamanho do LLM + ~200 MB para o modelo de embeddings + 1 a 2 GB para o índice em memória de uma pasta de tamanho médio. Em uma GPU com 12 GB de VRAM, um modelo 7B Q4 + nomic-embed deixa cerca de 5 GB para o índice e o contexto.
- Janela de contexto ≥ 8192
- Defina o Context Length do LLM para no mínimo 8192, idealmente 16384, no painel direito da conversa. Abaixo desse valor, LM Studio trunca os trechos recuperados e a resposta perde qualidade.
#1. Ativar Chat with Documents
Não há nada a ativar no sentido estrito — é uma funcionalidade nativa do chat. Basta fornecer um documento a uma conversa para que LM Studio inicie o pipeline RAG em segundo plano.
- 01Abra um novo chatAbra a aba Chat na barra lateral, depois clique no botão + no topo para criar uma conversa. Verifique se um LLM está realmente carregado no menu suspenso no topo. Se nada estiver carregado, selecione seu modelo de geração e espere que a VRAM vá sendo preenchida.
- 02Arraste seu arquivo para a área de entradaArraste e solte um PDF, DOCX, TXT ou MD diretamente no campo de mensagem na parte inferior. Uma miniatura aparece acima do campo com o nome e o tamanho do arquivo. Você pode anexar vários arquivos em sequência.
- 03Faça sua perguntaDigite sua pergunta normalmente, como em um chat clássico. LM Studio detecta a presença do documento, o divide, o codifica, busca os trechos relevantes e os injeta no prompt — tudo isso em 1 a 5 segundos, dependendo do tamanho.
- 04Leia a resposta e as fontesO modelo responde com base nos trechos encontrados. De acordo com o LLM usado, ele citará ou não os trechos. Para forçar a citação, adicione "Cite os trechos exatos do documento" na sua pergunta.
#2. Modelo de embeddings
O modelo de embeddings é o que transforma um trecho de texto em um vetor de números. A qualidade do retrieval — ou seja, a qualidade final do RAG — depende diretamente desse modelo. Muito mais do que do LLM de geração, contrariamente ao que se imagina no início.
- 01Baixe um modelo de embeddingsNa aba Discover, filtre por « Text Embedding » na coluna da esquerda. O nomic-embed-text-v1.5 aparece em destaque — é uma boa opção padrão. Baixe a variante Q4_K_M (~80 MB) ou Q8_0 (~140 MB) se fizer questão da qualidade máxima.
- 02Verifique se ele foi detectadoSettings → My Models → aba Embeddings. O modelo deve estar listado. Se o LM Studio não detectar o modelo nessa aba, apesar de ele já ter sido baixado, é porque o modelo não foi reconhecido como um modelo de embeddings — verifique as tags do Hugging Face ou baixe novamente pelo Discover.
- 03Selecione-o no chatQuando um documento é anexado a um chat, LM Studio exibe no final da conversa o nome do modelo de embeddings usado. Clique para mudar. A escolha é mantida por chat — útil para comparar nomic e multilingual-e5 no mesmo documento.
- nomic-embed-text-v1.5
- 137M parâmetros, 768 dimensões, contexto de 8192 tokens. Excelente opção padrão para inglês, desempenho razoável em francês. Recomendado pelo LM Studio.
- mxbai-embed-large-v1
- 335M, 1024 dimensões. Melhor classificação no MTEB em inglês, mas 3 vezes mais lento e 3 vezes mais pesado. Útil se a qualidade da recuperação for o fator limitante.
- multilingual-e5-large
- 560M, 1024 dimensões. A melhor escolha se seus documentos estiverem em francês ou forem multilíngues. Exige que as consultas tenham o prefixo « query: » e os trechos, o prefixo « passage: », algo que o LM Studio faz automaticamente.
- bge-large-en-v1.5
- 335M, 1024 dimensões. Excelente para textos apenas em inglês; evitar para textos em francês.
#3. Formatos e tamanhos de arquivos suportados
O LM Studio trabalha com um subconjunto prático dos formatos comuns. Não há OCR em PDFs escaneados, análise de tabelas complexas nem importação direta a partir de uma URL — é necessário conhecer essas limitações antes de criar expectativas excessivas.
- PDF (texto nativo)
- Suportado. PDFs gerados a partir de Word, Google Docs ou LaTeX são bem tratados. PDFs escaneados sem camada OCR não são extraíveis — passe-os por ocrmypdf ou Tesseract antes.
- DOCX
- Suportado. A formatação é ignorada, e o texto é extraído como texto simples. Tabelas e imagens são perdidas.
- TXT e MD
- Suportado nativamente, é o formato ideal. O Markdown mantém sua estrutura (títulos, listas), o que ajuda no chunking.
- Código-fonte (.py, .js, .ts…)
- Tratado como texto. Funciona, mas para conversar com um repositório completo, prefira o Continue.dev ou uma ferramenta pensada para código.
- CSV, XLSX, JSON, HTML, EPUB
- Sem suporte oficial atualmente. Converta para TXT ou MD usando pandoc, csvkit ou um script antes da importação.
- Tamanho máximo por arquivo
- Nenhum limite estrito anunciado. Na prática, considere um máximo de 50–100 MB por PDF na interface gráfica — acima disso, o chunking fica lento e o uso de RAM aumenta rapidamente.
#4. Testar com um documento real
O melhor teste é um documento que você conhece. Pegue um PDF com cerca de vinte páginas — um manual de usuário, um relatório, um contrato — e faça primeiro perguntas cuja resposta você conhece para calibrar a confiança no sistema.
- Temperatura baixa
- Para RAG, reduza a temperatura para 0,1–0,3 no painel à direita. O objetivo é manter a fidelidade aos trechos, não criar conteúdo.
- Prompt de sistema explícito
- « Você responde apenas com base nos trechos fornecidos. Se a informação não estiver presente, diga claramente. Cite os trechos exatos entre aspas. » Esse simples acréscimo reduz as hallucinações em 3 vezes.
- Pergunta estruturada
- « Qual é o prazo de aviso prévio? Cite a cláusula exata. » é mais útil do que « fale sobre o aviso prévio ». A citação força o modelo a se manter fundamentado no documento.
#Limitações em comparação com AnythingLLM
O LM Studio faz RAG “descartável” — por conversa, sem persistência entre chats, sem ajustes finos. Isso é intencional: a função foi pensada para uma consulta pontual, não para uma base de conhecimento. Assim que você quiser mais, o AnythingLLM (gratuito, open source, com a mesma proposta de interface gráfica) assume essa função.
- Espaços de trabalho persistentes
- AnythingLLM armazena seus documentos em workspaces reutilizáveis. Você indexa 200 PDFs uma única vez, e todos os seus chats do workspace têm acesso a eles. LM Studio reindexa a cada novo chat.
- Citações clicáveis
- AnythingLLM exibe as fontes com um link para o trecho exato. LM Studio apenas injeta o trecho no prompt — o modelo pode citar ou não, a seu critério.
- Configurações de RAG disponíveis para ajuste
- Top K, tamanho do chunk, limiar de similaridade, modelo de embeddings: tudo é parametrizável no AnythingLLM. LM Studio gerencia isso como uma caixa-preta, com configurações padrão razoáveis.
- Bases vetoriais externas
- AnythingLLM se conecta a ChromaDB, Qdrant, Pinecone, Weaviate. LM Studio mantém tudo na memória do processo, o que o limita a corpus modestos.
- Multi-utilisateurs
- O AnythingLLM oferece suporte a usuários e ao compartilhamento de workspaces. O LM Studio foi projetado para um único usuário.
- Conectores de entrada
- O AnythingLLM pode ingerir dados de URLs, Confluence, GitHub e transcrições do YouTube. O LM Studio se limita a arrastar e soltar arquivos.
#Quando passar para uma stack em Python
Chega um momento em que a interface gráfica atinge seu limite e programar se torna mais simples do que contornar suas limitações. Os sinais que devem levar você a passar para Python + LlamaIndex (ou Haystack):
- Chunking que leva em conta a estrutura
- Seus documentos têm uma estrutura bem definida (seções jurídicas, código, artigos científicos) que a divisão ingênua em blocos rompe. Um divisor que leva em conta a estrutura do Markdown ou um parser docling faz a diferença.
- Busca híbrida
- Você quer combinar busca vetorial (semântica) e BM25 (lexical) para não deixar passar termos exatos (números de cláusulas, nomes de variáveis, identificadores). Nenhuma interface gráfica faz isso nativamente hoje.
- Reranking
- Você adiciona um cross-encoder (BAAI/bge-reranker-v2-m3) para reordenar os 20 primeiros resultados. +15% de relevância, mas isso exige codificação.
- Metadados e filtragem
- « Procure apenas nos contratos assinados em 2024 ». Requer metadados por chunk e um filtro durante a consulta.
- Pipeline de ingestão automático
- Um diretório monitorado, um cron, um webhook que reindexa a cada novo arquivo. Aí, saímos definitivamente da interface gráfica.
- Avaliação
- Medir a qualidade do retrieval em 50 perguntas de referência. Sem Python, você trabalha às cegas.
Boa notícia: LM Studio pode continuar como interface enquanto o Python executa o pipeline. O servidor compatível com OpenAI em localhost:1234 pode ser usado pelo LlamaIndex com duas linhas de código — você mantém LM Studio para o chat exploratório e programa o pipeline por trás.
#Para se aprofundar
Chat with Documents atende a 80% das necessidades de uso pessoal ou de uma equipe pequena. Os próximos passos lógicos após esse primeiro RAG:
- Compreender os mecanismos
- O guia RAG local: introdução detalha chunking, embeddings, recuperação e as armadilhas que nenhuma interface gráfica mostra. Leitura útil antes de mexer nas configurações.
- Escolher um modelo de embeddings melhor para francês
- O guia 'Os melhores modelos de embeddings FR' compara Solon, multilingual-e5 e BGE em conteúdo em língua francesa. A diferença é mensurável.
- Mudar para servidor de API
- O guia Transformar o LM Studio em um servidor de API mostra como expor o endpoint compatível com OpenAI para conectar o LlamaIndex, o Continue.dev ou um script próprio sem perder sua configuração atual.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.