O que é RAG (Retrieval-Augmented Generation)?

Atualizado em: agosto de 2026

RAG é uma técnica que recupera documentos no momento da consulta e os adiciona ao prompt, para que o LLM responda a partir de dados, e não de memória. Apresentado por Lewis et al. em 2020, é a prova com consulta em contraste com a prova de livro fechado de um modelo puro: em vez de depender do que memorizou no treinamento, o modelo consulta o material que você fornece e responde a partir dele — fundamentado, atual, ciente do que é privado e, porque as fontes são conhecidas, citável. Para quem desenvolve backend, a verdade tranquilizadora por baixo do hype é que RAG não é um framework que você precisa adotar; é um for-loop que você já sabe construir.

Principais pontos

PerguntaResposta
A jogadaRecuperar os chunks relevantes → adicionar ao prompt → gerar uma resposta fundamentada
As três lacunas que corrigeAlucinação · corte de treinamento · nenhum acesso aos seus dados privados
vs. fine-tuningRAG fornece conhecimento; fine-tuning muda comportamento — muitas vezes os dois
O erro dominanteFalha de recuperação — chunks errados entram, resposta errada e confiante sai
A obrigação em produçãoFiltrar a recuperação por permissões, não só por similaridade

As duas fases

INGESTÃO (offline, uma vez por documento)
  carregar → dividir em chunks (~centenas de tokens, com sobreposição)
       → gerar o embedding de cada chunk
       → armazenar vetor + texto + metadados de ACL num índice

CONSULTA (online, a cada pergunta)
  embedding da pergunta → busca por similaridade dos top-k chunks (em geral 5–10)
       → filtrar para o que ESTE usuário pode ler
       → aumentar o prompt com os chunks
       → o LLM gera uma resposta fundamentada neles (+ citações)

A fase online inteira, no servidor, em uma única função:

// JavaScript — Cloud Code (cloud/main.js): RAG is a for-loop, not a framework
Parse.Cloud.define('askDocs', async (req) => {
  // 1 · embed the question (LLM API key stays server-side)
  const qVec = await embed(req.params.question);

  // 2 · retrieve — similarity search, ACL-FILTERED to this user's docs
  const chunks = await vectorSearch('DocChunk', qVec, {
    limit: 6,
    aclUser: req.user, // never retrieve what the asker can't read
  });

  // 3 · augment + generate
  const context = chunks.map((c) => c.get('text')).join('\n---\n');
  return await complete(`Answer using ONLY this context:\n${context}\n\nQ: ${req.params.question}`);
  // Answer cites the retrieved chunks — grounded, and permission-safe.
});
Pipelines de ingestão e consulta do RAGNa fase de ingestão, os documentos são carregados, divididos em chunks, transformados em embeddings e armazenados com metadados de controle de acesso num índice vetorial. Na fase de consulta, a pergunta do usuário vira embedding, os chunks similares são recuperados e filtrados pelas permissões do usuário, o prompt é aumentado com eles e o modelo gera uma resposta fundamentada com citações.

Consulta — online

Ingestão — offline

Documentos

Chunk

Embedding

Índice vetorial
+ metadados de ACL

Pergunta

Embedding

Recuperar top-k

Filtrar pela ACL do usuário

Aumentar o prompt

Gerar resposta
fundamentada

Na fase de ingestão, os documentos são carregados, divididos em chunks, transformados em embeddings e armazenados com metadados de controle de acesso num índice vetorial. Na fase de consulta, a pergunta do usuário vira embedding, os chunks similares são recuperados e filtrados pelas permissões do usuário, o prompt é aumentado com eles e o modelo gera uma resposta fundamentada com citações.

Por que RAG: as três lacunas

Um LLM puro tem três fraquezas estruturais, e o RAG ataca todas sem retreinar. Alucinação — modelos respondem com confiança sabendo ou não a resposta; ancorar cada afirmação em texto recuperado (o tal grounding) dá ao modelo algo verdadeiro para dizer. O corte de treinamento — o conhecimento do modelo congela na data do treinamento; a recuperação (retrieval) busca os dados de hoje. Dados privados — o modelo nunca viu seus documentos; a recuperação é a forma de ele lê-los no momento da consulta. O bônus que modelos de livro fechado não oferecem: como os chunks recuperados são conhecidos, a resposta pode citar as fontes como notas de rodapé — a maior vantagem de confiança que o RAG tem.

RAG vs. fine-tuning

RAGFine-tuning
MudaConhecimento — o que o modelo sabeComportamento — como ele responde
Velocidade de atualizaçãoInstantânea — adicione um documentoRetreinar para mudar
AtualidadeSempre atualCongelado no treinamento
CitaçõesSim — as fontes são conhecidasNão
Formato do custoRecuperação + tokens por consultaTreinamento antecipado
Melhor paraFatos, docs privados, mudançaEstilo, formato, raciocínio de domínio

