MemGPT avec intégration Milvus
MemGPT facilite la création et le déploiement d'agents LLM avec état. Avec l'intégration Milvus, vous pouvez construire des agents avec des connexions à des sources de données externes (RAG).
Dans cet exemple, nous allons utiliser MemGPT pour dialoguer avec une source de données personnalisée stockée dans Milvus.
Configuration de l'application
Pour exécuter MemGPT, vous devez vous assurer que la version de Python est >= 3.10.
Pour activer le backend Milvus, assurez-vous d'installer les dépendances nécessaires avec :
$ pip install 'pymemgpt[milvus]'
Vous pouvez configurer la connexion Milvus via la commande
$ memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Il vous suffit de définir l'URI sur le chemin du fichier local, par exemple ~/.memgpt/milvus.db
, ce qui invoquera automatiquement l'instance de service Milvus locale par le biais de Milvus Lite.
Si vous disposez de données à grande échelle, comme plus d'un million de documents, nous vous recommandons de configurer un serveur Milvus plus performant sur docker ou kubenetes. Dans ce cas, votre URI doit être l'URI du serveur, par exemple http://localhost:19530
.
Création d'une source de données externe
Pour alimenter un chatbot MemGPT avec des données externes, nous devons d'abord créer une source de données.
Pour télécharger le document de recherche MemGPT, nous utiliserons curl
(vous pouvez également télécharger le PDF à partir de votre navigateur) :
# we're saving the file as "memgpt_research_paper.pdf"
$ curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Maintenant que nous avons téléchargé le document, nous pouvons 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 que nous avons créé cette source de données, nous pouvons l'attacher à un chatbot MemGPT à tout moment.
Créons un nouveau chatbot en utilisant le persona memgpt_doc
(mais vous pouvez utiliser n'importe quel persona) :
# reminder: `memgpt run --persona memgpt_doc` will create a new MemGPT agent using the `memgpt_doc` persona
$ memgpt run --persona memgpt_doc
Une fois que nous sommes en train de chatter avec l'agent, nous pouvons "attacher" la source de données à la mémoire d'archivage 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]
Test de notre nouveau chatbot
Maintenant que les données ont été chargées dans la mémoire du chatbot, nous pouvons commencer à poser des questions à leur sujet :
> 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.