MÓDULO 2.5 - TRILHA 2

📚 RAG (Retrieval-Augmented Generation) na Prática

Combine LLMs com bases de conhecimento para respostas precisas, atualizadas e livres de alucinações.

10
Tópicos
~3h
Duração
Avançado
Nível
💡

Conceito Central

A revolução do conhecimento contextualizado

"RAG = LLM + Sua Base de Conhecimento. Respostas fundamentadas em SEUS dados, não em dados genéricos."

O RAG (Retrieval-Augmented Generation) representa uma mudança fundamental na forma como interagimos com LLMs. Em vez de depender apenas do conhecimento estático embutido no modelo durante o treinamento, RAG permite que o modelo acesse e utilize informações externas em tempo real.

Isso resolve três problemas críticos: alucinações (informações inventadas), conhecimento desatualizado (modelos são congelados no tempo), e falta de especificidade (modelos não conhecem seus dados internos). Com RAG, você obtém respostas precisas, verificáveis e atualizadas.

📚

Tópicos do Módulo

1 📚 Introdução ao RAG

LLMs tradicionais têm um problema fundamental: seu conhecimento é estático. Eles são treinados em dados até uma data de corte e não sabem nada sobre eventos posteriores ou sobre seus dados internos específicos.

RAG (Retrieval-Augmented Generation) resolve isso adicionando uma etapa de recuperação de dados externos antes da geração. O fluxo é simples: receba uma pergunta → busque informações relevantes em sua base de conhecimento → passe essas informações como contexto para o LLM → gere resposta fundamentada.

O resultado? Redução drástica de alucinações, respostas sempre atualizadas e capacidade de responder com base em documentos proprietários que o modelo nunca viu durante o treinamento.

💡 Exemplo Prático

Sem RAG: "Qual foi o faturamento da empresa no Q3 de 2024?" → LLM alucina um número ou diz que não sabe.

Com RAG: Sistema busca o relatório financeiro Q3/2024, extrai dados relevantes, LLM responde com precisão: "Segundo o relatório financeiro, o faturamento foi de R$ 12,3M."

🎯 Ponto-Chave

RAG transforma LLMs genéricos em especialistas do seu domínio específico.

2 🏗️ Arquitetura de um Sistema RAG

Um sistema RAG completo possui dois componentes principais: o Recuperador (Retriever) e o Gerador (Generator).

Fluxo completo em 5 etapas:

  1. 1. Indexação: Documentos são divididos em chunks e convertidos em embeddings vetoriais, armazenados em um banco de dados vetorial.
  2. 2. Query: Usuário faz uma pergunta ao sistema.
  3. 3. Recuperação: A pergunta é convertida em embedding e busca-se os chunks mais similares no banco vetorial.
  4. 4. Aumento (Augmentation): Os chunks recuperados são adicionados como contexto ao prompt.
  5. 5. Geração: O LLM gera a resposta baseada no contexto fornecido.
🔍 Analogia

Pense em RAG como um estudante fazendo uma prova: em vez de confiar apenas na memória (LLM puro), ele pode consultar livros e anotações (Retriever) antes de escrever a resposta (Generator).

3 ✂️ Chunking e Embeddings

Chunking é o processo de dividir documentos grandes em pedaços menores e gerenciáveis. Por quê? LLMs têm limite de contexto (tokens) e chunks pequenos facilitam a recuperação precisa.

Estratégias de Chunking:

  • Por tamanho fixo: Dividir a cada N caracteres ou tokens (ex: 500 tokens com overlap de 50)
  • Por estrutura: Respeitar parágrafos, seções, capítulos
  • Semântico: Usar NLP para identificar mudanças de tópico

Embeddings são representações vetoriais que capturam o significado semântico do texto. Textos similares têm embeddings próximos no espaço vetorial.

Modelos populares: OpenAI text-embedding-ada-002, Sentence-Transformers (all-MiniLM-L6-v2, multi-qa-mpnet-base), Cohere Embed.