Eles não são rivais: o fine-tuning ensina ao modelo como responder, o RAG fornece sobre o que responder, e um assistente especializado de domínio frequentemente usa os dois — uma voz ajustada por fine-tuning respondendo a partir de uma base de conhecimento recuperada.

O RAG morreu? A questão do contexto longo, respondida

O tratamento honesto que as páginas genéricas evitam. Janelas de contexto agora chegam a milhões de tokens, alimentando o argumento recorrente de “só enfiar tudo no prompt”. Três fatos mantêm a recuperação viva. Custo e latência: pagar para processar um contexto gigante em cada consulta é dramaticamente mais caro e mais lento do que buscar a fatia relevante — ordens de magnitude, em escala. Context rot: estudos ao longo de 2025 encontraram a acurácia dos modelos degradando bem antes de a janela encher — fatos relevantes soterrados num contexto enorme passam despercebidos, então uma janela maior não é uma resposta confiavelmente melhor. Atualidade e controle de acesso: um mega-prompt estático fica obsoleto no instante em que os dados mudam e é cego para quem pode ler o quê. O consenso de 2026 não é “RAG ou contexto longo”, e sim os dois — recuperar um subconjunto generoso, relevante e filtrado por permissões, e então raciocinar sobre ele com um modelo de contexto longo. Contexto longo puro só serve para corpora pequenos, estáveis e não sensíveis.

A recuperação é onde o RAG falha

O enquadramento que reorganiza como você depura um sistema de RAG: lixo recuperado é lixo gerado com confiança. A maioria das falhas atribuídas ao modelo são falhas de recuperação fantasiadas de geração — os chunks errados foram buscados, então uma resposta perfeitamente fiel se fundamenta no material errado. Isso torna duas variáveis as que de fato movem a qualidade. Chunking: pedaços grandes demais diluem a relevância e queimam orçamento de prompt; pequenos demais perdem o contexto que lhes dava sentido — a divisão sensível à estrutura (por título, parágrafo, bloco de código) costuma superar tamanhos fixos (as estratégias importam). Recuperação híbrida: combine busca por palavra-chave (termos exatos, nomes, IDs) com busca vetorial (significado) e depois re-ranqueie os candidatos mesclados com um modelo de relevância mais forte antes do prompt — recall dos dois lados, precisão do re-ranker. E meça as duas metades separadamente, no vocabulário do RAGAS: métricas de recuperação (buscamos os chunks certos?) versus fidelidade (cada afirmação é sustentada pelo que buscamos?) — porque elas falham de forma independente e se corrigem de formas diferentes.

A lacuna de segurança que ninguém menciona

A similaridade vetorial ranqueia por significado e não sabe nada sobre permissões — o que torna um RAG ingênuo uma máquina de vazar dados. Coloque os documentos de uma empresa num índice único sem metadados de acesso e a pergunta de qualquer usuário pode recuperar qualquer documento, porque o relatório financeiro e a dúvida do estagiário são apenas pontos vizinhos no espaço vetorial. Filtrar depois da recuperação também não resolve: descartar os chunks proibidos após a seleção top-k tanto vaza a existência deles quanto quebra o contrato do top-k (você pediu seis e recebeu dois). O padrão correto: armazenar metadados de ACL com cada chunk e restringir a recuperação ao conjunto permitido do usuário solicitante antes do ranqueamento por similaridade — recuperação filtrada por permissão, não exibição filtrada por permissão. O parâmetro aclUser das abas de código é exatamente isso, e é a diferença entre uma demo e um sistema que você pode colocar em produção.

Casos de uso comuns

  • Chat de suporte e conhecimento — responder a partir dos docs reais da empresa, com citações, atualizado até a última ingestão.
  • Busca em corpora privados — jurídico, médico, wikis internas: recuperação por significado que a caixa de palavras-chave nunca entregou.
  • Assistentes com escopo por cliente — os dados de cada usuário, filtrados por ACL para que a recuperação nunca cruze a fronteira de um tenant.
  • Análises fundamentadas — perguntas respondidas a partir de registros vivos, e não do chute desatualizado de um modelo.
  • Documentação e onboarding — um modelo que cita o manual em vez de improvisá-lo.

Você realmente precisa de RAG? Matriz de decisão

SituaçãoEscolha
O conhecimento é público, estável e já está no modeloPrompt puro — sem pipeline
O corpus cabe no prompt e raramente mudaCole no prompt (com prompt caching)
Conhecimento grande, privado ou em mudançaRAG — a casa dele
O modelo precisa se comportar diferenteFine-tuning (talvez junto de RAG)
As respostas precisam citar fontesRAG — as citações vêm de graça
Dados multiusuário com permissõesRAG com recuperação filtrada por ACL — obrigatório

