Padrões RAG
Padrões RAG (do inglês RAG Patterns) — é um conjunto de abordagens arquitetônicas e metodológicas para a construção de sistemas Retrieval-Augmented Generation (RAG). Esses padrões são projetados para resolver problemas fundamentais dos grandes modelos de linguagem (LLMs), como alucinações, conhecimento desatualizado e falta de especificidade de domínio, por meio da integração de LLMs com fontes de dados externas e dinamicamente acessíveis[1]. A evolução do RAG passou de pipelines lineares simples para sistemas modulares e agênticos complexos[2].
Padrões RAG Principais
Com o desenvolvimento da tecnologia, surgiram diversos padrões RAG, cada um resolvendo tarefas específicas e apresentando seus próprios trade-offs entre qualidade, velocidade e custo.
- Classic RAG (RAG Clássico) — abordagem básica onde a consulta do usuário é vetorizada para buscar fragmentos (chunks) relevantes em um banco de dados vetorial; os chunks encontrados são fornecidos ao LLM junto com a pergunta para gerar a resposta[1].
- Multi‑Query RAG (Múltiplas Consultas) — o LLM gera várias versões reformuladas/refinadas da consulta original; a busca é realizada em todas as versões e os resultados são combinados, o que aumenta a revocação (recall)[3].
- HyDE (Hypothetical Document Expansion) — para superar a "lacuna semântica" entre uma consulta curta e documentos longos. O LLM primeiro gera um documento de resposta "hipotético", e então seu embedding é usado para a busca, o que frequentemente melhora a qualidade da recuperação[4].
- Hybrid Retrieval (Busca Híbrida) — combinação de busca semântica (vetorial) e lexical (BM25). Esquemas híbridos tornaram-se o padrão para sistemas de produção: a busca vetorial cobre correspondências de significado, enquanto o BM25 encontra termos exatos/IDs/acrônimos; os resultados são combinados por fusão[5][6][7].
- Re‑ranking (Reclassificação Adicional) — processo de duas etapas: um recuperador (retriever) rápido retorna um conjunto de candidatos (ex., top‑100), e em seguida, um cross-encoder (ou outro reranker) recalcula a relevância e seleciona os melhores (ex., top‑5) para o LLM[8][9].
- Query Routing (Roteamento de Consultas) — em sistemas com múltiplas fontes de dados heterogêneas (diferentes índices/BDs/APIs), a consulta é direcionada para a melhor fonte usando um roteador (um seletor de LLM ou um classificador); inclui estratégias de fallback[10].
- Agentic/Web RAG (RAG Agêntico) — o LLM atua como um agente: decompõe perguntas complexas, planeja iterações e usa ferramentas (busca vetorial, busca na web) com feedback. Uma implementação típica é o paradigma ReAct[11]; para coleta de dados orientada para a web e citação obrigatória, consulte WebGPT[12].
Paradigmas Relacionados e em Desenvolvimento
- GraphRAG (RAG de Grafo) — utiliza um grafo de conhecimento como fonte e mecanismo para selecionar o contexto; a busca percorre a estrutura de conexões entre entidades e o texto, aumentando a interpretabilidade e a qualidade em perguntas multi-hop[13][14].
- MM‑RAG (RAG Multimodal) — trabalha com fontes textuais e visuais (scans/diagramas/tabelas). Exemplo: VisRAG demonstra recuperação e geração orientadas por VLM em documentos multimodais[15].
- Empacotamento e Manuseio de Contexto — métodos para integrar os chunks encontrados no prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].
Tabela Comparativa de Padrões
| Padrão | Quando aplicar | Impacto na qualidade | Custo / Latência | Riscos e limitações |
|---|---|---|---|---|
| Classic RAG | PoC e Q&A simples sobre uma base de dados homogênea | Nível básico; depende muito dos embeddings[1] | Baixo | Sensibilidade à formulação da consulta; risco de contexto irrelevante |
| Hybrid Retrieval | Na maioria dos cenários de produção; muitos códigos/acrônimos/IDs | Aumenta a revocação; cobre termos exatos[5][6][7] | Baixo/Médio | Ajuste dos pesos de fusão; dois índices |
| Re‑ranking | Crítico quando a alta precisão é importante | Aumento significativo na precisão (precision) no top-k[8][9] | Médio/Alto | Latência/custo adicional |
| Multi‑Query | Consultas curtas/multifacetadas | Aumenta o recall[3] | Médio | Reformulações redundantes/ruidosas |
| HyDE | Consultas curtas/ambíguas com grande "lacuna semântica" | Melhora a qualidade da recuperação zero‑shot[4] | Médio | Depende da qualidade do texto "hipotético" |
| Query Routing | Múltiplas fontes (base de documentos, SQL, API, web) | Aumenta a relevância ao selecionar a fonte correta[10] | Médio | Erro de roteamento = falha na busca |
| Agentic/Web RAG | Consultas complexas, de pesquisa, multi-etapas | Resolve tarefas além de um pipeline linear[11][12] | Alto | Complexidade, risco de loops; requer guardrails |
Implementação Prática e Arquitetura
Etapas de Implementação
- Proof of Concept (PoC): Comece com o Classic RAG em um conjunto de dados limitado, mas representativo, para verificar a qualidade dos embeddings e da recuperação básica[1].
- Minimum Viable Product (MVP): Implemente Hybrid Retrieval e Re‑ranking como a melhor relação "esforço/efeito"[5][8].
- Produção (Production): Adicione transformações de consulta (HyDE, Multi‑Query) e, se necessário, Query Routing; configure a observabilidade (logging de recuperação/reclassificação/respostas) e testes A/B[3][10].
Componentes Chave
- Chunking (Fragmentação): Um dos fatores mais críticos para a qualidade. O tamanho fixo ingênuo muitas vezes quebra unidades de significado. Divisores orientados por estrutura (baseados em marcação) ou recursivos (parágrafo → frase → palavra) são recomendados[17][18].
- Embeddings e Metadados: Armazene com cada chunk o document_id, página/seção, título, datas; isso é necessário para filtragem e citação correta das fontes.
- Busca Híbrida e Re-ranking: Use BM25+vetor com fusão (ou RRF) e, em seguida, um cross-encoder para reclassificar um pequeno conjunto de candidatos[5][6][8].
- Empacotamento de Contexto: Escolha Map‑Reduce, Refine ou Tree‑of‑Chunks para corpus longos[16][18].
Erros Comuns (Antipadrões)
- Apenas busca vetorial sem BM25 → falhas em códigos/IDs/acrônimos[5][7].
- Chunk muito grande/pequeno → perda de contexto ou "diluição" do embedding[17].
- Ausência de re-ranking em produção → o LLM recebe contexto ruidoso[8].
- Falta de observabilidade e rastreamento de fontes → impossível analisar as causas dos erros (ver avaliação de RAG).
Avaliação de Qualidade e Métricas
A avaliação é realizada no nível da recuperação (offline) e de ponta a ponta (geração).
Métricas do Recuperador (Retriever)
- Hit Rate, Recall@k, MRR — cobertura e posição dos documentos relevantes.
- Context Precision & Recall — o quão livre de "lixo" está o contexto recuperado e se ele cobre tudo o que é necessário (implementado em RAGAS)[19].
Métricas do Gerador (End-to-End)
- Faithfulness / Groundedness — conformidade da resposta com o contexto fornecido.
- Answer Relevancy (Relevância da Resposta) — correspondência com a pergunta original.
Para automatizar as métricas, são utilizados frameworks de código aberto: RAGAS, TruLens (tríade RAG: relevância do contexto, fundamentação e relevância da resposta), DeepEval[20][21].
Ver também
- Retrieval-Augmented Generation (RAG)
- Bancos de dados vetoriais
- Embedding
- Agente de IA
- GraphRAG
- MM-RAG
- Avaliação e benchmarks de LLMs
Literatura
- Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
- Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
- Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE). ACL 2023. ACL Anthology; arXiv:2212.10496.
- Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
- Weaviate Docs. Hybrid search (BM25+Vector). [1].
- Qdrant Docs. Hybrid Queries. [2].
- Milvus Docs. Full‑Text Search / Hybrid Search. [3] / [4].
- LangChain Docs. MultiQueryRetriever. [5].
- Cohere Docs. Rerank — best practices. [6].
- LlamaIndex Docs. Routing (query routers/selectors). [7].
- Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.
- Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
- Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. (2024). [8].
- Microsoft Research. Project GraphRAG. (2024). [9].
- Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594.
- Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
- Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). [10].
- TruLens Docs. RAG Triad. [11].
- DeepEval (GitHub). The LLM Evaluation Framework. [12].
- LangChain Docs. RecursiveCharacterTextSplitter. [13].
- LlamaIndex Docs. HierarchicalNodeParser; Response Synthesis (Tree/Refine). [14]; [15].
Notas
- ↑ 1.0 1.1 1.2 1.3 Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
- ↑ Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
- ↑ 3.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
- ↑ 4.0 4.1 Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels. ACL 2023. arXiv:2212.10496; ACL Anthology: 2023.acl‑long.99.
- ↑ 5.0 5.1 5.2 5.3 5.4 Weaviate Docs. Hybrid search (BM25+Vector). https://docs.weaviate.io/weaviate/concepts/search/hybrid-search
- ↑ 6.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
- ↑ 7.0 7.1 7.2 Milvus Docs. Full‑Text Search e Hybrid Search. https://milvus.io/docs/full-text-search.md; https://milvus.io/docs/hybrid_search_with_milvus.md
- ↑ 8.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
- ↑ 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
- ↑ 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
- ↑ 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
- ↑ 12.0 12.1 Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
- ↑ Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. 2024. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
- ↑ Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
- ↑ Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
- ↑ 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
- ↑ 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
- ↑ 18.0 18.1 LlamaIndex Docs. HierarchicalNodeParser e Tree Summarization. https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html; https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/
- ↑ Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
- ↑ TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
- ↑ DeepEval (GitHub). https://github.com/confident-ai/deepeval