⚙️ Dica de Implementação

Use overlap entre chunks (ex: 10-20% do tamanho do chunk) para não perder contexto nas fronteiras. Chunk muito pequeno = perda de contexto. Chunk muito grande = informação irrelevante.

4 🗄️ Bancos de Dados Vetoriais

Bancos de dados vetoriais são otimizados para busca por similaridade usando ANN (Approximate Nearest Neighbor). Eles permitem encontrar os K vetores mais próximos de uma query em milissegundos, mesmo com milhões de documentos.

Principais opções:

☁️ Pinecone

Cloud-native, escalável, fácil de usar. Ótimo para começar e produção.

🔷 Weaviate

Open-source, GraphQL API, suporta módulos de ML integrados.

🎨 Chroma

Leve, open-source, perfeito para desenvolvimento e prototipagem.

⚡ FAISS

Facebook AI, biblioteca C++/Python. Ultra-rápido, requer mais setup.

📏 Métricas de Similaridade
  • Cosseno: Mede ângulo entre vetores (mais comum para texto)
  • Euclidiana: Distância em linha reta
  • Dot Product: Produto escalar (usado por OpenAI)
5 🧠 O Papel do LLM no RAG

No RAG, o LLM recebe o contexto recuperado e o sintetiza em uma resposta fluente e coerente. Ele NÃO precisa "saber" tudo - apenas saber compreender e sintetizar o que é fornecido.

Template típico de prompt RAG:

Você é um assistente especializado. Use APENAS as informações do contexto abaixo para responder à pergunta do usuário. Se a resposta não estiver no contexto, diga claramente "Não encontrei essa informação nos documentos fornecidos." CONTEXTO: {chunks_recuperados} PERGUNTA DO USUÁRIO: {user_query} RESPOSTA:
🎯 Pontos Críticos
  • • Instrua explicitamente o LLM a se limitar ao contexto fornecido
  • • Peça citações ou referências quando possível
  • • Configure temperatura baixa (0.0-0.3) para respostas mais determinísticas
6 📏 Avaliando Qualidade do RAG

Avaliar a qualidade de um sistema RAG é essencial para garantir que ele está funcionando corretamente e melhorando ao longo do tempo.

Métricas principais:

  • Hit Rate (Recall@K): Em quantos % dos casos o documento correto está nos top K resultados?
  • MRR (Mean Reciprocal Rank): Em que posição, em média, aparece o documento correto?
  • Faithfulness: A resposta está fundamentada no contexto ou alucinou?
  • Answer Relevancy: A resposta realmente responde à pergunta?
🧪 Frameworks de Avaliação
  • RAGAs: Framework completo para avaliar RAG (Context Precision, Context Recall, Faithfulness, Answer Relevancy)
  • ARES: Automated RAG Evaluation System usando LLMs como juízes
  • TruLens: Observabilidade e avaliação end-to-end
💡 Dica

Crie um conjunto de teste com perguntas e respostas esperadas (golden dataset). Avalie periodicamente seu sistema contra esse conjunto.

7 ⚡ RAG Avançado

RAG básico funciona, mas técnicas avançadas levam a qualidade a outro nível:

🔀 Hybrid Search

Combina busca vetorial (semântica) com busca lexical (BM25). Captura tanto significado quanto correspondências exatas de palavras-chave.

🎯 Re-ranking

Após recuperação inicial, um modelo de re-ranking (ex: Cohere Rerank, Cross-Encoder) reordena resultados para melhor precisão.

🔄 Query Transformations

Reformule ou expanda a query original. Técnicas: HyDE (Hypothetical Document Embeddings), Query Expansion, Step-back Prompting.

🗜️ Context Compression

Use um LLM para resumir/filtrar chunks recuperados antes de passar para o LLM final. Reduz custos e melhora precisão.

🚀 Resultado

