Guia de conceitos

Geração aumentada por recuperação (RAG)

Pergunte a uma IA sobre as regras da sua empresa ou sobre as notícias da semana passada e você pode receber uma resposta que parece certa, mas não é. O RAG resolve isso sem treinar o modelo de novo: toda vez que chega uma pergunta, ele encontra os documentos necessários e envia junto. É um tema que aparece muito nas provas de certificação de IA.

01

Quando você pergunta à IA algo que ela não sabe

Uma empresa cria um chatbot interno para responder às perguntas dos funcionários. Alguém pergunta:

Qual é o limite de hotel por noite em uma viagem a trabalho para São Paulo?

A política de viagens da empresa diz: “Hospedagem: até R$ 600 por noite, exceto São Paulo e Rio de Janeiro: R$ 750”. Mas o chatbot responde: “Até R$ 500 por noite”. Por que isso acontece?

Dentro do chatbot existe um modelo de linguagem grande (LLM). Um LLM aprendeu com uma quantidade enorme de texto público, como páginas da web e livros. Mas há duas coisas que ele não tem como saber. A primeira é tudo o que aconteceu depois que o treinamento terminou — ele só viu textos até aquele momento. A segunda é tudo o que nunca foi público, como a política de viagens desta empresa.

Seria ótimo se ele simplesmente dissesse “não sei”. Só que um LLM monta a resposta olhando o texto até ali e continuando com o que tem mais chance de vir em seguida. Então, mesmo sem saber, ele produz uma frase que parece plausível. Uma resposta que apresenta algo falso como se fosse fato se chama alucinação.

A solução é mais simples do que parece: enviar o trecho certo da política junto com a pergunta. É como uma prova com consulta. O modelo não precisa ter decorado a política; ele só lê o que está na frente dele e responde.

A cena abaixo mostra isso. À esquerda estão os documentos da empresa, o quadro do meio é o texto enviado ao modelo e, à direita, estão o modelo de IA e a resposta. No começo, só a pergunta é enviada. Ligue a opção de enviar também o artigo da política: o artigo entra no texto enviado, e uma linha de citação vai da resposta até ele.

Blocos enviados
Nenhum (só a pergunta)
Resposta
Até R$ 500 por noite. · Inventada · sem fonte

Pergunta ao assistente da empresa: "Qual é o limite de hotel por noite em uma viagem a trabalho para São Paulo?"

O assistente não está conectado aos documentos da política, então só a pergunta chega ao modelo. Ele nunca viu a política desta empresa, mas precisa responder alguma coisa e acaba inventando um valor que parece plausível.

Essa abordagem — recuperar o material certo, usá-lo para aumentar o texto enviado e depois gerar uma resposta a partir dele — se chama geração aumentada por recuperação, ou RAG, pela sigla em inglês. O nome vem de um artigo científico publicado em 2020.

Com RAG, a única coisa que muda é o texto enviado ao modelo. Os pesos do modelo — os números que guardam o que ele aprendeu — continuam iguais. Então, quando a política muda, basta atualizar os documentos; não é preciso treinar o modelo de novo. É assim que as provas diferenciam RAG do ajuste fino (fine-tuning), que treina mais o modelo com dados rotulados.

“Encontrar o trecho certo e anexar” na verdade esconde várias etapas. De modo geral, há o trabalho feito com antecedência, antes de qualquer pergunta, e o trabalho feito quando a pergunta chega.

Feito com antecedência

Etapa de indexação

  1. Dividir os documentos em blocos pequenosCap. 2
  2. Transformar o significado de cada bloco em números e guardarCap. 3

Feito quando a pergunta chega

Etapa de recuperação e geração

  1. Transformar a pergunta em números também e achar os blocos mais próximosCap. 4
  2. Enviar esses blocos ao modelo junto com a pergunta e obter a respostaCap. 5

Por que a primeira etapa é “dividir”? Não daria para anexar o manual de políticas inteiro? Não se ele tiver centenas de páginas.

02

Dividir os documentos em blocos (chunking)

Existe um limite para quanto texto um modelo consegue ler de uma vez, chamado janela de contexto. Os modelos de hoje têm janelas de contexto bem generosas, mas quanto mais longo o texto enviado, mais lenta a resposta e maior o custo. Isso porque a cobrança costuma ser feita pela quantidade de texto (tokens) que entra e sai.

E enviar mais não quer dizer que o modelo vai ler tudo direito. Em um estudo de 2023 de Liu e colegas, os modelos aproveitavam bem as informações do começo e do fim de um texto longo, mas muitas vezes deixavam passar o que estava enterrado no meio. Procurar uma linha em centenas de páginas é exatamente essa situação.

Por isso, você divide os documentos em pedaços pequenos com antecedência e, quando chega uma pergunta, envia só os poucos que importam. Cada pedaço se chama bloco (chunk), e dividir os documentos desse jeito se chama divisão em blocos (chunking).

A parte que confunde é o tamanho. Na cena abaixo, mude o tamanho do bloco. Para cada tamanho, ela mostra o que acontece quando o bloco mais próximo da pergunta é anexado.

Blocos enviados
Hospedagem: até R$ 600
Resposta
Até R$ 600 por noite. · Deixou passar a exceção

Tamanho do bloco: Uma frase (pequeno). Anexando o bloco mais próximo da pergunta

A regra ("até R$ 600") e a exceção ("exceto São Paulo e Rio de Janeiro: R$ 750") ficaram em blocos diferentes. A busca trouxe só o primeiro, que fala de hospedagem, e o modelo responde R$ 600.

