MODULO 3.3

๐Ÿ“– RAG (Retrieval-Augmented Generation)

Combine busca em documentos com geracao: respostas precisas baseadas em dados reais.

6
Topicos
30
Minutos
Avancado
Nivel
Arquitetura
Tipo
1

๐Ÿ“– Conceito de RAG

RAG (Retrieval-Augmented Generation) e a tecnica de buscar informacoes relevantes em uma base de dados e injeta-las no contexto do LLM antes de gerar a resposta. Isso resolve duas limitacoes fundamentais dos modelos: o knowledge cutoff (dados desatualizados) e a alucinacao (inventar informacoes).

๐Ÿ—๏ธ Arquitetura Basica de RAG

1 Indexacao: Documentos sao divididos em chunks, convertidos em embeddings e armazenados em um vector store
2 Retrieval: A pergunta do usuario e convertida em embedding e usada para buscar os chunks mais similares
3 Augmentation: Os chunks recuperados sao injetados no prompt como contexto adicional
4 Generation: O LLM gera a resposta baseada no contexto recuperado, nao apenas no seu treinamento

๐ŸŽฏ Quando Usar RAG

  • โ€ข Dados proprietarios: Documentacao interna, manuais, FAQs, politicas da empresa
  • โ€ข Dados atualizados: Informacoes que mudam frequentemente (precos, estoque, regulamentacoes)
  • โ€ข Respostas citaveis: Quando o usuario precisa saber a fonte da informacao
  • โ€ข Dominio especializado: Conhecimento tecnico ou nicho que o modelo nao cobre bem
2

โœ‚๏ธ Chunking e Embeddings

A qualidade do RAG depende diretamente de como voce divide seus documentos (chunking) e como os converte em representacoes numericas (embeddings). Chunks mal dimensionados ou embeddings de baixa qualidade resultam em retrieval pobre.

โœ‚๏ธ

Estrategias de Chunking

  • Por tamanho fixo: 500-1000 tokens por chunk. Simples, mas pode cortar ideias no meio.
  • Por paragrafo/secao: Respeita a estrutura do documento. Melhor semanticamente, mas chunks de tamanhos variados.
  • Recursive: Tenta dividir por secao, depois paragrafo, depois sentenca. O mais usado na pratica.
  • Semantic: Usa embeddings para detectar mudancas de topico. Mais sofisticado, melhor qualidade.
๐Ÿ”ข

Modelos de Embedding

  • OpenAI text-embedding-3: 1536 ou 3072 dimensoes. Boa qualidade geral, facil de usar.
  • Cohere embed-v3: Otimizado para retrieval, suporta tipos de busca (search_document, search_query).
  • Open-source (BGE, E5): Executaveis localmente, sem custo por chamada, bom para dados sensiveis.

๐Ÿ’ก Overlap entre Chunks

Sempre use overlap de 10-20% entre chunks adjacentes. Isso garante que informacoes que estao na fronteira entre dois chunks nao sejam perdidas. Ex.: chunks de 500 tokens com overlap de 50-100 tokens.

3

๐Ÿ” Busca Semantica

A busca semantica encontra chunks relevantes com base no significado, nao apenas em palavras-chave. E o coracao do pipeline RAG โ€” se o retrieval falha em trazer os chunks certos, a geracao sera baseada em contexto errado.

๐Ÿ“ Como Funciona

  • โ€ข Cosine Similarity: Mede o angulo entre vetores de embedding. Quanto mais proximo de 1, mais similares os textos. A metrica mais usada em RAG.
  • โ€ข Top-K: Retorna os K chunks mais similares (tipicamente 3-10). Mais K = mais contexto mas mais ruido.
  • โ€ข Reranking: Apos o top-K, um segundo modelo reordena os resultados por relevancia. Melhora significativamente a precisao.

Busca Semantica Pura

  • โœ“ Entende sinonimos e parafraseos
  • โœ“ Funciona bem com perguntas naturais
  • โœ— Pode falhar com termos tecnicos exatos
  • โœ— Nao considera palavras-chave especificas

Hybrid Search (Semantica + BM25)

  • โœ“ Combina o melhor dos dois mundos
  • โœ“ Captura tanto significado quanto termos exatos
  • โœ“ Recomendada para producao
  • โœ— Mais complexa de implementar e tunar
4

๐Ÿ“ Prompt com Contexto Recuperado

