Introduction à MemGPT et à son intégration avec Milvus
Lors de notre meetup sur les données non structurées en mai, nous avons été rejoints par Charles Packer, doctorant à l’UC Berkeley et cofondateur de MemoryGPT (MemGPT). Charles a mis en évidence un goulot d’étranglement fondamental dans les grands modèles de langage actuels (LLMs) : une mémoire limitée, et a expliqué comment MemGPT visait à résoudre ce problème en s’inspirant de la conception des systèmes d’exploitation.
Ce blog couvrira les concepts clés abordés lors de la présentation et expliquera la « mémoire étendue virtuelle » introduite par MemGPT. Cependant, si vous souhaitez assimiler ces connaissances directement, vous pouvez revoir l’intégralité de la présentation sur YouTube.
Mémoire limitée dans les LLMs actuels
Charles a ouvert sa présentation en introduisant la mémoire comme contexte pour un LLM et en soulignant son importance : “Pour les LLMs, la mémoire est tout.” La fenêtre de contexte d’un LLM définit la quantité d’informations qu’il peut conserver pendant une conversation. Cette capacité de rétention permet au modèle de langage de se souvenir d’informations provenant de requêtes précédentes, ce qui en fait un outil puissant pour développer diverses applications de chatbot.
Cependant, la fenêtre de contexte est assez limitée pour la plupart des LLMs grand public. Quelques exemples incluent 32k tokens pour GPT4 et 128k pour GPT4-Turbo. La mémoire limitée signifie que ces applications de chatbot ont tendance à oublier les conversations plus anciennes après un certain nombre de requêtes, ce qui peut entraîner une expérience utilisateur décevante. Charles a souligné ce problème comme un goulot d’étranglement majeur pour les applications LLM, ajoutant que les LLMs sont réduits à être des moteurs de recherche plutôt que des assistants.
Les relations entre les moteurs de recherche, les LLMs et les assistants IA
Les solutions les plus proches au problème de mémoire sont la génération augmentée par récupération (RAG) et les LLMs à long contexte comme Gemini. Mais bien qu’elles offrent certaines améliorations, RAG n’est pas une véritable mémoire, et les LLMs à long contexte augmentent considérablement les coûts de calcul. De plus, les performances médiocres des modèles à long contexte comme DevinAI prouvent que les contextes limités ne sont pas le problème ; il s’agit plutôt de la pollution du contexte causée par une mauvaise gestion des tokens.
MemGPT : des moteurs de recherche aux assistants
MemGPT introduit une fenêtre de contexte virtuellement étendue, inspirée de la pagination mémoire mise en œuvre dans les systèmes informatiques. Dans les ordinateurs, les informations clés sont stockées en mémoire (RAM) pour un accès plus rapide, mais lorsque la RAM est pleine, les données restantes sont stockées dans un stockage persistant (ROM). Le système d’exploitation (OS) échange les informations entre la RAM et la ROM en fonction de ce à quoi il doit accéder.
MemGPT suit le même concept en créant un système de mémoire étendue. Il divise le contexte du LLM en deux parties.
Contexte principal : Il s’agit de la fenêtre de contexte du LLM sous-jacent. Elle dispose d’une bande passante limitée et stocke les informations les plus pertinentes auxquelles il est possible d’accéder facilement.
Contexte externe : Le contexte externe est créé sur un stockage persistant (ROM) et dispose d’une fenêtre infinie. Il stocke les idées et informations clés au fur et à mesure que la conversation se poursuit et que le contexte principal se remplit.
MemGPT prend en charge la gestion du flux d’informations entre les deux contextes. Il met dynamiquement à jour la mémoire en fonction du contexte actuel, échangeant efficacement les informations entre les mémoires principale et externe. Ce contrôle et cette efficacité sont essentiels aux performances du système.
Cette approche positionne MemGPT comme un composant crucial dans les applications qui exigent une mémoire à long contexte. Par exemple, les chatbots assistants personnels, qui doivent conserver les détails clés de la vie de l’utilisateur, peuvent en bénéficier considérablement. Les relations personnelles et les détails professionnels sont stockés dans le contexte externe et récupérés lorsque la conversation en cours le nécessite. Cette approche offre aux utilisateurs une expérience véritablement « personnelle », renforçant la pertinence et l’utilité du système.
Structure de MemGPT
Charles a expliqué les principales différences entre la conception architecturale de MemGPT et celle d’un LLM standard. La première est la différence dans la gestion du contexte, dont nous avons discuté en détail ci-dessus. La seconde est la manière dont il gère les entrées et les sorties. Ses entrées et sorties sont structurées en JSON, les traitant comme des événements et des appels de fonction plutôt que comme du texte brut.
Configuration LLM standard
Fonctionnement de MemGPT
Il peut accepter des documents, des requêtes utilisateur et des alertes système en entrée, déclenchant un événement dans le LLM. L’événement est analysé et transféré au LLM, qui utilise le contexte étendu pour traiter la demande et effectuer des actions comme un appel de fonction. Cette conception architecturale lui permet d’agir comme un agent entraîné à effectuer des tâches spécifiques. Par exemple, lorsqu’un e-mail est reçu, il peut déclencher un événement, et le LLM analysera l’e-mail pour extraire et mettre en évidence les détails clés.
MemGPT en tant que service
Charles a conclu les sessions en expliquant comment MemGPT peut être déployé sur un serveur privé pour une utilisation à long terme. Chaque interaction et requête est conservée dans une base de données avec état, accessible même après la fermeture du système.
Étant donné que l’agent MemGPT réside sur un serveur, il est accessible via l’interface de programmation d’application REST (API). L’agent peut être consulté depuis n’importe où via Internet, ce qui facilite son intégration avec des applications commerciales.
Intégrer MemGPT avec la base de données vectorielle Milvus
Milvus est une base de données vectorielle open source pour le stockage et la récupération de vecteurs à l’échelle du milliard. C’est également l’une des technologies les plus importantes pour créer des applications de génération augmentée par récupération (RAG).
Milvus a été intégré à MemGPT, ce qui facilite la création, par les développeurs, d’agents d’IA connectés à des sources de données externes.
Dans l’exemple suivant, nous utiliserons MemGPT pour discuter avec une source de données personnalisée stockée dans Milvus.
Configuration
Installez les dépendances requises.
pip install 'pymemgpt[milvus]'
Configurez la connexion Milvus via la commande suivante :
memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Vous venez de définir l’URI sur le chemin du fichier local, par exemple, ~/.memgpt/milvus.db, ce qui invoquera automatiquement l’instance locale du service Milvus via Milvus Lite, une version légère de Milvus pour le prototypage rapide.
Remarque importante : Si vous avez une plus grande quantité de données, par exemple plus d’un million de documents, nous recommandons de configurer un serveur Milvus plus performant sur Docker ou Kubernetes. Dans de tels cas, votre URI doit être l’URI du serveur, par exemple, <http://localhost:19530>.
Créer une source de données externe
À cette étape, nous devons créer une source de données pour alimenter un chatbot MemGPT avec des données externes. Nous utiliserons l’article de recherche de MemGPT comme exemple de source de données.
Pour télécharger cet article, nous utiliserons la commande curl. Vous pouvez également simplement télécharger le PDF depuis votre navigateur.
curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Maintenant, nous avons téléchargé l’article. Ensuite, nous devons créer une source de données MemGPT à l’aide de memgpt load :
memgpt load directory --name memgpt_research_paper --input-files=memgpt_research_paper.pdf
Loading files: 100%|███████████████████████████████████| 1/1 [00:00<00:00, 3.94file/s]
Loaded 74 passages and 13 documents from memgpt_research_paper
Attacher la source de données à un agent MemGPT
Maintenant, nous avons créé notre source de données. Nous pouvons l’attacher à un chatbot MemGPT à tout moment.
Créons un nouveau chatbot en utilisant la persona memgpt_doc (vous pouvez utiliser n’importe quelle persona de votre choix) :
memgpt run --persona memgpt_doc
Lorsque nous discutons avec l’agent, nous pouvons « attacher » la source de données à la mémoire archivistique de l’agent :
? Would you like to select an existing agent? No
🧬 Creating new agent...
-> 🤖 Using persona profile: 'sam_pov'
-> 🧑 Using human profile: 'basic'
🎉 Created new agent 'PoliteButterfly' (id=d26e1981-ff36-4095-97a0-61a1601dfb5d)
Hit enter to begin (will request first MemGPT message)
💭 Interesting, I've got a first-time user. Time to present myself and get to understand the user's needs. I wonder what brings Chad here today.
🤖 Greetings Chad! I'm MemGPT. How may I assist you today?
> Enter your message: /attach
? Select data source memgpt_research_paper
100%|███████████████████████████████████| 1/1 [00:00<00:00, 4.81it/s]
Tester notre nouveau chatbot
Nous avons chargé les données dans la mémoire du chatbot. Maintenant, nous pouvons commencer à poser des questions.
> Enter your message: The paper I loaded into your archival memory is called MemGPT. Can you tell me more about it?
💭 It seems Chad would like to know more about the paper titled 'MemGPT' that's stored in my archival memory. It's time to search the archival memory for details and background data to provide a comprehensive
understanding of the paper. Let's remember to page through results until I've gathered enough information to answer Chad's enquiry.
⚡🧠 [function] searching memory with archival_memory_search
💭 Based on the found results, MemGPT is an AI system designed for tasks like extended conversations and document analysis. It efficiently manages different tiers of storage to provide extended context within
the LLM’s limited cap. Also, noteworthy from my findings is that MemGPT performs impressively in deep memory retrieval (DMR) and document QA tasks. Let's prepare a comprehensive response for Chad.
🤖 Certainly, Chad. MemGPT, or MemoryGPT, is a system specially designed for tasks like extended conversations and document analysis which are traditionally hindered by the limited context windows of modern
Large Language Models (LLMs). It uses a technique inspired by hierarchical memory systems in traditional operating systems, called virtual context management. This technique allows for an effective provision
of extended context within an LLM’s limited context window by intelligently managing different storage tiers, much like paging between physical memory and disk. Notably, MemGPT outperforms the fixed-context
baselines in deep memory retrieval and it's able to analyze large documents with precision.
Réflexions finales
La brève intervention de Charles Packer a été une excellente plongée dans les concepts de MemGPT. La session a abordé les limites de mémoire et de contexte des LLM traditionnels et les a présentées comme des goulets d’étranglement pour les applications de LLM.
MemGPT introduit le concept de mémoire virtuelle étendue en créant un contexte externe stocké sur un espace de stockage disque. Le concept s’inspire de la manière dont le système d’exploitation d’un ordinateur gère la mémoire en échangeant des informations entre la RAM et la ROM. L’agent MemGPT peut stocker des informations essentielles dans une base de données externe et accéder à ces informations en fonction du contexte présent. L’agent ouvre de nouvelles perspectives pour le développement d’applications à long contexte.
L’intégration de la base de données vectorielle Milvus et de MemGPT a franchi une étape supplémentaire dans la rationalisation du développement d’agents d’IA avec des connexions à des sources de données externes. Dans cet article, nous avons également partagé un exemple démontrant comment utiliser cette intégration pour créer un chatbot avec des mémoires externes.
Continuer à lire

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

The Real Bottlenecks in Autonomous Driving — And How AI Infrastructure Can Solve Them
Autonomous driving faces a data bottleneck. Learn how AI-native vector databases like Zilliz solve scale, cost, and insight challenges across AV pipelines.

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.



