Generación Aumentada por Recuperación
Patrón arquitectónico que combina la recuperación de información de fuentes externas con la generación de texto por LLMs, reduciendo alucinaciones y manteniendo el conocimiento actualizado sin reentrenar el modelo.
¿Qué es?
RAG (Retrieval-Augmented Generation) es un patrón que mejora las respuestas de un LLM inyectando información relevante recuperada de fuentes externas directamente en el contexto del prompt. En lugar de depender solo del conocimiento almacenado en los pesos del modelo, el sistema busca documentos relevantes y los incluye como contexto antes de generar la respuesta.
El concepto fue formalizado por Lewis et al. en 2020, pero se ha convertido en el patrón dominante para aplicaciones empresariales de IA generativa.
¿Cómo funciona?
El flujo típico de RAG tiene tres etapas:
1. Indexación (offline)
Los documentos fuente se procesan y almacenan para búsqueda eficiente:
- Los documentos se dividen en fragmentos (chunks) de tamaño manejable
- Cada fragmento se convierte en un embedding — un vector numérico que captura su significado semántico
- Los vectores se almacenan en una base de datos vectorial o índice de búsqueda
2. Recuperación (runtime)
Cuando llega una consulta del usuario:
- La consulta se convierte en un embedding usando el mismo modelo
- Se buscan los fragmentos más similares por distancia vectorial (coseno, producto punto)
- Se seleccionan los top-K fragmentos más relevantes
3. Generación (runtime)
- Los fragmentos recuperados se inyectan en el prompt como contexto
- El LLM genera una respuesta basada en la consulta Y el contexto proporcionado
- Opcionalmente, se incluyen citas a las fuentes originales
Patrones avanzados
- RAG híbrido: combina búsqueda vectorial con búsqueda por palabras clave (BM25) para mejor cobertura
- RAG iterativo: el agente realiza múltiples rondas de recuperación, refinando la búsqueda según resultados intermedios
- RAG con reranking: un modelo secundario reordena los resultados de búsqueda por relevancia antes de pasarlos al LLM
- GraphRAG: utiliza grafos de conocimiento en lugar de (o además de) búsqueda vectorial
¿Por qué no solo fine-tuning?
| Aspecto | RAG | Fine-tuning |
|---|---|---|
| Actualización de datos | Inmediata (cambiar documentos) | Requiere reentrenar |
| Costo | Bajo (infraestructura de búsqueda) | Alto (GPU, datos etiquetados) |
| Trazabilidad | Alta (citas a fuentes) | Baja (conocimiento en pesos) |
| Alucinaciones | Reducidas (contexto factual) | Persisten |
| Conocimiento especializado | Bueno con buenos documentos | Mejor para estilo/formato |
En la práctica, muchos sistemas combinan ambos: fine-tuning para el estilo y formato, RAG para el conocimiento factual.
Conexión con llms.txt
El estándar llms.txt es un ejemplo práctico de RAG: proporciona a los agentes un documento estructurado que pueden recuperar y usar como contexto para responder preguntas sobre un sitio o proyecto.
Limitaciones
- Calidad del chunking: fragmentos mal divididos producen contexto irrelevante
- Límite de contexto: no se pueden inyectar documentos infinitos — la ventana de contexto del LLM es finita
- Latencia: la etapa de recuperación añade tiempo a cada consulta
- Garbage in, garbage out: si los documentos fuente tienen errores, el LLM los propagará con confianza
¿Por qué importa?
RAG es la técnica más práctica para dar a los LLMs acceso a información actualizada y específica del dominio sin fine-tuning. Combina la capacidad generativa del modelo con datos recuperados en tiempo real, reduciendo alucinaciones y manteniendo las respuestas fundamentadas en fuentes verificables.
Referencias
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — Lewis et al., 2020. El paper original que formalizó RAG.
- From Local to Global: A Graph RAG Approach — Microsoft Research, 2024. GraphRAG para consultas sobre corpus completos.
- RAGAS: Automated Evaluation of RAG — Es et al., 2023. Framework de evaluación para sistemas RAG.