Retrieval Augmented Generation (RAG)
A RAG recupera passagens relevantes de uma base de conhecimento externa e adiciona-as ao prompt de um LLM, para que as respostas se baseiem em fontes atuais, privadas e citáveis.
A geração aumentada por recuperação (RAG) é uma técnica na qual um modelo de linguagem grande (LLM) responde a uma pergunta usando passagens recuperadas no momento da consulta de uma fonte externa de conhecimento e inseridas no prompt junto à pergunta. Os dados de treinamento de um LLM têm uma data-limite e nunca incluíram os documentos internos de uma empresa; sem recuperação, portanto, o modelo não tem os fatos ou inventa fatos plausíveis, uma falha conhecida como alucinação. O termo vem do artigo de 2020 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, de Patrick Lewis e colegas do Facebook AI Research. O artigo combinou um gerador BART pré-treinado com um recuperador neural sobre um índice vetorial denso da Wikipédia e estabeleceu o estado da arte em três tarefas de resposta a perguntas de domínio aberto. Hoje, o termo abrange qualquer sistema que primeiro recupera informações e depois gera uma resposta.
Como funciona um pipeline RAG#
O RAG funciona em duas etapas. A indexação ocorre antecipadamente: os documentos são divididos em passagens, por exemplo, usando segmentação semântica; cada passagem é convertida em um embedding; e os vetores são armazenados em um banco de dados vetorial. No momento da consulta, a pergunta é convertida em embedding com o mesmo modelo, a busca vetorial retorna as passagens mais próximas e o sistema monta um prompt com instruções, essas passagens e a pergunta. Em seguida, o LLM redige uma resposta fundamentada no texto fornecido e pode citar a passagem que sustenta cada afirmação.
Os sistemas de produção acrescentam etapas a esse núcleo. A busca híbrida combina similaridade vetorial com correspondência de palavras-chave para não deixar passar termos exatos, como números de peças; um reranqueador reordena os principais candidatos com um modelo mais preciso; e a recuperação contextual faz com que um LLM acrescente uma breve nota a cada bloco, situando-o no documento antes da indexação. Frameworks como LangChain e LlamaIndex reúnem esses componentes.
As etapas de recuperação e aumento podem ser implementadas em algumas linhas de Python com a biblioteca Sentence Transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# Knowledge base: passages the LLM never saw during training
passages = [
"Badge access to Building C requires a safety briefing completed within the last 12 months.",
"The cafeteria in Building A serves breakfast from 7:00 to 9:30 on weekdays.",
"Forklift operators must renew their certification every three years.",
]
passage_embeddings = model.encode(passages)
# Retrieve: embed the question and keep the most similar passage
question = "How often do I need to redo forklift training?"
scores = model.similarity(model.encode(question), passage_embeddings)[0]
context = passages[int(scores.argmax())]
# Augment: put the retrieved passage in the prompt the LLM will answer from
prompt = f"Answer using only this context.\nContext: {context}\nQuestion: {question}"
print(prompt)O código imprime um prompt que contém a passagem sobre a certificação de empilhadeiras, que corresponde à pergunta pelo significado: ela pergunta sobre refazer o treinamento, e a passagem fala sobre renovar a certificação. Qualquer LLM pode responder com base nesse prompt, e as passagens podem mudar diariamente sem que seja necessário retreinar o modelo.
RAG, ajuste fino e contexto longo#
- Ajuste fino: Atualiza os pesos do modelo com novos exemplos. Altera bem o comportamento, o estilo e o formato da saída, mas é uma forma lenta de adicionar fatos que mudam com frequência e não deixa uma fonte para citar; por isso, muitos sistemas fazem ajuste fino para definir o formato e usam RAG para fornecer conhecimento.
- Janelas de contexto longas: modelos que aceitam um milhão de tokens podem ler diretamente um grande conjunto de documentos, mas cada consulta paga por todos os tokens, e a precisão cai à medida que as entradas ficam mais longas, um efeito conhecido como deterioração do contexto. O RAG envia apenas os trechos relevantes.
Várias variantes ampliam o padrão básico: o GraphRAG recupera informações de um grafo de conhecimento; o RAG agêntico permite que um agente decida quando e onde pesquisar; e o RAG multimodal recupera imagens, vídeos e áudios, além de texto.
Onde o RAG é usado#
- Chatbots empresariais: Assistentes internos respondem com base em políticas, wikis e chamados de suporte anteriores e incluem um link para o parágrafo de origem de cada resposta.
- Suporte ao cliente: Antes de responder, os assistentes recuperam o manual do modelo exato do produto do cliente e o histórico de pedidos desse cliente.
- Saúde: Assistentes clínicos recuperam diretrizes atuais e referências sobre medicamentos, para que as respostas apontem para uma fonte verificável em vez de depender da memória do modelo.
O RAG também responde a perguntas sobre vídeos. Um LLM não pode assistir a horas de gravação para cada pergunta; por isso, combinar RAG com visão computacional primeiro transforma as gravações em registros recuperáveis. O Ultralytics YOLO26 no modo de rastreamento informa a classe, a caixa e o ID de rastreamento persistente de cada objeto em cada quadro. Um pipeline armazena esses dados em linhas, de modo que uma pergunta como "Quantos caminhões entraram na doca 3 esta manhã?" recupera essas linhas em vez do vídeo.
Por que as respostas do RAG dão errado#
O RAG falha em dois pontos. Uma falha de recuperação significa que a passagem com a resposta nunca chegou ao prompt, porque a segmentação a dividiu, o modelo de embedding não identificou um sinônimo ou ela ficou logo abaixo do limite de top-k; isso é medido pelo recall em k em um conjunto de perguntas de teste. Uma falha de geração significa que a passagem correta chegou, mas o modelo a ignorou, interpretou mal ou contradisse. Bibliotecas de avaliação como Ragas pontuam os dois lados: o recall do contexto para o recuperador e a fidelidade para o gerador, definida como a proporção de afirmações na resposta sustentadas pelo contexto recuperado.










