Geração aumentada por recuperação, geralmente abreviada como RAG (do inglês retrieval-augmented generation), é uma forma de usar um modelo de linguagem em que documentos relevantes são recuperados primeiro e o modelo escreve sua resposta a partir deles. A etapa de recuperação acontece quando a pergunta chega, então o modelo consegue responder sobre coisas que nunca viu durante o treinamento: as notícias de ontem ou uma página de produto publicada na semana passada.
O termo vem de um artigo de 2020 de Patrick Lewis e colegas do Facebook AI Research, que combinaram um sistema de recuperação com um modelo generativo e mostraram que a dupla respondia perguntas factuais melhor do que o modelo sozinho. Desde então, a ideia se tornou o design padrão para chat sobre documentos, bots de atendimento ao cliente e, em escala de web, busca com IA.
Por que a RAG existe?
Um grande modelo de linguagem sozinho tem dois limites. Seu conhecimento termina na data dos dados de treinamento, e ele viu pouco texto sobre temas raros ou novos. Quando perguntado sobre qualquer um deles, tende a produzir uma resposta fluente com um fato errado no meio.
Retreinar o modelo todos os dias não é prático. Colocar o texto relevante diante do modelo no momento da pergunta é. Se o prompt contém o parágrafo que responde à pergunta, o modelo só precisa lê-lo e reformulá-lo, uma tarefa que ele executa de forma confiável. A RAG também torna as citações possíveis: como o sistema sabe quais trechos entregou ao modelo, ele pode mostrar ao leitor de onde veio cada afirmação.
Como a RAG funciona?
Um sistema de RAG tem uma parte offline, que prepara os documentos, e uma parte online, que roda a cada pergunta.
Indexação
Os documentos são coletados e divididos em trechos, uma etapa chamada chunking. Um trecho normalmente é um parágrafo ou uma seção, com algumas centenas de tokens. Cada trecho é armazenado com um índice de palavras-chave e, na maioria dos sistemas, um embedding: uma lista de números que posiciona o trecho em um espaço onde textos com significado parecido ficam próximos uns dos outros.
Recuperação
Quando chega uma pergunta, o sistema a transforma em uma ou mais consultas de busca e procura trechos candidatos. A busca por palavras-chave encontra trechos que compartilham termos com a consulta. A busca vetorial encontra trechos cujos embeddings estão próximos do embedding da consulta, o que captura correspondências que usam palavras diferentes para a mesma ideia. A maioria dos sistemas em produção usa as duas, uma combinação chamada busca híbrida.
A primeira passada geralmente retorna mais trechos do que o modelo consegue ler. Um reranker então avalia cada candidato em relação à pergunta com mais cuidado e mantém os melhores.
Geração
Os trechos selecionados são colocados no prompt junto com a pergunta e instruções como "responda apenas com base nas fontes abaixo e cite-as". O modelo escreve a resposta. Se o sistema registra de qual trecho cada frase foi tirada, ele pode anexar uma citação a ela.
O que torna uma resposta de RAG boa ou ruim?
A maioria das falhas acontece antes de o modelo escrever uma palavra. Se a etapa de recuperação retorna trechos fora do tema, desatualizados ou sem o fato que responde à pergunta, o modelo não tem nada de bom com que trabalhar. Ele vai dizer que não consegue responder ou, pior, preencher a lacuna com seus dados de treinamento.
Três coisas determinam a qualidade da recuperação. O índice precisa conter os documentos certos. Os trechos precisam ser cortados de modo que cada um faça sentido sozinho. E a pontuação precisa preferir trechos que respondem à pergunta a trechos que apenas mencionam suas palavras. Como a busca com IA escolhe quais fontes citar analisa o que essa pontuação recompensa.
O que a RAG significa para um site?
Os produtos de busca com IA são sistemas de RAG cuja coleção de documentos é a web. Cada decisão de design descrita acima tem uma consequência para as páginas que eles leem.
Como a recuperação funciona por trechos, uma página é avaliada seção por seção. Uma seção que começa com uma resposta direta e se mantém em um único tema é fácil de recuperar e fácil de citar. Uma seção que depende de contexto de outra parte da página não é.
Os embeddings correspondem ao significado, não à redação exata, então uma página não precisa repetir a formulação da pergunta. Ela precisa, sim, dizer a coisa com clareza. O modelo só lê o que o recuperador retorna, então uma página que não pode ser rastreada ou indexada fica totalmente fora do sistema, por mais bem escrita que seja.