Introducción a MemGPT y su integración con Milvus
Durante nuestro meetup de datos no estructurados en mayo, nos acompañó Charles Packer, estudiante de doctorado en UC Berkeley y cofundador de MemoryGPT (MemGPT). Charles destacó un cuello de botella fundamental en los modelos de lenguaje grandes actuales (LLMs): la memoria limitada, y explicó cómo MemGPT buscaba resolver este problema inspirándose en el diseño de sistemas operativos.
Este blog cubrirá los conceptos clave discutidos en la charla y explicará la «memoria extendida virtual» introducida por MemGPT. Sin embargo, si deseas absorber el conocimiento de primera mano, puedes volver a ver la charla completa en YouTube.
Memoria limitada en los LLMs actuales
Charles abrió su charla presentando la memoria como contexto para un LLM y destacando su importancia: “Para los LLMs, la memoria lo es todo.” La ventana de contexto de un LLM define cuánta información puede retener durante una conversación. Esta capacidad de retención permite al modelo de lenguaje recordar información de consultas anteriores, lo que lo convierte en una herramienta poderosa para desarrollar diversas aplicaciones de chatbot.
Sin embargo, la ventana de contexto es bastante limitada para la mayoría de los LLMs convencionales. Algunos ejemplos incluyen 32k tokens para GPT4 y 128k para GPT4-Turbo. La memoria limitada significa que estas aplicaciones de chatbot tienden a olvidar conversaciones antiguas después de cierto número de consultas, lo que puede llevar a una experiencia de usuario decepcionante. Charles destacó este problema como un cuello de botella importante para las aplicaciones de LLMs, afirmando además que los LLMs quedan reducidos a ser motores de búsqueda en lugar de asistentes.
Las relaciones entre motores de búsqueda, LLMs y asistentes de IA
Las soluciones más cercanas al problema de la memoria son la generación aumentada por recuperación (RAG) y los LLMs de contexto largo como Gemini. Pero aunque estas ofrecen cierta mejora, RAG no es memoria real, y los LLMs de contexto largo aumentan los costos computacionales de forma múltiple. Además, el rendimiento inferior de modelos de contexto largo como DevinAI demuestra que los contextos limitados no son el problema; en cambio, lo es la contaminación del contexto causada por la mala gestión de tokens.
MemGPT: De motores de búsqueda a asistentes
MemGPT introduce una ventana de contexto virtualmente extendida inspirada en la paginación de memoria implementada en los sistemas informáticos. En las computadoras, la información clave se almacena en la memoria (RAM) para un acceso más rápido, pero cuando la RAM se llena, los datos restantes se almacenan en almacenamiento persistente (ROM). El sistema operativo (OS) intercambia información entre la RAM y la ROM dependiendo de a qué necesita acceder.
MemGPT sigue el mismo concepto al crear un sistema de memoria extendida. Divide el contexto del LLM en dos partes.
Contexto principal: Esta es la ventana de contexto del LLM subyacente. Tiene un ancho de banda limitado y almacena la información más relevante a la que se puede acceder fácilmente.
Contexto externo: El contexto externo se crea en almacenamiento persistente (ROM) y tiene una ventana infinita. Almacena ideas e información clave a medida que la conversación continúa y el contexto principal se llena.
MemGPT se encarga de gestionar el flujo de información entre los dos contextos. Actualiza dinámicamente la memoria en función del contexto actual, intercambiando información de manera eficiente entre los almacenes de memoria principal y externa. Este control y eficiencia son clave para el rendimiento del sistema.
Este enfoque posiciona a MemGPT como un componente crucial en aplicaciones que exigen memoria de contexto largo. Por ejemplo, los chatbots de asistente personal, que necesitan retener detalles clave de la vida del usuario, pueden beneficiarse significativamente. Las relaciones personales y los detalles del trabajo se almacenan en el contexto externo y se recuperan según lo requiera la conversación en curso. Este enfoque ofrece a los usuarios una experiencia verdaderamente 'personal', mejorando la relevancia y la utilidad del sistema.
Estructura de MemGPT
Charles explicó las diferencias clave entre el diseño arquitectónico de MemGPT y un LLM estándar. La primera es la diferencia en el manejo del contexto, que hemos discutido en detalle anteriormente. La segunda es la forma en que maneja las entradas y salidas. Sus entradas y salidas están estructuradas como JSON, tratándolas como eventos y llamadas a funciones en lugar de texto plano.
Configuración estándar de LLM
Cómo funciona MemGPT
Puede aceptar documentos, consultas de usuarios y alertas del sistema como entrada, desencadenando un evento en el LLM. El evento se analiza y se transfiere al LLM, que utiliza el contexto extendido para procesar el requisito y realizar acciones como una llamada a función. Este diseño arquitectónico le permite actuar como un agente entrenado para realizar tareas específicas. Por ejemplo, cuando se recibe un correo electrónico, puede desencadenar un evento, y el LLM analizará el correo electrónico para extraer y resaltar detalles clave.
MemGPT como servicio
Charles concluyó las sesiones explicando cómo MemGPT puede desplegarse en un servidor privado para uso a largo plazo. Cada interacción y consulta se mantiene en una base de datos con estado a la que se puede acceder incluso después de que el sistema se cierre.
Dado que el agente MemGPT vive en un servidor, se accede a él a través de la interfaz de programación de aplicaciones (API) REST. Se puede acceder al agente desde cualquier lugar a través de internet, lo que facilita su integración con aplicaciones comerciales.
Integración de MemGPT con la base de datos vectorial Milvus
Milvus es una base de datos vectorial de código abierto para almacenamiento y recuperación de vectores a escala de miles de millones. También es una de las tecnologías más importantes para crear aplicaciones de generación aumentada por recuperación (RAG).
Milvus se ha integrado con MemGPT, lo que facilita a los desarrolladores crear agentes de IA con conexiones a fuentes de datos externas.
En el siguiente ejemplo, usaremos MemGPT para chatear con una fuente de datos personalizada almacenada en Milvus.
Configuración
Instala las dependencias requeridas.
pip install 'pymemgpt[milvus]'
Configura la conexión de Milvus mediante el siguiente comando:
memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Acabas de establecer el URI en la ruta del archivo local, por ejemplo, ~/.memgpt/milvus.db, lo que invocará automáticamente la instancia local del servicio Milvus a través de Milvus Lite, una versión ligera de Milvus para prototipado rápido.
Nota importante: Si tienes una mayor cantidad de datos, como más de un millón de documentos, recomendamos configurar un servidor Milvus de mayor rendimiento en Docker o Kubernetes. En tales casos, tu URI debe ser el URI del servidor, por ejemplo, <http://localhost:19530>.
Creación de una fuente de datos externa
En este paso, debemos crear una fuente de datos para alimentar datos externos en un chatbot de MemGPT. Usaremos el artículo de investigación de MemGPT como fuente de datos de ejemplo.
Para descargar este artículo, usaremos el comando curl. También puedes simplemente descargar el PDF desde tu navegador.
curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Ahora, hemos descargado el artículo. Luego debemos crear una fuente de datos de MemGPT usando memgpt load:
memgpt load directory --name memgpt_research_paper --input-files=memgpt_research_paper.pdf
Cargando archivos: 100%|███████████████████████████████████| 1/1 [00:00<00:00, 3.94archivo/s]
Se cargaron 74 pasajes y 13 documentos de memgpt_research_paper
Adjuntar la fuente de datos a un agente de MemGPT
Ahora, hemos creado nuestra fuente de datos. Podemos adjuntarla a un chatbot de MemGPT en cualquier momento.
Creemos un nuevo chatbot usando la persona memgpt_doc (puedes usar cualquier persona que quieras):
memgpt run --persona memgpt_doc
Al chatear con el agente, podemos "adjuntar" la fuente de datos a la memoria de archivo del agente:
? ¿Te gustaría seleccionar un agente existente? No
🧬 Creando nuevo agente...
-> 🤖 Usando perfil de persona: 'sam_pov'
-> 🧑 Usando perfil humano: 'basic'
🎉 Se creó el nuevo agente 'PoliteButterfly' (id=d26e1981-ff36-4095-97a0-61a1601dfb5d)
Pulsa enter para comenzar (solicitará el primer mensaje de MemGPT)
💭 Interesante, tengo un usuario primerizo. Es hora de presentarme y entender las necesidades del usuario. Me pregunto qué trae a Chad por aquí hoy.
🤖 ¡Saludos, Chad! Soy MemGPT. ¿Cómo puedo ayudarte hoy?
> Introduce tu mensaje: /attach
? Selecciona la fuente de datos memgpt_research_paper
100%|███████████████████████████████████| 1/1 [00:00<00:00, 4.81it/s]
Probar nuestro nuevo chatbot
Hemos cargado los datos en la memoria del chatbot. Ahora, podemos empezar a hacer preguntas.
> Introduce tu mensaje: El artículo que cargué en tu memoria de archivo se llama MemGPT. ¿Puedes contarme más sobre él?
💭 Parece que a Chad le gustaría saber más sobre el artículo titulado 'MemGPT' que está almacenado en mi memoria de archivo. Es hora de buscar en la memoria de archivo detalles y datos de contexto para proporcionar una
comprensión completa del artículo. Recordemos revisar los resultados por páginas hasta que haya recopilado suficiente información para responder a la consulta de Chad.
⚡🧠 [function] buscando en la memoria con archival_memory_search
💭 Según los resultados encontrados, MemGPT es un sistema de IA diseñado para tareas como conversaciones extendidas y análisis de documentos. Gestiona de manera eficiente distintos niveles de almacenamiento para proporcionar un contexto extendido dentro
del límite restringido del LLM. Además, algo destacable de mis hallazgos es que MemGPT muestra un rendimiento impresionante en recuperación profunda de memoria (DMR) y tareas de QA sobre documentos. Preparemos una respuesta completa para Chad.
🤖 Por supuesto, Chad. MemGPT, o MemoryGPT, es un sistema especialmente diseñado para tareas como conversaciones extendidas y análisis de documentos, que tradicionalmente se ven obstaculizadas por las ventanas de contexto limitadas de los
Grandes Modelos de Lenguaje (LLMs) modernos. Utiliza una técnica inspirada en los sistemas de memoria jerárquica de los sistemas operativos tradicionales, llamada gestión de contexto virtual. Esta técnica permite proporcionar de forma efectiva
un contexto extendido dentro de la ventana de contexto limitada de un LLM mediante la gestión inteligente de distintos niveles de almacenamiento, de forma muy similar a la paginación entre la memoria física y el disco. En particular, MemGPT supera a las
líneas base de contexto fijo en recuperación profunda de memoria y es capaz de analizar documentos grandes con precisión.
Reflexiones finales
La breve charla de Charles Packer fue una gran inmersión en los conceptos de MemGPT. La sesión abordó las limitaciones de memoria y contexto de los LLM tradicionales y las presentó como cuellos de botella para las aplicaciones de LLM.
MemGPT introduce el concepto de memoria virtual extendida mediante la creación de un contexto externo almacenado en el almacenamiento en disco. El concepto está inspirado en cómo el sistema operativo de una computadora gestiona la memoria intercambiando información entre la RAM y la ROM. El agente MemGPT puede almacenar información vital en una base de datos externa y acceder a la información según el contexto presente. El agente abre nuevas vías para el desarrollo de aplicaciones de contexto largo.
La integración de la base de datos vectorial Milvus y MemGPT ha dado un paso más en la optimización del desarrollo de agentes de IA con conexiones a fuentes de datos externas. En esta publicación, también compartimos un ejemplo que demuestra cómo usar esta integración para crear un chatbot con memorias externas.
Sigue leyendo

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.



