AI Engineering - Capítulo 6 - RAG y Agentes
A continuación, se presenta un resumen detallado de los puntos principales del texto, respetando estrictamente la cronología y las secciones originales de la autora:
Capítulo 6: RAG y Agentes
Para resolver tareas, los modelos requieren tanto instrucciones como contexto. La generación aumentada por recuperación (RAG) y los agentes son dos patrones dominantes usados para construir ese contexto y ampliar las capacidades del modelo. Mientras RAG recupera información externa relevante, el patrón agéntico permite a los modelos interactuar con el mundo mediante herramientas.
RAG (Generación Aumentada por Recuperación)
RAG es una técnica que mejora la generación al obtener información relevante de fuentes de memoria externa, como bases de datos o internet. Introducida formalmente en 2020 por Lewis et al., RAG introduce solo la información más relevante en el modelo, ayudando a generar respuestas detalladas y reducir alucinaciones. La construcción de contexto en modelos fundacionales es análoga a la ingeniería de características en el aprendizaje automático clásico. Aunque las ventanas de contexto de los modelos se expanden, RAG sigue siendo esencial porque los datos crecen continuamente y los contextos largos pueden reducir la eficiencia, el enfoque y aumentar los costos.
Arquitectura RAG
Un sistema RAG se apoya en un recuperador (retriever) para obtener información externa y un generador para formular una respuesta basada en el contexto recuperado. Para no saturar la ventana de contexto del modelo, los documentos se dividen en fragmentos manejables (chunks) antes de indexarse y consultarse.
Algoritmos de Recuperación
Los algoritmos de recuperación clasifican documentos según su relevancia respecto a una consulta.
-
Recuperación dispersa (sparse): También conocida como recuperación léxica, se basa en palabras clave y vectores one-hot dispersos. Para gestionar términos informativos, utiliza la Frecuencia de Términos (TF) y la Frecuencia Inversa de Documentos (IDF). Los sistemas más comunes incluyen Elasticsearch (que usa un índice invertido) y BM25 (que normaliza la frecuencia de términos por la longitud del documento). También requiere tokenización para manejar n-gramas y palabras vacías (stop words).
-
Recuperación densa (dense): También conocida como recuperación semántica, mapea documentos según su significado usando vectores densos. Requiere un modelo de embeddings para convertir los datos y un recuperador para obtener los k fragmentos más cercanos desde una base de datos vectorial. Dado que la búsqueda exacta de k vecinos más cercanos (k-NN) es computacionalmente costosa, se emplean algoritmos de Vecinos Más Cercanos Aproximados (ANN), como LSH, HNSW, Cuantización por Producto, IVF y Annoy.
-
Comparando algoritmos: La recuperación dispersa es generalmente más rápida, económica y funciona bien por defecto, mientras que la recuperación densa captura la semántica y puede ajustarse finamente, pero es más lenta y costosa. La calidad se evalúa con métricas como precisión de contexto, exhaustividad de contexto, NDCG, MAP y MRR, junto con benchmarks de embeddings como MTEB.
Combinando Algoritmos: Búsqueda Híbrida
Combinar la recuperación dispersa y la densa se denomina búsqueda híbrida (hybrid search). Pueden ejecutarse secuencialmente (p. ej., búsqueda por palabras clave seguida de reordenación vectorial) o en paralelo, combinando resultados con algoritmos como la fusión de rango recíproco (RRF, Reciprocal Rank Fusion).
Optimización de la Recuperación
-
Estrategia de fragmentación (chunking): Los documentos pueden dividirse uniformemente por caracteres, palabras, oraciones, de forma recursiva, o por tokens del modelo. Los fragmentos superpuestos (overlapping) evitan la pérdida de información crítica en los límites. Los fragmentos más pequeños permiten mayor diversidad de información, pero arriesgan perder el contexto circundante e incurren en mayor sobrecarga computacional.
-
Reordenación (reranking): Las clasificaciones iniciales del recuperador pueden reordenarse mediante un mecanismo más preciso, o ponderarse fuertemente por tiempo para consultas sensibles al tiempo.
-
Reformulación de consultas (query rewriting): Las consultas de usuario a menudo son ambiguas sin contexto; los modelos de IA pueden reformularlas para reflejar la intención real del usuario antes de que ocurra la recuperación.
-
Recuperación contextual (contextual retrieval): Los fragmentos pueden enriquecerse con metadatos, preguntas relacionadas o resúmenes contextuales cortos generados por IA del documento original para mejorar la precisión del recuperador.
Evaluación de Soluciones de Recuperación
Las evaluaciones de soluciones de recuperación deben considerar los mecanismos soportados, la escalabilidad, el tiempo de indexación, la latencia de consulta y las estructuras de precios.
RAG Más Allá del Texto
-
RAG multimodal: Los datos externos pueden incluir imágenes, audio y vídeo. Usando modelos como CLIP, se generan y almacenan juntos embeddings de texto e imagen, permitiendo al recuperador obtener multimedia relevante basándose en la similitud semántica con consultas de texto.
-
RAG con datos tabulares: Para datos estructurados como tablas SQL, el flujo de trabajo utiliza análisis semántico (semantic parsing) donde el sistema ejecuta un paso de Texto-a-SQL, ejecuta la consulta y genera una respuesta basada en el resultado devuelto.
Agentes
Los agentes inteligentes se definen por el entorno en el que operan y las acciones que pueden realizar. Un agente utiliza la IA como cerebro para procesar tareas, planificar acciones y determinar si se han alcanzado los objetivos. Las tareas agénticas requieren modelos potentes porque las operaciones de múltiples pasos amplifican las tasas de error, y los agentes que interactúan con el mundo tienen mayores consecuencias.
Herramientas
Las herramientas externas otorgan a los modelos nuevas capacidades:
-
Aumento de conocimiento: Herramientas como búsquedas internas, recuperación de Slack o navegación web evitan que los modelos dependan únicamente de datos de entrenamiento desactualizados.
-
Extensión de capacidades: Los modelos pueden superar limitaciones usando herramientas como calculadoras, traductores, intérpretes de código o generadores multimodales. Los intérpretes de código, sin embargo, introducen riesgos de inyección de código.
-
Acciones de escritura (write actions): Las herramientas de escritura permiten a los agentes manipular su entorno, como alterar bases de datos o enviar correos electrónicos. Conllevan graves riesgos de seguridad y requieren estrictos mecanismos de control para prevenir daños.
Planificación
-
Visión general: Las tareas complejas requieren descomposición. La planificación separa la generación del plan de la ejecución, permitiendo la validación mediante heurísticas o evaluadores de IA para evitar bucles de API costosos e infructuosos. Los clasificadores de intención ayudan a seleccionar las herramientas correctas y rechazar solicitudes irrelevantes.
-
Modelos fundacionales como planificadores: Mientras que investigadores como Yann LeCun argumentan que los modelos autorregresivos no pueden planificar porque carecen de backtracking, otros sugieren que los LLMs pueden predecir resultados de acciones actuando como modelos del mundo.
-
Generación de planes: La ingeniería de prompts se usa para guiar a los modelos en la planificación de secuencias. Las APIs de modelos habilitan la «llamada a funciones» (function calling) proporcionando al agente un inventario de herramientas, permitiendo al modelo determinar las herramientas necesarias e inferir los valores de los parámetros.
-
Granularidad de la planificación: La planificación granular llama directamente a funciones de código, lo que falla si las APIs cambian. La planificación de alto nivel usa secuencias en lenguaje natural, haciendo al planificador más robusto, aunque requiere un módulo de traducción separado para ejecutar los comandos.
-
Planes complejos: El flujo de control de un agente puede involucrar pasos secuenciales, ejecución paralela, condicionales y bucles, que dictan el orden de las operaciones con herramientas.
Reflexión y Corrección de Errores
Los agentes evalúan la viabilidad, los resultados y la completitud de la tarea mediante la reflexión. Marcos como ReAct instruyen al agente para que intercale explícitamente pasos de razonamiento y acción. Sistemas como Reflexion usan módulos de autorreflexión para analizar explícitamente por qué ocurrió un fallo y generar una trayectoria corregida. Aunque efectiva, la reflexión consume muchos tokens, aumentando la latencia y el costo.
Selección de Herramientas
Añadir demasiadas herramientas puede confundir al modelo y superar los límites de contexto. La selección de herramientas requiere experimentación, como estudios de ablación o rastreo de la frecuencia de llamadas a herramientas. Marcos como Voyager permiten a los agentes rastrear programas exitosos y añadirlos a una «biblioteca de habilidades» (skill library) para reutilizarlos en el futuro.
Modos de Fallo y Evaluación de Agentes
-
Fallos de planificación: Los agentes pueden solicitar herramientas inválidas, usar parámetros incorrectos, alucinar variables o declarar que una tarea está completa cuando se incumplen restricciones (como presupuesto o límites de tiempo).
-
Fallos de herramientas: Las herramientas pueden devolver datos incorrectos o sufrir errores en el módulo de traducción. También ocurren fallos cuando los agentes carecen de las herramientas de dominio específico requeridas para una tarea.
-
Eficiencia: Los agentes deben medirse por el número promedio de pasos, los retrasos de tiempo y los costos de tarea comparados con líneas base.
Memoria
Los sistemas de memoria ayudan a los agentes a manejar operaciones complejas con gran cantidad de conocimiento. Los modelos utilizan tres mecanismos de memoria: conocimiento interno (pesos de datos de entrenamiento), memoria a corto plazo (el contexto del prompt) y memoria a largo plazo (almacenamiento externo/RAG).
Los sistemas de memoria gestionan el desbordamiento de información, persisten la personalización entre sesiones de usuario, impulsan la consistencia de la salida y mantienen la integridad de los datos estructurados. Dado que las ventanas de contexto son limitadas, la gestión de la memoria requiere operaciones para añadir o eliminar información. Los métodos simples confían en FIFO (first in, first out), que arriesga descartar instrucciones críticas tempranas. Las estrategias sofisticadas se apoyan en la eliminación de redundancias mediante la resumización continua por LLM, el rastreo de entidades nombradas o la resolución activa de contradicciones mediante reflexión de IA.
Resumen
RAG circunvala eficientemente los límites de contexto para aplicaciones con gran carga de conocimiento. El patrón agéntico trata la recuperación como una herramienta más entre muchas, permitiendo a la IA actuar como planificadora interactuando con el entorno. Ambas metodologías están basadas en prompts, expandiendo la utilidad sin alterar los pesos subyacentes del modelo.
💡 Comentarios, Anécdotas y Estado del Arte Actual
Las Anécdotas de Chip Huyen en el Texto: Chip aporta una perspectiva altamente práctica y orientada a la ingeniería en este capítulo. Una de las observaciones más entretenidas es su variación de la Ley de Parkinson aplicada a los LLMs: así como el trabajo se expande para llenar el tiempo disponible, Chip teoriza que «el contexto de una aplicación se expande para llenar el límite de contexto soportado por el modelo que usa». Esto ilustra perfectamente por qué ampliar los modelos a ventanas de 1 o 2 millones de tokens (como Gemini 1.5 Pro) no elimina RAG; los desarrolladores siempre encontrarán la forma de meter más datos en el prompt hasta que se rompa o resulte prohibitivamente caro.
Además, al hablar de los peligros de dar acceso de «escritura» a la IA (como enviar correos electrónicos o realizar transferencias bancarias), Chip aborda la inevitable comparación con los coches autónomos. La gente teme que los agentes hackeen sus vidas, pero Chip señala que la seguridad de la IA es una escala gradual de confianza, añadiendo con ironía: «Personalmente, confiaría más en un coche autónomo que en el conductor desconocido medio». También incluye una queja de desarrollador muy identificable sobre los agentes en sus primeros días: «los agentes solo sirven para quemar tus créditos de API», un guiño a los bucles descontrolados de AutoGPT que en su día disparaban las facturas de OpenAI.
Conectando con el Estado del Arte Actual: Los conceptos del capítulo representan el estado más avanzado del panorama empresarial de IA hoy en día, pero el campo evoluciona tan rápido que algunos de los debates específicos mencionados ya están cambiando en tiempo real.
-
El Debate sobre la Planificación y los modelos Reasoning de OpenAI (o1/o3): El capítulo subraya el argumento de Yann LeCun de que los LLMs autorregresivos no pueden «planificar» realmente porque no pueden retroceder inherentemente. Sin embargo, el reciente lanzamiento de los modelos de «razonamiento» o1 y o3 de OpenAI cambia completamente este paradigma. Al integrar el Aprendizaje por Refuerzo (RL) directamente en el paso de inferencia, estos modelos realizan razonamiento en «cadena de pensamiento» latente antes de emitir un token. Retroceden dinámicamente, prueban hipótesis y evalúan caminos internamente, fusionando efectivamente el planificador de FM y el planificador de RL que Chip predijo que eventualmente se unirían.
-
Marcos Agénticos: Los marcos ReAct y Reflexion discutidos en el capítulo son los fundamentos intelectuales de las bibliotecas de orquestación modernas como LangChain y LlamaIndex, pero ahora asistimos a un cambio hacia marcos multi-agente como AutoGen de Microsoft o LangGraph. En lugar de un agente luchando con un enorme inventario de herramientas, los desarrolladores ahora construyen agentes microscópicos y de propósito único (p. ej., un agente SQL, un agente de búsqueda web) gestionados por un agente «Orquestador».
-
Recuperación Contextual: La metodología de «Recuperación Contextual» atribuida a Anthropic en el texto se ha convertido en una tendencia masiva. Dado que el chunking estándar en RAG despoja a un párrafo de su significado circundante, inyectar un resumen generado del documento padre en el fragmento antes de vectorizarlo ha demostrado disparar la precisión de forma notable. Se está convirtiendo rápidamente en el estándar de oro para los pipelines vectoriales empresariales.