Um pipeline de RAG tem três estágios: indexação, recuperação e geração. Durante a indexação, você pega seus documentos — PDFs, páginas web, registros de banco de dados, o que for — divide-os em chunks, roda cada chunk através de um modelo de embedding para obter um vetor e armazena esses vetores em um banco de dados vetorial como Qdrant, Pinecone ou Weaviate. Durante a recuperação, a consulta do usuário é embedada com o mesmo modelo, e o banco de dados vetorial retorna os top-k chunks mais similares (tipicamente 3 a 10). Durante a geração, esses chunks são inseridos no prompt do modelo como contexto, e o modelo gera uma resposta fundamentada nesse material. Toda a viagem de ida e volta — embedar a consulta, pesquisar, montar o prompt, gerar — tipicamente leva de 1 a 3 segundos.
Chunking é onde a maioria dos sistemas de RAG tem sucesso ou fracassa, e é mais sutil do que parece. Divida chunks muito pequenos e você perde contexto; muito grandes e desperdiça espaço precioso da janela de contexto com texto irrelevante. Um ponto de partida comum é 500 a 1000 tokens por chunk com 10-20% de sobreposição entre chunks adjacentes (para não perder informação que cruza uma fronteira). Mas chunking ingênuo de tamanho fixo frequentemente corta frases ao meio ou separa um cabeçalho de seu conteúdo. Abordagens mais sofisticadas usam estrutura do documento — dividindo em cabeçalhos, quebras de parágrafo ou mudanças semânticas — para criar chunks autocontidos e significativos. O RecursiveCharacterTextSplitter do LangChain e o SentenceSplitter do LlamaIndex ambos tentam lidar com isso, mas os melhores resultados geralmente vêm de entender seus documentos específicos e escrever lógica de divisão customizada.
A etapa de recuperação tem mais opções do que as pessoas percebem. Busca por similaridade vetorial pura (busca de vizinho mais próximo no espaço de embedding) é o padrão, mas tem dificuldade com correspondências exatas de palavras-chave, nomes próprios e identificadores de código. É por isso que busca híbrida se tornou o padrão em sistemas de produção: você roda tanto uma busca vetorial quanto uma busca tradicional por palavras-chave (BM25), depois combina os resultados usando fusão de rank recíproco ou um re-ranqueador aprendido. Qdrant, Weaviate e Elasticsearch todos suportam busca híbrida nativamente. Re-ranking — pegar os top 20-50 resultados da recuperação e pontuar com um modelo cross-encoder — adiciona latência mas melhora dramaticamente a relevância. Cohere Rerank e modelos cross-encoder do Hugging Face são as escolhas comuns aqui.
Um equivoco comum é que RAG elimina alucinação. Reduz significativamente, mas um modelo ainda pode alucinar detalhes que não estão nos chunks recuperados, especialmente se os chunks são tangencialmente relacionados à consulta em vez de respondê-la diretamente. Bons sistemas de RAG mitigam isso incluindo citações de fonte nas instruções do prompt ("só responda com base no contexto fornecido, cite suas fontes"), filtrando chunks de baixa relevância (definindo um limiar mínimo de similaridade em vez de sempre retornar top-k) e permitindo que o modelo diga "não tenho informação suficiente" quando o contexto recuperado genuinamente não responde à pergunta. Algumas equipes adicionam uma etapa de verificação onde uma segunda chamada de modelo verifica se a resposta é realmente suportada pelas fontes.
RAG foi introduzido em um artigo de 2020 pelo Facebook AI Research (agora Meta AI), mas não se tornou um padrão mainstream de produção até 2023, quando bancos de dados vetoriais e APIs de embedding amadureceram o suficiente para torná-lo prático. O padrão desde então evoluiu em várias direções: GraphRAG usa grafos de conhecimento em vez de (ou junto com) busca vetorial para melhor tratamento de questões relacionais. RAG agêntico dá ao modelo a capacidade de reformular consultas, pesquisar múltiplas fontes e iterar na recuperação em vez de fazer uma única busca. E expansão de janela de contexto — modelos agora lidam com mais de 100 mil tokens — levou algumas equipes a pular RAG inteiramente para bases de conhecimento menores, simplesmente enfiando tudo no prompt. Essa abordagem funciona para algumas centenas de páginas de documentos mas falha em escala, que é onde RAG permanece essencial.