¡Hey! Esta vez quiero platicar sobre otro tema que me parece muy interesante: la memoria para los agentes de IA. Primero veremos por qué puede ser necesaria y después exploraremos algunas estrategias de implementación.
Para seguir el artículo, ayuda tener una idea general de qué es un agente: un sistema que usa un modelo de IA para decidir cómo avanzar en una tarea y que, según el caso, puede apoyarse en herramientas y conservar información útil. No necesitas conocer un framework en particular. Si quieres una introducción previa, puedes leer la explicación de Anthropic.
¿Por qué un agente necesita memoria?
Al reiniciarse, si el agente no guardó el estado de la tarea ni las respuestas del usuario, su contexto ya no incluye esa información. Por eso no sabe qué estaba haciendo ni qué datos había solicitado. Podría tener que empezar de nuevo o volver a pedirle al usuario información que ya había proporcionado. Un mecanismo de memoria puede conservar ese estado para que el agente retome la tarea.
Memoria de trabajo o corto plazo
Como ya mencioné los agentes cuentan con algo que se conoce como ventana de contexto que les permite tener presente la información de la conversación durante una sesión. Esta memoria de trabajo es muy útil, pero tiene dos limitaciones:
Los LLM (large language model o modelo grande de lenguaje) que utilizan los agentes están basados en una arquitectura Transformer. Seguro puedes encontrar en la red más información de cómo funcionan exactamente. Aquí lo relevante es tener en mente que utilizan un mecanismo de autoatención, que calcula la relación de cada token (lo que puede ser una palabra, un fragmento de palabra o incluso un signo) con todos los demás tokens presentes en la ventana de contexto.
Matemáticamente, si el contexto tiene una longitud de n tokens, el cómputo de la autoatención densa estándar escala en un orden de O(n^2), considerando la notación Big-O. Esto significa que, al duplicar la longitud del contexto, el trabajo requerido por este mecanismo puede llegar aproximadamente a cuadruplicarse. Algunas implementaciones modernas optimizan el uso de memoria y el tiempo real de ejecución, pero procesar contextos cada vez más extensos continúa teniendo un costo.
Muchos agentes operan mediante ciclos continuos de razonamiento-acción-observación. El agente en cada paso añade más a la ventana de contexto el prompt del sistema, las descripciones de herramientas, el historial de conversación, los resultados intermedios de APIs y la información recuperada de fuentes externas. En implementaciones comunes, una parte importante de este contexto vuelve a ser procesada en cada iteración para que el agente pueda decidir su siguiente acción. Por esto, si el contexto crece de manera desproporcionada, también puede aumentar la latencia y el costo.
Este crecimiento puede degradar el rendimiento y contribuir a un fenómeno conocido como dilución de la atención. Como resultado, el agente puede pasar por alto información relevante y generar respuestas deficientes, inconsistentes o con mayor riesgo de alucinaciones.
Tipos de Memoria
- Memoria Episódica – Experiencias
- Memoria Semántica – Hechos
- Memoria Procedimental – Instrucciones
- Memoria de Trabajo
- Qué conserva: la conversación y el estado de la tarea actual.
- Almacenamiento habitual: estado en memoria o checkpoints persistentes.
- Recuperación: por sesión, hilo o identificador.
- Herramientas: Redis, SQLite, PostgreSQL o checkpointers de LangGraph.
- Memoria Episódica
- Qué conserva: Experiencias, acciones, y resultados anteriores.
- Almacenamiento habitual: bases de datos relacionales o documentales y registros de eventos.
- Recuperación: por fecha, sesión, filtros o similitud semántica
- Herramientas: SQLite, PostgreSQL o MongoDB; pgvector o Qdrant cuando se necesite localizar experiencias similares.
- Memoria Semántica
- Qué conserva: hechos, preferencias, conceptos y relaciones.
- Almacenamiento habitual: bases de datos relacionales, clave-valor, vectoriales o de grafos.
- Recuperación: mediante consultas exactas, búsqueda por similitud semántica o relaciones entre entidades.
- Herramientas: PostgreSQL, pgvector, Qdrant, Zep, Mem0, o Google Agent Platform Memory Bank.
- Memoria Procedimental
- Qué conserva: instrucciones, políticas, y formas de realizar tareas.
- Almacenamiento habitual: archivos versionados, código, configuraciones o registros de prompts.
- Recuperación: por tarea, versión o regla de activación.
- Herramientas: skills, LangMem, Git, archivos markdown, o registros de prompts.
Consideraciones generales para la memoria
De manera general, una de las decisiones más importantes consiste en seleccionar estratégicamente qué información se va a almacenar. Como hemos revisado, la implementación no siempre tiene que ser algo muy complejo: incluso un archivo Markdown con un resumen podría funcionar como una forma sencilla de memoria externa o contexto persistente, siempre que el agente pueda consultarlo y actualizarlo cuando sea necesario.
Algunas consideraciones útiles para administrar la memoria son las siguientes:
Consolidación: la información relacionada puede combinarse, resumirse y actualizarse para evitar recuerdos duplicados o contradictorios. Por ejemplo, varios episodios podrían consolidarse en un hecho, una conclusión o una preferencia más general.
Un caso práctico en herramientas de línea de comandos como Claude Code o Codex consiste en pedirle al agente que mantenga un archivo Markdown durante una investigación. En lugar de agregar indefinidamente todos los hallazgos, el agente puede actualizarlo periódicamente, agrupando información relacionada, resumiendo los puntos más importantes y reemplazando conclusiones que hayan quedado obsoletas.
De esta manera, el archivo funciona como una memoria externa persistente que puede consultarse durante las siguientes etapas del trabajo. Al ser un formato legible para las personas, también podemos abrirlo, buscar información específica y corregir su contenido sin necesidad de invocar al modelo ni consumir tokens. Cuando el agente necesite utilizarlo, puede recuperar únicamente la información relevante e incorporarla nuevamente a su contexto.Podado o eliminación (eviction): no todo debe recordarse indefinidamente. Pueden aplicarse políticas basadas en la antigüedad, frecuencia de uso, vigencia y utilidad de la información para eliminar recuerdos obsoletos o poco relevantes antes de incorporarlos nuevamente al contexto.
Múltiples estructuras de memoria: no toda la información tiene que almacenarse de la misma manera. Investigaciones recientes, como FluxMem, exploran la combinación de estructuras lineales —como secuencias temporales—, grafos —para representar relaciones— y estructuras jerárquicas —como temas y resúmenes—, seleccionando la más apropiada según el contexto de la consulta. Aunque es una línea de investigación prometedora, todavía no constituye una regla general para implementar memoria en todos los agentes.
¿El RAG es memoria?
Esto no quiere decir que el contenido quede incorporado permanentemente en los parámetros del modelo: normalmente solo se encuentran disponible durante esa ejecución.
¿Y si mi recuerdo no es seguro?
___
Referencias:
- Ilustraciones: Creadas con ayuda de ChatGPT (OpenAI), a partir de ideas y descripciones propias.
- https://docs.cloud.google.com/architecture/choose-agentic-ai-architecture-components
- https://datahub.com/blog/context-window-optimization/
- https://binzhango.net/posts/2026/03-15-attention-dilution/
- https://en.wikipedia.org/wiki/Big_O_notation
- https://help.openai.com/es-419/articles/4936856-understanding-and-counting-tokens
- https://developers.google.com/machine-learning/crash-course/embeddings?hl=es-419
- https://cheatsheetseries.owasp.org/cheatsheets/AI_Agent_Security_Cheat_Sheet.html



