Generación Aumentada por Caché (CAG)
La Generación Aumentada por Caché (CAG) mejora la eficiencia de los grandes modelos de lenguaje precargando conocimiento estático, reduciendo la latencia y simplificando la arquitectura para tareas estáticas y de baja latencia.
¿Qué es la Generación Aumentada por Caché (CAG)?
La Generación Aumentada por Caché (CAG) es un enfoque novedoso para mejorar el rendimiento y la eficiencia de los grandes modelos de lenguaje (LLMs) mediante el uso de conocimientos precargados en forma de cachés de clave-valor (KV) precomputadas.
A diferencia de la Generación Aumentada por Recuperación (RAG), que recupera dinámicamente conocimiento externo durante la inferencia, CAG elimina por completo los pasos de recuperación al incrustar todo el conocimiento relevante directamente en la ventana de contexto extendida del modelo antes de la inferencia. Esta estrategia de precarga permite a los LLMs generar respuestas utilizando la información precomputada, reduciendo significativamente la latencia y simplificando la arquitectura del sistema.
Al almacenar el conocimiento procesado en una caché de clave-valor, CAG garantiza que el modelo tenga acceso inmediato al contexto necesario para responder consultas. Este enfoque resulta especialmente ventajoso en escenarios donde la base de conocimiento es estática, relativamente pequeña o cuando la baja latencia es prioritaria.
¿Cómo funciona CAG?
CAG opera en tres fases principales:
1. Precarga de conocimiento externo
Todos los documentos o conjuntos de datos relevantes se precargan en la ventana de contexto del modelo antes de la inferencia.
El contenido precargado se procesa en una caché de clave-valor (KV), capturando la representación interna del conocimiento por parte del modelo. Por ejemplo:
def preprocess_knowledge(model, tokenizer, prompt): input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device) past_key_values = DynamicCache() outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True) return outputs.past_key_values
Este paso garantiza que el modelo tenga acceso inmediato al conocimiento preprocesado, evitando la necesidad de recuperación en tiempo real.
2. Inferencia con caché precomputada
Cuando se realiza una consulta, la caché KV precomputada se combina con la entrada de la consulta.
El modelo genera una respuesta basándose únicamente en el conocimiento en caché y la consulta, evitando cálculos adicionales para la recuperación de conocimiento. Por ejemplo:
def generate_response(model, query, kv_cache): input_ids = tokenizer.encode(query, return_tensors="pt").to(model.device) output_ids = model(input_ids=input_ids, past_key_values=kv_cache, use_cache=True) return tokenizer.decode(output_ids)
3. Gestión de la caché
A medida que se procesan nuevas consultas, la caché crece. Un mecanismo de reinicio trunca la caché de nuevo a su longitud original para mantener el rendimiento y asegurar que las consultas posteriores se evalúen dentro del contexto previsto. Ejemplo de reinicio de caché:
def clean_up(kv_cache, original_length): for i in range(len(kv_cache.key_cache)): kv_cache.key_cache[i] = kv_cache.key_cache[i][:, :, :original_length, :] kv_cache.value_cache[i] = kv_cache.value_cache[i][:, :, :original_length, :]
Ventajas clave de CAG
Baja latencia
Al no requerir recuperación en tiempo real, CAG ofrece tiempos de respuesta más rápidos en comparación con RAG. Esto lo hace ideal para aplicaciones sensibles al tiempo.Mayor precisión
Al precargar todos los documentos relevantes, CAG garantiza que el modelo procese un conjunto de datos integral, reduciendo el riesgo de vacíos de contexto o errores de recuperación.Arquitectura simplificada
A diferencia de RAG, que requiere una compleja canalización de recuperación, la arquitectura de CAG es más simple, reduciendo la complejidad y el mantenimiento del sistema.Eficiencia a escala
Una vez que el conocimiento se ha precargado y almacenado en caché, las consultas subsecuentes se procesan con un coste computacional mínimo, haciendo a CAG eficiente para consultas repetidas en el mismo dominio de conocimiento.
Limitaciones de CAG
Tamaño de la ventana de contexto
CAG depende de la ventana de contexto del modelo para precargar el conocimiento. Los LLMs actuales soportan ventanas de contexto de hasta 128.000 tokens, lo que limita la cantidad de conocimiento que puede precargarse.Tamaño de la base de conocimiento
CAG es más adecuado para bases de conocimiento estáticas y manejables. Para conjuntos de datos grandes o dinámicos, el modelo podría tener dificultades para ajustar toda la información relevante en la ventana de contexto.Conocimiento estático
CAG asume que la base de conocimiento permanece sin cambios durante la inferencia. Es menos efectivo para casos de uso que requieren actualizaciones en tiempo real o integración dinámica de conocimientos.Implicaciones de coste
Las ventanas de contexto grandes aumentan los costos computacionales durante la precarga, haciendo que CAG sea menos económico para escenarios que implican actualizaciones frecuentes o cambios en la base de conocimiento.
¿Cómo se usa CAG?
Aplicaciones prácticas
CAG se aplica comúnmente en escenarios donde la base de conocimiento es estática, manejable en tamaño y la baja latencia es crítica:
Chatbots de atención al cliente
Ejemplo: Precarga de pasos comunes de solución de problemas para productos de software para proporcionar respuestas instantáneas a los usuarios.
Beneficio: Elimina errores de recuperación y acelera los tiempos de respuesta.Análisis de documentos
Ejemplo: Instituciones financieras que analizan informes trimestrales o firmas legales que consultan documentos regulatorios.
Beneficio: Garantiza respuestas consistentes y precisas precargando todos los documentos relevantes en el modelo.Asistentes de salud
Ejemplo: Precarga de guías médicas para asistir en consultas de pacientes.
Beneficio: Mantiene la continuidad en diálogos de varios turnos y asegura referencias precisas.Educación y formación
Ejemplo: Responder preguntas frecuentes en programas de formación corporativa.
Beneficio: Simplifica el despliegue asegurando respuestas consistentes.
Comparaciones con Generación Aumentada por Recuperación (RAG)
Característica | CAG | RAG |
---|---|---|
Manejo del conocimiento | Precarga el conocimiento en la ventana de contexto. | Recupera conocimiento dinámicamente en tiempo real. |
Complejidad del sistema | Simplificado, no requiere canal de recuperación. | Requiere componentes adicionales para recuperación. |
Latencia | Baja, ya que se eliminan los pasos de recuperación. | Mayor debido a procesos de recuperación en tiempo real. |
Escalabilidad | Limitada por el tamaño de la ventana de contexto. | Escala bien con conjuntos de datos grandes y dinámicos. |
Riesgo de errores | Sin errores de recuperación. | Vulnerable a errores de recuperación y ranking. |
Mejores casos de uso | Tareas estáticas y de baja latencia. | Tareas dinámicas, grandes o frecuentemente actualizadas. |
Ejemplos de casos de uso
CAG en acción
Sistemas de RRHH
Una empresa utiliza CAG para precargar políticas de empleados en el modelo. Los empleados pueden consultar el sistema sobre directrices específicas y las respuestas se generan al instante.Asistencia legal
Un asistente legal precarga jurisprudencia relevante en la ventana de contexto del modelo para proporcionar respuestas rápidas a consultas legales sin utilizar un sistema de recuperación.Atención al cliente
El chatbot de un producto SaaS utiliza CAG para precargar preguntas frecuentes y guías de solución de problemas, asegurando interacciones con clientes fluidas y rápidas.
RAG para escenarios dinámicos
Agregación de noticias
Una aplicación de noticias utiliza RAG para buscar y resumir los artículos más recientes, recuperando dinámicamente la información más relevante para las consultas de los usuarios.Búsqueda en e-commerce
RAG se utiliza para recuperar detalles de productos y disponibilidad de un catálogo grande y frecuentemente actualizado.Plataformas de investigación
Una plataforma de investigación científica emplea RAG para buscar artículos y estudios relevantes en grandes bases de datos externas.
Ejemplo de implementación: Precarga de conocimiento en Python
El siguiente fragmento de código Python demuestra cómo precargar conocimiento en un modelo para CAG:
def preprocess_knowledge(model, tokenizer, prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
past_key_values = DynamicCache()
outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
return outputs.past_key_values
Este mecanismo de precarga garantiza que el modelo procese consultas sin requerir recuperación externa, permitiendo un rendimiento eficiente y de baja latencia.
Cuándo usar CAG
Bases de conocimiento estáticas
Ideal para casos en los que la base de conocimiento cambia poco frecuentemente.Aplicaciones de baja latencia
Adecuado para atención al cliente, educación o sistemas de salud donde se requieren respuestas rápidas.Escenarios rentables
Beneficioso cuando el conocimiento precargado permanece consistente a través de múltiples consultas, reduciendo la sobrecarga computacional.
CAG es una alternativa eficiente a RAG para tareas que requieren velocidad, simplicidad y consistencia. Sin embargo, está limitada por el tamaño y la naturaleza estática de la base de conocimiento.
Investigación sobre Generación Aumentada por Caché (CAG)
1. Adaptive Contextual Caching for Mobile Edge Large Language Model Service
Autores: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong
Este artículo aborda los desafíos en los despliegues de grandes modelos de lenguaje (LLM) en el borde móvil, como los recursos computacionales limitados y la alta latencia de recuperación. Propone un marco de Caching Contextual Adaptativo (ACC), que utiliza aprendizaje profundo por refuerzo (DRL) para optimizar las políticas de reemplazo de caché considerando el contexto del usuario, la similitud de los documentos y la sobrecarga por fallos de caché. Los resultados experimentales muestran que ACC logra tasas de acierto de caché superiores al 80% después de 11 episodios de entrenamiento, reduciendo significativamente la latencia de recuperación hasta en un 40% frente a métodos tradicionales. Además, minimiza la sobrecarga de almacenamiento local hasta en un 55%, haciéndolo adecuado para servicios LLM escalables y de baja latencia en entornos con recursos limitados. El trabajo destaca el potencial de ACC para mejorar la eficiencia en sistemas LLM en el borde.
Lee el artículo aquí
2. Towards More Economical Context-Augmented LLM Generation by Reusing Stored KV Cache
Autores: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang
Este estudio explora la reutilización de cachés de Clave-Valor (KV) para reducir los retrasos de precarga en aplicaciones LLM, especialmente para textos de entrada repetidos. Investiga si dicha reutilización de caché también puede ser viable económicamente al usar servicios de nube pública para almacenamiento y procesamiento. Los autores proponen un modelo analítico validado para evaluar los costos en la nube (en cómputo, almacenamiento y red) de almacenar y reutilizar cachés KV en diferentes parámetros de carga de trabajo. El estudio demuestra que la reutilización de cachés KV ahorra tanto tiempo como costos en la nube para cargas de trabajo con contextos largos, fomentando más esfuerzos en construir sistemas LLM contextuales más económicos.
Lee el artículo aquí
3. MPIC: Position-Independent Multimodal Context Caching System for Efficient MLLM Serving
Autores: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen
Este artículo introduce MPIC, un sistema de caché de contexto multimodal independiente de la posición, destinado a abordar ineficiencias en la inferencia de grandes modelos de lenguaje multimodal (MLLM). Los sistemas tradicionales recomputan toda la caché KV incluso ante pequeñas diferencias de contexto, lo que genera ineficiencias. MPIC ofrece un sistema de caché independiente de la posición que almacena las cachés KV local o remotamente y paraleliza la computación y carga de caché durante la inferencia. Sus mecanismos integrados de reutilización y recomputación mitigan la degradación de precisión, logrando hasta un 54% de reducción en el tiempo de respuesta frente a métodos existentes. Este trabajo destaca el potencial de mejorar la eficiencia en los sistemas de servicio de LLM multimodal.
Lee el artículo aquí
Preguntas frecuentes
- ¿Qué es la Generación Aumentada por Caché (CAG)?
La Generación Aumentada por Caché (CAG) es un método que mejora el rendimiento de los grandes modelos de lenguaje (LLM) precargando conocimiento estático en una caché de clave-valor (KV) precomputada. A diferencia de la Generación Aumentada por Recuperación (RAG), que recupera conocimiento externo en tiempo real, CAG incorpora toda la información relevante de antemano, reduciendo la latencia y simplificando la arquitectura del sistema de IA.
- ¿En qué se diferencia CAG de RAG?
CAG precarga todo el conocimiento necesario en la ventana de contexto del modelo antes de la inferencia y elimina la necesidad de recuperación en tiempo real, asegurando baja latencia. RAG, por otro lado, recupera información relevante dinámicamente en tiempo de ejecución, lo que puede introducir errores de recuperación y mayor latencia, pero es más adecuado para bases de conocimiento dinámicas o frecuentemente actualizadas.
- ¿Cuáles son las ventajas de usar CAG?
Las principales ventajas de CAG incluyen baja latencia, mayor precisión gracias a la precarga integral, arquitectura de sistema simplificada y eficiencia para consultas repetidas dentro de dominios de conocimiento estáticos.
- ¿Cuáles son las limitaciones de CAG?
CAG está limitada por el tamaño máximo de la ventana de contexto del modelo (actualmente hasta 128.000 tokens), es mejor para bases de conocimiento estáticas y manejables, y es menos efectiva para conjuntos de datos dinámicos o escenarios que requieren actualizaciones frecuentes. Las ventanas de contexto grandes también pueden aumentar los costos computacionales durante la precarga.
- ¿Dónde es más útil CAG?
CAG es ideal para aplicaciones estáticas y de baja latencia como chatbots de atención al cliente, análisis de documentos, asistentes de salud, preguntas frecuentes educativas, consultas de políticas de RRHH y asistentes legales; en cualquier lugar donde la base de conocimiento cambie poco y se requieran respuestas instantáneas.
Comienza a construir flujos de IA eficientes
Experimenta el poder de CAG y otras herramientas de IA con FlowHunt. Agenda una demostración para ver cómo las soluciones de baja latencia y aumentadas por caché pueden transformar tu negocio.