MemGPT с интеграцией Milvus
MemGPT упрощает создание и развертывание агентов LLM с поддержкой состояния. Благодаря интеграции с Milvus вы можете создавать агентов с подключением к внешним источникам данных (RAG).
В этом примере мы будем использовать MemGPT для общения с пользовательским источником данных, который хранится в Milvus.
Конфигурация
Чтобы запустить MemGPT, необходимо убедиться, что версия Python >= 3.10.
Чтобы включить бэкенд Milvus, убедитесь, что установили необходимые зависимости:
$ pip install 'pymemgpt[milvus]'
Вы можете настроить подключение Milvus с помощью команды
$ memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Достаточно указать URI на путь к локальному файлу, например, ~/.memgpt/milvus.db
, что автоматически вызовет локальный экземпляр сервиса Milvus через Milvus Lite.
Если у вас большой объем данных, например, более миллиона документов, мы рекомендуем установить более производительный сервер Milvus на docker или kubenetes. В этом случае URI должен быть URI сервера, например, http://localhost:19530
.
Создание внешнего источника данных
Чтобы передать внешние данные в чатбот MemGPT, нам сначала нужно создать источник данных.
Для загрузки исследовательской работы MemGPT мы используем curl
(вы также можете просто загрузить PDF-файл из браузера):
# we're saving the file as "memgpt_research_paper.pdf"
$ curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Теперь, когда статья загружена, мы можем создать источник данных MemGPT с помощью 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
Прикрепление источника данных к агенту MemGPT
Теперь, когда мы создали этот источник данных, мы можем в любой момент прикрепить его к чатботу MemGPT.
Давайте создадим новый чатбот, используя персону memgpt_doc
(но вы можете использовать любую персону):
# reminder: `memgpt run --persona memgpt_doc` will create a new MemGPT agent using the `memgpt_doc` persona
$ memgpt run --persona memgpt_doc
Как только мы начнем общаться с агентом, мы сможем "прикрепить" источник данных к архивной памяти агента:
? 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]
Тестирование нашего нового чатбота
Теперь, когда данные загружены в память чатбота, мы можем начать задавать вопросы о них:
> 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.