MemGPT mit Milvus-Integration
MemGPT macht es einfach, zustandsbehaftete LLM-Agenten zu erstellen und einzusetzen. Mit der Milvus-Integration können Sie Agenten mit Verbindungen zu externen Datenquellen (RAG) erstellen.
In diesem Beispiel werden wir MemGPT verwenden, um mit einer benutzerdefinierten Datenquelle zu chatten, die in Milvus gespeichert ist.
Konfiguration
Um MemGPT auszuführen, sollten Sie sicherstellen, dass die Python-Version >= 3.10 ist.
Um das Milvus-Backend zu aktivieren, stellen Sie sicher, dass Sie die erforderlichen Abhängigkeiten mit installieren:
$ pip install 'pymemgpt[milvus]'
Sie können die Milvus-Verbindung über den Befehl
$ memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Sie setzen einfach die URI auf den lokalen Dateipfad, z. B. ~/.memgpt/milvus.db
, wodurch automatisch die lokale Milvus-Dienstinstanz durch Milvus Lite aufgerufen wird.
Wenn Sie große Datenmengen haben, z. B. mehr als eine Million Dokumente, empfehlen wir, einen leistungsfähigeren Milvus-Server auf Docker oder Kubenetes einzurichten. In diesem Fall sollte Ihre URI die Server-URI sein, z. B. http://localhost:19530
.
Erstellen einer externen Datenquelle
Um externe Daten in einen MemGPT-Chatbot einzuspeisen, müssen wir zunächst eine Datenquelle erstellen.
Um das MemGPT-Forschungspapier herunterzuladen, verwenden wir curl
(Sie können auch einfach die PDF-Datei über Ihren Browser herunterladen):
# we're saving the file as "memgpt_research_paper.pdf"
$ curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Nun, da wir das Papier heruntergeladen haben, können wir eine MemGPT-Datenquelle mit memgpt load
erstellen:
$ 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
Anhängen der Datenquelle an einen MemGPT-Agenten
Nun, da wir diese Datenquelle erstellt haben, können wir sie jederzeit mit einem MemGPT-Chatbot verbinden.
Lassen Sie uns einen neuen Chatbot mit der Persona memgpt_doc
erstellen (Sie können aber jede beliebige Persona verwenden):
# reminder: `memgpt run --persona memgpt_doc` will create a new MemGPT agent using the `memgpt_doc` persona
$ memgpt run --persona memgpt_doc
Sobald wir mit dem Agenten chatten, können wir die Datenquelle an den Archivierungsspeicher des Agenten "anhängen":
? 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]
Testen unseres neuen Chatbots
Nun, da die Daten in den Speicher des Chatbots geladen wurden, können wir anfangen, Fragen dazu zu stellen:
> 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.