Limitações e trade-offs

  • RAG reduz a alucinação; não a remove. A fidelidade precisa ser medida, não presumida — o modelo ainda pode ler mal um contexto bom.
  • A qualidade mora na recuperação. A maior parte do esforço de engenharia — chunking, busca híbrida, re-ranking — fica antes do modelo, onde estão os ganhos.
  • Embeddings têm versão. Troque o modelo de embedding e cada vetor armazenado precisa ser regenerado; re-embeddar um corpus grande é uma migração de verdade.
  • Ele adiciona partes móveis. Pipelines de ingestão, um índice para manter, tokens e latência extras por consulta — custo real que um corpus pequeno e estável pode não justificar.
  • Permissões não vêm de graça. A recuperação filtrada por ACL é o trabalho de segurança estrutural — a parte que as demos pulam e os incidentes redescobrem.

RAG no Back4app

O Back4app é uma plataforma open-source de Backend as a Service (BaaS) que combina banco de dados gerenciado, APIs REST e GraphQL geradas automaticamente, autenticação, armazenamento de arquivos e funções serverless com Cloud Code. A afirmação de que “RAG é um for-loop” aqui é literal: documentos são objetos comuns, com armazenamento de arquivos para os originais; os vetores dos chunks vivem como campos de array ao lado deles, indexados para busca por similaridade; as ACLs que já governam cada consulta viram o filtro de permissão da recuperação de graça — a mesma regra que impede um usuário de ler os registros de outro impede o retriever de buscá-los; e a orquestração — embedding, recuperação, aumento do prompt, geração — é uma função de Cloud Code chamando a API do modelo com a chave mantida no servidor, exatamente como as abas de código mostram. Sem framework, sem um serviço vetorial separado para proteger, sem chave de LLM no dispositivo — RAG deixa de ser um projeto de IA e vira engenharia de backend que você já sabe fazer.

Perguntas frequentes

O que é RAG em IA?

Uma técnica em que o seu app busca documentos relevantes numa base de conhecimento e os cola no prompt do LLM, para que a resposta se apoie em dados reais, atuais ou privados — e não na memória congelada do treinamento. É a prova com consulta, em contraste com a prova de livro fechado de um LLM puro.

Para que serve o RAG?

Ele corrige três lacunas do LLM de uma vez, sem retreinar nada: a alucinação (ancorando cada resposta em texto recuperado), o corte de treinamento (buscando dados atuais) e o fato de o modelo nunca ter visto seus documentos privados. E como as fontes são conhecidas, a resposta pode citá-las.

Como o RAG funciona?

Em duas fases. Offline: carregar os documentos, dividi-los em chunks, gerar o embedding de cada chunk e armazenar tudo num índice. Online: gerar o embedding da pergunta do usuário, recuperar os chunks mais similares, adicioná-los ao prompt e deixar o modelo gerar uma resposta fundamentada nesse contexto.

Qual é a diferença entre RAG e fine-tuning?

Eles mudam coisas diferentes. O RAG injeta conhecimento — fatos, atualidade, documentos privados — no momento da consulta. O fine-tuning muda comportamento — estilo, formato, raciocínio de domínio — fixado durante o treinamento. O fine-tuning ensina como responder; o RAG fornece sobre o que responder; assistentes especializados costumam usar os dois.

Janelas de contexto longas tornam o RAG obsoleto?

Não. Mesmo com janelas de milhões de tokens, enfiar tudo no prompt custa muito mais por consulta e roda mais devagar, e estudos mostram a acurácia degradando bem antes de a janela encher — o "context rot". Atualidade e controle de acesso continuam exigindo recuperação. O padrão de 2026 é híbrido: recuperar um subconjunto relevante e raciocinar sobre ele com um modelo de contexto longo.

O que é chunking e por que importa?

É dividir documentos em pedaços recuperáveis — e a qualidade da recuperação depende fortemente disso. Chunks grandes demais diluem a relevância e desperdiçam orçamento de prompt; pequenos demais perdem o contexto. Uma linha de base comum é algumas centenas de tokens com sobreposição, embora a divisão sensível à estrutura (por título, parágrafo ou bloco de código) costume superar tamanhos fixos.

O RAG elimina as alucinações?

Reduz; não elimina. O modelo ainda pode ler mal o contexto recuperado, misturar trechos antigos com novos ou responder com confiança a partir de recuperações ruins. E a maior parte das "alucinações de RAG" são falhas de recuperação disfarçadas — os chunks errados foram buscados, então a resposta fundamentada se fundamenta na coisa errada.

Como impedir que o RAG vaze documentos que o usuário não deveria ver?

Filtre a recuperação por permissões, não apenas por similaridade. A busca vetorial ranqueia por significado e não sabe nada sobre quem pode ler o quê; armazene metadados de controle de acesso junto de cada chunk e restrinja a consulta aos documentos que o usuário solicitante pode ver — antes da seleção top-k, não depois.

Termos relacionados

Compare com

Leitura adicional

Pronto para construir seu backend?

Comece seu projeto no Back4app em minutos — banco de dados, autenticação, APIs e Cloud Code incluídos. Sem cartão de crédito.

Escrito e revisado por Back4app Engineering, Back4app Engineering · Publicado em 2026-08-21