Se você divide frase por frase, “Hospedagem: até R$ 600 por noite” e “Exceto São Paulo e Rio de Janeiro: R$ 750” vão para blocos diferentes. A busca traz só o primeiro, que fala de hospedagem, e o modelo responde R$ 600. Se for para o outro extremo e transformar o capítulo inteiro em um bloco só, a parte que você precisa está lá — mas as de refeições e transporte também. O texto fica longo e caro, e outros valores entram com facilidade na resposta.

Neste exemplo, um artigo por bloco funcionou melhor, porque a regra e a exceção estão no mesmo artigo. O tamanho certo depende do documento, mas a regra prática é a mesma: blocos grandes o bastante para conter tudo o que é preciso para responder a uma pergunta, e pequenos o bastante para deixar de fora o que não importa.

Jeitos de dividir

  • Tamanho fixo: cortar a cada tantos caracteres ou tokens (as unidades com que um modelo lê o texto). É o mais simples, mas pode cortar uma frase no meio.
  • Pela estrutura do documento: cortar nas divisões que o documento já tem, como títulos, artigos e parágrafos. Combina com documentos bem estruturados, como políticas e manuais.
  • Onde o significado muda: achar os pontos em que o significado muda bastante de uma frase para a outra e cortar ali. Isso se chama divisão semântica (semantic chunking).

Seja qual for o jeito de dividir, você pode repetir as últimas frases de um bloco no começo do próximo, para que nada que fique na fronteira se perca. Isso se chama sobreposição (overlap).

Se a questão disser… → escolha isto

  • “Divide os documentos em unidades menores”Divisão em blocos (chunking)
  • “Os blocos são tão pequenos que a regra e a exceção ficam separadas”Aumentar o tamanho do bloco
  • “Conteúdo irrelevante se mistura e os custos ficam altos”Diminuir o tamanho do bloco
  • “Frases ficam cortadas nas fronteiras dos blocos”Sobreposição entre blocos

Os blocos estão prontos. Agora, quando chega uma pergunta, é preciso escolher quais de milhares de blocos anexar. Só que o funcionário perguntou sobre “hotel”, e a política diz “hospedagem”. Uma busca que procura as mesmas palavras não vai achar esse artigo.

Publicidade

03

Transformar significado em coordenadas (embeddings)

Pense em um mapa. Transforme um endereço em dois números, latitude e longitude, e você consegue medir a distância entre dois lugares. Dá para fazer o mesmo com texto: transformar o significado em um conjunto de números e usá-los como coordenadas.

Transformar um texto em uma lista de números assim se chama gerar um embedding, e a lista de números resultante se chama vetor. Quem faz esse trabalho é um modelo de embeddings, treinado para que textos com significados parecidos recebam números parecidos. Por isso, mesmo que “hotel” e “hospedagem” sejam palavras diferentes, os significados são próximos, e as coordenadas também.

A cena abaixo mostra os blocos das políticas transformados em embeddings e colocados no espaço. A cor indica o tema. Blocos de viagem se juntam com blocos de viagem; blocos de férias, com blocos de férias. Ninguém disse ao modelo quais eram os temas: eles se agruparam sozinhos porque os significados são parecidos. O ponto verde-limão é a pergunta. Experimente trocá-la.

Pergunta

Pergunta: "Qual é o limite de hotel por noite em uma viagem a trabalho para São Paulo?"

A política nunca fala em "hotel": ela diz "hospedagem". Mesmo assim, a pergunta cai bem no meio do grupo "Viagens a trabalho", ao lado do bloco de hospedagem. O lugar de cada ponto depende do significado, não das palavras exatas.

Embeddings reais não têm dois ou três números, mas de centenas a milhares. Ninguém consegue desenhar um espaço assim, então a cena o reduz a três dimensões. Quanto mais números, mais nuances de significado eles conseguem captar.

Os embeddings dos blocos são todos calculados e guardados antes de qualquer pergunta. Um repositório que guarda vetores e permite buscá-los rapidamente se chama banco de dados vetorial (ou vector store). Quando uma pergunta chega, só ela ganha um embedding na hora.

A pergunta e os documentos precisam passar pelo mesmo modelo de embeddings. Cada modelo atribui coordenadas do seu jeito, então medir distâncias entre coordenadas de modelos diferentes não faz sentido. É como comparar coordenadas de dois mapas diferentes. É também por isso que, se você trocar de modelo de embeddings, precisa gerar de novo os embeddings de todos os documentos guardados.

Outra pegadinha comum nas provas: um modelo de embeddings não gera texto. Ele só transforma texto em números para que os textos possam ser comparados. Escrever a resposta é trabalho do LLM, na etapa seguinte.

Se a questão disser… → escolha isto

  • “Converte texto em vetores numéricos”Embeddings
  • “Encontra textos com significado parecido mesmo com palavras diferentes”Busca semântica com embeddings
  • “Usa modelos de embeddings diferentes para perguntas e documentos”Design errado: use o mesmo modelo
  • “O modelo de embeddings escreve a resposta”Opção errada: quem escreve a resposta é o LLM

Agora todos os blocos e a pergunta são pontos no mesmo espaço. Só falta encontrar os pontos de blocos mais próximos do ponto da pergunta.

Exclusivo Pro

Até aqui vai a parte gratuita

Os outros 5 capítulos estão disponíveis para assinantes Pro. Cada um continua com visuais em 3D e dicas de “se a questão disser…”, e no último capítulo você testa o que aprendeu.

  1. 04Busca vetorial
  2. 05Fundamentação (grounding)
  3. 06Base de conhecimento
  4. 07Avaliação
  5. 08RAG ou ajuste fino

PasslyExam

Você já leu o conceito. Agora teste com questões de prova

O PasslyExam oferece questões práticas originais, explicações e simulados completos baseados no guia oficial de cada certificação. As explicações mostram por que a opção certa está certa e por que as opções parecidas estão erradas. Cadastre-se e pratique de graça todos os dias.