Intermediário 11 minRAG

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 Mohamed Meguedmi·Atualização 2026-08-27·Testado no Windows, macOS e Linux

#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.
i
Isso não é um substituto do AnythingLLM
O LM Studio faz RAG “por conversa” — você arrasta documentos para um chat específico, e o índice fica vinculado a esse chat. Não há conceito de workspace persistente, de coleção compartilhada nem de reindexação incremental. Para uma base de conhecimento estável que você consulta todos os dias, o AnythingLLM ou uma stack Python continuam sendo opções mais adequadas. Ver a seção de comparação abaixo.

#Pré-requisitos

O kit RAG Local

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.

  1. 01
    Abra um novo chat
    Abra 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.
  2. 02
    Arraste seu arquivo para a área de entrada
    Arraste 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.
  3. 03
    Faça sua pergunta
    Digite 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.
  4. 04
    Leia a resposta e as fontes
    O 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.
→
Documento curto vs documento longo
Se o documento couber na janela de contexto (tipicamente menos de 20 páginas de texto), o LM Studio o injeta integralmente sem passar pelo RAG — sem chunking, sem embeddings, apenas um prompt longo. Acima desse limite, ele muda automaticamente para o modo RAG. Você não precisa fazer nenhum ajuste, mas entender isso é útil para interpretar os resultados.

#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.

  1. 01
    Baixe um modelo de embeddings
    Na 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.
  2. 02
    Verifique se ele foi detectado
    Settings → 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.
  3. 03
    Selecione-o no chat
    Quando 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.
!
A armadilha de usar um modelo de embeddings em inglês com conteúdo em francês
Usar um nomic-embed ou um bge em conteúdo em francês divide a relevância da recuperação por um fator de 1,5 a 2. Você obterá trechos vagamente relacionados ao tema em vez dos trechos exatamente relevantes. Se seus documentos estão em francês, use multilingual-e5-large desde o início — a lentidão adicional é desprezível em comparação com o ganho de qualidade.

#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.
Preparar arquivos não suportados
# PDF scanné -> PDF avec couche OCR
ocrmypdf scan.pdf scan_ocr.pdf

# HTML -> Markdown propre
pandoc page.html -o page.md

# XLSX -> CSV puis -> TXT lisible
libreoffice --headless --convert-to csv data.xlsx
column -s, -t < data.csv > data.txt

# EPUB -> TXT
pandoc livre.epub -t plain -o livre.txt
→
Vários arquivos de uma vez
Você pode anexar até 5 arquivos a um mesmo chat (esse limite mudou conforme as versões; verifique na sua build). Acima disso, agrupe-os em um único arquivo TXT grande usando o comando cat. O LM Studio dividirá o conjunto em blocos como um único corpus, o que funciona bem para notas Markdown ou capítulos de um mesmo documento.

#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.

Fluxo de trabalho típico de validação
# Préparer un document test
# - Un PDF de 20-50 pages avec une structure claire
# - Notez 5 faits précis présents dans le document
# - Notez 2 faits absents du document

# Dans LM Studio :
# 1. Chat -> nouvelle conversation
# 2. Charger Qwen 3.5 9B Q4_K_M (ou équivalent)
# 3. Context Length -> 16384 (panneau droit)
# 4. Drag-and-drop du PDF
# 5. Vérifier que nomic-embed (ou e5) est sélectionné
# 6. Poser les 5 questions à réponse connue
# 7. Poser les 2 questions à réponse absente

# Verdict :
# - 5/5 corrects + 2/2 "je ne trouve pas" -> RAG fiable sur ce corpus
# - Hallucinations sur les 2 absents -> baisser la température à 0.1
# - Réponses approximatives -> changer d'embeddings ou monter Top K
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.
i
A escolha certa para cada uso
LM Studio Chat with Documents: testar um PDF, resumir um relatório recebido, fazer algumas perguntas sobre um contrato, acompanhar informações pontualmente. AnythingLLM: base de conhecimento da equipe, suporte ao cliente, documentação do produto consultada todos os dias. Se você estiver em dúvida, comece pelo LM Studio — a migração para o AnythingLLM leva 30 minutos no dia em que a limitação começar a incomodar você.

#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.

Conectar o LlamaIndex ao LM Studio
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.openai_like import OpenAILike

# LM Studio sert le LLM via son endpoint OpenAI-compatible
Settings.llm = OpenAILike(
    model="local-model",
    api_base="http://localhost:1234/v1",
    api_key="lm-studio",
    is_chat_model=True,
    context_window=16384,
)

# Embeddings côté Python (LM Studio peut aussi les exposer)
Settings.embed_model = HuggingFaceEmbedding("intfloat/multilingual-e5-large")

docs = SimpleDirectoryReader("./mes_documents").load_data()
index = VectorStoreIndex.from_documents(docs)
index.storage_context.persist("./storage")

qe = index.as_query_engine(similarity_top_k=5)
print(qe.query("Quelles sont les obligations du prestataire ?"))
→
Embeddings também via LM Studio
Desde a versão 0.3, o LM Studio disponibiliza embeddings em /v1/embeddings (endpoint compatível com OpenAI). Assim, você pode executar tanto o LLM quanto os embeddings no LM Studio e usar Python apenas para o pipeline. Prático para reutilizar a VRAM já alocada.

#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.
Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.