Patrones RAG
Patrones RAG (del inglés RAG Patterns) son un conjunto de enfoques arquitectónicos y metodológicos para construir sistemas de Retrieval-Augmented Generation (RAG). Estos patrones están diseñados para resolver problemas fundamentales de los modelos de lenguaje grandes (LLM), como las alucinaciones, la obsolescencia del conocimiento y la falta de especificidad de dominio, mediante la integración de los LLM con fuentes de datos externas y accesibles dinámicamente[1]. La evolución de RAG ha pasado de simples pipelines lineales a sistemas modulares y agénticos complejos[2].
Patrones RAG principales
Con el desarrollo de la tecnología, han surgido numerosos patrones RAG, cada uno de los cuales resuelve tareas específicas y presenta sus propias compensaciones entre calidad, velocidad y costo.
- Classic RAG (RAG clásico) — el enfoque básico donde la consulta del usuario se vectoriza para buscar fragmentos (chunks) relevantes en una base de datos vectorial; los chunks encontrados se envían al LLM junto con la pregunta para generar una respuesta[1].
- Multi-Query RAG (Consultas múltiples) — el LLM genera varias variantes parafraseadas o refinadas de la consulta original; la búsqueda se realiza sobre todas las variantes y los resultados se combinan, lo que aumenta la exhaustividad (recall)[3].
- HyDE (Hypothetical Document Expansion) — para superar la "brecha semántica" entre una consulta corta y documentos largos. El LLM primero genera un documento de respuesta "hipotético", y luego su embedding se utiliza para la búsqueda, lo que a menudo mejora la calidad de la recuperación[4].
- Hybrid Retrieval (Búsqueda híbrida) — una combinación de búsqueda semántica (vectorial) y léxica (BM25). Los esquemas híbridos se han convertido en el estándar para los sistemas de producción: la búsqueda vectorial cubre las coincidencias semánticas, mientras que BM25 encuentra términos exactos, ID o acrónimos; los resultados se combinan mediante fusión (fusion)[5][6][7].
- Re-ranking (Reclasificación) — un proceso de dos etapas: un recuperador rápido devuelve un conjunto de candidatos (por ejemplo, los 100 mejores), luego un cross-encoder (u otro reclasificador) recalcula la relevancia y selecciona los mejores (por ejemplo, los 5 mejores) para el LLM[8][9].
- Query Routing (Enrutamiento de consultas) — en sistemas con múltiples fuentes de datos heterogéneas (diferentes índices, bases de datos, API), la consulta se dirige a la mejor fuente mediante un enrutador (un selector LLM o un clasificador); incluye estrategias de fallback[10].
- Agentic/Web RAG (RAG agéntico) — el LLM actúa como un agente: descompone preguntas complejas, planifica iteraciones y utiliza herramientas (búsqueda vectorial, búsqueda web) con retroalimentación. Una implementación típica es el paradigma ReAct[11]; para la recopilación orientada a la web y la citación obligatoria, véase WebGPT[12].
Paradigmas relacionados y en desarrollo
- GraphRAG (RAG de grafos) — utiliza un grafo de conocimiento como fuente y mecanismo para seleccionar el contexto; la búsqueda se realiza a través de la estructura de relaciones entre entidades y el texto, mejorando la interpretabilidad y la calidad en preguntas de múltiples saltos (multi-hop)[13][14].
- MM-RAG (RAG multimodal) — trabaja con texto y fuentes visuales (escaneos, diagramas, tablas). Ejemplo: VisRAG demuestra la recuperación y generación orientada a VLM en documentos multimodales[15].
- Empaquetado y manejo del contexto — métodos para integrar los chunks encontrados en el prompt: Stuff, Map-Reduce, Refine, Tree-of-Chunks (RAPTOR)[16].
Tabla comparativa de patrones
| Patrón | Cuándo aplicar | Impacto en la calidad | Costo / Latencia | Riesgos y limitaciones |
|---|---|---|---|---|
| Classic RAG | PoC y Q&A simples sobre una base de datos homogénea | Nivel básico; depende en gran medida de los embeddings[1] | Bajo | Sensibilidad a la redacción; riesgo de contexto irrelevante |
| Hybrid Retrieval | En la mayoría de los escenarios de producción; muchos códigos, acrónimos o ID | Aumenta la exhaustividad (recall); cubre términos exactos[5][6][7] | Bajo/Medio | Ajuste de los pesos de fusión; dos índices |
| Re-ranking | Crítico cuando la alta precisión es importante | Aumento significativo de la precisión (precision) en el top-k[8][9] | Medio/Alto | Latencia/costo adicional |
| Multi-Query | Consultas cortas o multifacéticas | Aumenta el recall[3] | Medio | Paráfrasis redundantes o ruidosas |
| HyDE | Consultas cortas/ambiguas con una gran "brecha semántica" | Mejora la calidad de la recuperación zero-shot[4] | Medio | Depende de la calidad del texto "hipotético" |
| Query Routing | Múltiples fuentes (base de documentos, SQL, API, web) | Aumenta la relevancia al elegir la fuente correcta[10] | Medio | Error de enrutamiento = fallo en la búsqueda |
| Agentic/Web RAG | Consultas complejas, de investigación y de varios pasos | Resuelve tareas más allá de un pipeline lineal[11][12] | Alto | Complejidad, riesgo de bucles infinitos; se necesitan barandillas (guardrails) |
Implementación práctica y arquitectura
Fases de implementación
- Proof of Concept (PoC): Comience con Classic RAG en un conjunto de datos limitado pero representativo para verificar la calidad de los embeddings y la recuperación básica[1].
- Minimum Viable Product (MVP): Implemente Hybrid Retrieval y Re-ranking como la mejor relación "esfuerzo/efecto"[5][8].
- Production: Agregue transformaciones de consulta (HyDE, Multi-Query) y, si es necesario, Query Routing; configure la observabilidad (registro de recuperación/reclasificación/respuestas) y pruebas A/B[3][10].
Componentes clave
- Chunking (Fragmentación): Uno de los factores más críticos para la calidad. Un tamaño fijo ingenuo a menudo rompe unidades semánticas. Se recomiendan divisores orientados a la estructura (basados en el marcado) o recursivos (párrafo → oración → palabra)[17][18].
- Embeddings y metadatos: Almacene con cada chunk el document_id, la página/sección, el título y las fechas; esto es necesario para filtrar y citar correctamente las fuentes.
- Recuperación híbrida y reclasificación: Utilice BM25+vector con fusión (o RRF), y luego un cross-encoder para reclasificar un pequeño grupo de candidatos[5][6][8].
- Empaquetado del contexto: Elija Map-Reduce, Refine o Tree-of-Chunks para corpus extensos[16][18].
Errores comunes (antipatrones)
- Solo búsqueda vectorial sin BM25 → fallos en códigos, ID y acrónimos[5][7].
- Chunk demasiado grande o pequeño → pérdida de contexto o "dilución" del embedding[17].
- Ausencia de reclasificación en producción → el LLM recibe un contexto ruidoso[8].
- Falta de observabilidad y seguimiento de fuentes → imposible analizar las causas de los errores (ver evaluación de RAG).
Evaluación de calidad y métricas
La evaluación se realiza a nivel de recuperación (offline) y de extremo a extremo (generación).
Métricas del recuperador
- Hit Rate, Recall@k, MRR — cobertura y posición de los documentos relevantes.
- Context Precision & Recall — en qué medida el contexto recuperado está libre de "basura" y cubre todo lo necesario (implementado en RAGAS)[19].
Métricas del generador (de extremo a extremo)
- Faithfulness / Groundedness (Fidelidad / Fundamentación) — correspondencia de la respuesta con el contexto proporcionado.
- Answer Relevancy (Relevancia de la respuesta) — correspondencia con la pregunta original.
Para automatizar las métricas, se utilizan frameworks de código abierto: RAGAS, TruLens (la tríada RAG: context relevance, groundedness, answer relevance), DeepEval[20][21].
Véase también
Referencias
- ↑ 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 y 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 y 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
Referencias
- 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].