A forma como voce injeta o contexto recuperado no prompt e tao importante quanto a qualidade do retrieval. O modelo precisa saber como usar os chunks, quando citar fontes e o que fazer quando a informacao nao esta disponivel.

๐Ÿ“‹ Template RAG Recomendado

Instrucoes:

Responda a pergunta do usuario usando APENAS as informacoes

fornecidas no contexto abaixo. Se a resposta nao estiver no

contexto, diga "Nao encontrei essa informacao na base de dados."

Cite a fonte usando [Fonte: nome_do_documento].

Contexto:

[Chunk 1 โ€” fonte: manual_produto.pdf, pagina 12]

[Chunk 2 โ€” fonte: faq_atualizado.md, secao 3]

[Chunk 3 โ€” fonte: politica_devolucao.pdf, pagina 2]

Pergunta do usuario:

{pergunta}

โš ๏ธ Grounding e Faithfulness

O maior risco em RAG e o modelo ignorar o contexto e responder com base no seu treinamento (unfaithful). Para maximizar faithfulness:

  • โ€ข Instrua explicitamente: "Use APENAS o contexto fornecido"
  • โ€ข Exija citacoes para cada afirmacao
  • โ€ข Inclua a instrucao de dizer "nao sei" quando a resposta nao esta no contexto
5

๐Ÿ“Š Avaliacao de RAG

Avaliar um pipeline RAG e mais complexo do que avaliar um prompt simples. Voce precisa medir tanto a qualidade do retrieval (os chunks certos foram encontrados?) quanto a qualidade da geracao (a resposta e fiel ao contexto?).

๐Ÿ“ Metricas Essenciais

Faithfulness (Fidelidade)

A resposta gerada e fiel ao contexto recuperado? Nao inventa informacoes? Metrica mais critica para confiabilidade.

Context Relevance

Os chunks recuperados sao relevantes para a pergunta? Chunks irrelevantes adicionam ruido e reduzem qualidade.

Answer Relevance

A resposta final responde a pergunta do usuario? Pode ser fiel ao contexto mas nao responder o que foi perguntado.

Context Recall

Todos os chunks relevantes foram recuperados? Mede se o retrieval esta encontrando toda a informacao necessaria.

๐Ÿ’ก Framework RAGAS

O RAGAS (Retrieval Augmented Generation Assessment) e o framework mais usado para avaliar pipelines RAG. Ele calcula automaticamente faithfulness, context relevance e answer relevance usando LLM-as-judge. Integra com LangChain e LlamaIndex.

6

๐Ÿงช Exercicio: Pipeline RAG Simples

Neste exercicio, voce vai construir um mini pipeline RAG com 5 documentos curtos. O objetivo e praticar cada etapa: chunking, indexacao, busca e geracao com contexto.

๐Ÿ“‹ Passo a Passo

  • โ€ข Passo 1: Crie 5 documentos curtos (200-400 palavras cada) sobre um tema de sua escolha (ex.: politica de RH da empresa ficticia)
  • โ€ข Passo 2: Divida cada documento em chunks de ~200 tokens com overlap de 50 tokens
  • โ€ข Passo 3: Gere embeddings para cada chunk (pode usar a API da OpenAI ou simular manualmente)
  • โ€ข Passo 4: Para 3 perguntas de teste, encontre os top-3 chunks mais relevantes
  • โ€ข Passo 5: Monte o prompt RAG com template + chunks recuperados e gere a resposta

๐ŸŽฏ Avaliacao do Exercicio

  • 1. A resposta e fiel ao contexto? (faithfulness)
  • 2. Os chunks certos foram recuperados? (context relevance)
  • 3. A resposta responde a pergunta? (answer relevance)
  • 4. Teste uma pergunta cuja resposta NAO esta nos documentos โ€” o modelo diz "nao sei"?

๐Ÿ“ Resumo do Modulo

โœ“
RAG resolve knowledge cutoff e alucinacao โ€” Busca dados reais e injeta no contexto antes de gerar
โœ“
Chunking e a base โ€” Estrategia de divisao e overlap impactam diretamente a qualidade
โœ“
Hybrid search e o padrao โ€” Combine busca semantica com BM25 para melhor retrieval
โœ“
Grounding e critico โ€” Instrua o modelo a usar apenas o contexto e citar fontes
โœ“
Avalie com RAGAS โ€” Faithfulness, context relevance, answer relevance e recall

Proximo Modulo:

3.4 โ€” Agentes de IA: construa agentes autonomos que planejam e executam