🔍 Cap 07: RAG Avançado: Busca Híbrida (BM25 + Vetorial), Re-ranking com Cross-Encoders e Compressão de Contexto
🗺️ Mapa Arquitetural do RAG Avançado
flowchart TD
QUERY["Pergunta do Usuário (Query)"]
--> SPLIT{"Disparo Simultâneo"}
SPLIT --> DENSE["Busca Densa (Vetorial / Bi-Encoder / HNSW)\nCaptura similaridade semântica e sinônimos"]
SPLIT --> SPARSE["Busca Dispersa (Léxica / BM25)\nCaptura correspondência exata de termos, siglas e IDs"]
DENSE --> RRF["Fusão por Ranqueamento Recíproco (RRF - Reciprocal Rank Fusion)"]
SPARSE --> RRF
RRF --> CANDIDATOS["Top-50 Documentos Candidatos"]
CANDIDATOS --> RERANKER["Cross-Encoder / Re-Ranker (Cohere / BGE-Reranker)\nAvalia atenção cruzada (Query x Doc) em pares"]
RERANKER --> TOP["Top-3 Chunks Mais Relevantes"]
TOP --> COMPRESS["Compressão de Contexto / Extrator de Sentenças"]
COMPRESS --> PROMPT["Prompt Otimizado para o LLM Gerador ⚡"]
style QUERY fill:#ede7f6,stroke:#512da8,stroke-width:2px
style DENSE fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style SPARSE fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style RRF fill:#fff9c4,stroke:#fbc02d,stroke-width:2px
style RERANKER fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style COMPRESS fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style PROMPT fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
📖 Fundamentos e Aplicação
O RAG Naive (básico) sofre com duas limitações críticas:
- Perda de Palavras-Chave Exatas: A busca vetorial por cosseno frequentemente falha em recuperar códigos específicos de produto, números de série, CPF/CNPJ ou nomes próprios raros.
- Baixa Precisão dos Top-K: O Bi-Encoder calcula embeddings separadamente para o documento e a pergunta, sacrificando nuances relacionais.
O RAG Avançado soluciona isso combinando:
- Busca Híbrida: União de BM25 (esparsa/lexical) com Embeddings Densos.
- Fusão com RRF (Reciprocal Rank Fusion): Fórmula que equaliza ranques independentemente das escalas de score.
- Cross-Encoder Re-Ranking: Um modelo neural pesado que analisa a relação completa entre o par
(Pergunta, Trecho)para reordenar apenas o top-N recuperado, elevando a precisão sem encarecer a latência total.
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Tópico | Ver Slides | Fazer Quiz | Ver Código | Praticar |
🧭 Navegação do Capítulo: ⬅️ Capítulo Anterior · 📚 Sumário do Módulo · ➡️ Próximo Capítulo