Essas técnicas podem aumentar o hit rate de ~60% (RAG básico) para >85% (RAG avançado).

8 🔨 Construindo seu Primeiro App RAG

Vamos construir um sistema RAG básico usando LangChain + OpenAI + Chroma.

📝 Código Completo (Python)
from langchain.document_loaders import DirectoryLoader, TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chat_models import ChatOpenAI from langchain.chains import RetrievalQA # 1. Carregar documentos loader = DirectoryLoader('./docs', glob="**/*.txt", loader_cls=TextLoader) documents = loader.load() # 2. Chunking text_splitter = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=50 ) chunks = text_splitter.split_documents(documents) # 3. Criar embeddings e armazenar no Chroma embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents(chunks, embeddings) # 4. Criar retriever retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) # 5. Criar chain RAG llm = ChatOpenAI(model="gpt-4", temperature=0) qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, return_source_documents=True ) # 6. Fazer pergunta result = qa_chain({"query": "Qual é a política de férias da empresa?"}) print(result['result']) print("Fontes:", [doc.metadata for doc in result['source_documents']])
🎯 O que acontece aqui?
  1. 1. Carrega todos os .txt da pasta ./docs
  2. 2. Divide em chunks de 500 chars com overlap de 50
  3. 3. Cria embeddings e armazena no Chroma (local)
  4. 4. Quando você faz uma pergunta, busca os 3 chunks mais relevantes
  5. 5. Passa os chunks como contexto para o GPT-4
  6. 6. Retorna resposta + documentos fonte
9 🌍 Casos de Uso no Mundo Real
💬 Chatbots de Suporte

Responda dúvidas de clientes com base em documentação, FAQs e base de conhecimento interna.

Ex: Intercom, Zendesk AI

🔍 Pesquisa Interna

Encontre informações em milhares de documentos corporativos instantaneamente.

Ex: Glean, Notion AI

📄 Análise de Documentos

Extraia insights de contratos, relatórios financeiros, documentos jurídicos.

Ex: Harvey AI (jurídico)

💻 Assistentes de Programação

Responda dúvidas sobre sua codebase específica, padrões e arquitetura.

Ex: GitHub Copilot Chat com RAG

📊 Estatística Impressionante

Empresas que implementam RAG relatam redução de 70-90% em alucinações e aumento de 3-5x na satisfação do usuário comparado a LLMs puros.

10 🚀 O Futuro do RAG

O RAG está evoluindo rapidamente. Estas são as tendências mais promissoras:

🎨 RAG Multimodal

Indexar e recuperar não apenas texto, mas imagens, vídeos, áudio. Modelos como GPT-4V e Gemini já suportam entrada multimodal.

🔄 Self-Correcting RAG

Sistemas que detectam quando a resposta está incorreta ou incompleta e automaticamente refinam a busca e tentam novamente.

🤖 RAG + Agentes

Integração de RAG com sistemas de agentes que podem decidir quando e como usar retrieval, executar ações e iterar.

⚡ RAG em Edge

Modelos menores e mais eficientes permitindo RAG rodar localmente em dispositivos, garantindo privacidade total.

🔮 Previsão

Até 2026, RAG será tão fundamental quanto APIs REST são hoje. Todo sistema que usa LLM usará alguma forma de retrieval.

✅ Resumo do Módulo

RAG = LLM + Base de Conhecimento Externa
Fluxo: Indexação → Recuperação → Aumento → Geração
Chunking e embeddings são fundamentais
Bancos vetoriais permitem busca semântica
Avaliação contínua com RAGAs, ARES
Técnicas avançadas: Hybrid, Re-ranking, Compression
LangChain facilita implementação
Casos de uso: Suporte, pesquisa, análise
Futuro: Multimodal, Self-Correcting, Agentes
RAG reduz alucinações em 70-90%
Anterior: Módulo 2.4 Próximo: Módulo 2.6