Введение в MemGPT и его интеграцию с Milvus
Во время нашего митапа по неструктурированным данным в мае к нам присоединился Charles Packer, аспирант UC Berkeley и соучредитель MemoryGPT (MemGPT). Charles рассказал о фундаментальном узком месте современных больших языковых моделей (LLMs): ограниченной памяти, и объяснил, как MemGPT стремится решить эту проблему, вдохновляясь дизайном ОС.
В этом блоге будут рассмотрены ключевые концепции, обсуждавшиеся в выступлении, и объяснена «виртуальная расширенная память», представленная MemGPT. Однако если вы хотите получить знания из первых рук, вы можете пересмотреть всё выступление на YouTube.
Ограниченная память в современных LLM
Charles начал своё выступление с представления памяти как контекста для LLM и подчеркнул её важность: “Для LLM память — это всё.” Контекстное окно LLM определяет, сколько информации она может удерживать во время разговора. Эта способность удержания позволяет языковой модели вспоминать информацию из предыдущих запросов, что делает её мощным инструментом для разработки различных чат-бот-приложений.
Однако контекстное окно у большинства популярных LLM весьма ограничено. Несколько примеров: 32 тыс. токенов для GPT4 и 128 тыс. для GPT4-Turbo. Ограниченная память означает, что такие чат-бот-приложения склонны забывать более ранние разговоры после определённого количества запросов, что может приводить к разочаровывающему пользовательскому опыту. Charles подчеркнул эту проблему как серьёзное узкое место для приложений на базе LLM, дополнительно заявив, что LLM сводятся к роли поисковых систем, а не ассистентов.
Связи между поисковыми системами, LLM и ИИ-ассистентами
Ближайшими решениями проблемы памяти являются генерация с дополнением извлечением (RAG) и LLM с длинным контекстом, такие как Gemini. Но хотя они и предлагают некоторое улучшение, RAG не является настоящей памятью, а LLM с длинным контекстом многократно увеличивают вычислительные затраты. Более того, посредственная производительность моделей с длинным контекстом, таких как DevinAI, доказывает, что проблема не в ограниченных контекстах; вместо этого она заключается в загрязнении контекста, вызванном неправильным управлением токенами.
MemGPT: от поисковых систем к ассистентам
MemGPT вводит виртуально расширенное контекстное окно, вдохновлённое пагинацией памяти, реализованной в компьютерных системах. В компьютерах ключевая информация хранится в памяти (RAM) для более быстрого доступа, но когда RAM заполняется, оставшиеся данные сохраняются в постоянном хранилище (ROM). Операционная система (ОС) перемещает информацию между RAM и ROM в зависимости от того, к чему ей нужен доступ.
MemGPT следует той же концепции, создавая расширенную систему памяти. Он разделяет контекст LLM на две части.
Основной контекст: Это контекстное окно базовой LLM. Оно имеет ограниченную пропускную способность и хранит наиболее релевантную информацию, к которой можно быстро получить доступ.
Внешний контекст: Внешний контекст создаётся в постоянном хранилище (ROM) и имеет бесконечное окно. Он сохраняет ключевые идеи и информацию по мере продолжения разговора и заполнения основного контекста.
MemGPT берёт на себя управление потоком информации между двумя контекстами. Он динамически обновляет память на основе текущего контекста, эффективно перемещая информацию между основным и внешним хранилищами памяти. Этот контроль и эффективность являются ключевыми для производительности системы.
Этот подход позиционирует MemGPT как ключевой компонент в приложениях, которым требуется память с длинным контекстом. Например, чат-боты персональных ассистентов, которым необходимо сохранять ключевые детали жизни пользователя, могут получить значительную пользу. Личные отношения и рабочие детали хранятся во внешнем контексте и извлекаются по мере необходимости в ходе текущего разговора. Этот подход предлагает пользователям по-настоящему «персональный» опыт, повышая релевантность и полезность системы.
Структура MemGPT
Charles объяснил ключевые различия между архитектурным дизайном MemGPT и стандартной LLM. Первое — это различие в обработке контекста, которое мы подробно обсудили выше. Второе — это то, как она обрабатывает входные и выходные данные. Ее входные и выходные данные структурированы как JSON, рассматривая их как события и вызовы функций, а не как обычный текст.
Standard LLM Setup
How MemGPT works
Она может принимать документы, пользовательские запросы и системные оповещения в качестве входных данных, инициируя событие в LLM. Событие анализируется и передается в LLM, которая использует расширенный контекст для обработки требования и выполнения действий, таких как вызов функции. Такой архитектурный дизайн позволяет ей действовать как агент, обученный выполнять конкретные задачи. Например, когда получено электронное письмо, оно может инициировать событие, и LLM проанализирует письмо, чтобы извлечь и выделить ключевые детали.
MemGPT как сервис
Charles завершил сессии объяснением того, как MemGPT можно развернуть на частном сервере для долгосрочного использования. Каждое взаимодействие и запрос сохраняются в базе данных с состоянием, к которой можно получить доступ даже после закрытия системы.
Поскольку агент MemGPT находится на сервере, доступ к нему осуществляется через REST application programming interface (API). К агенту можно получить доступ из любого места через интернет, что упрощает интеграцию с коммерческими приложениями.
Интеграция MemGPT с векторной базой данных Milvus
Milvus — это векторная база данных с открытым исходным кодом для хранения и извлечения векторов в масштабе миллиардов. Это также одна из самых важных технологий для создания приложений retrieval augmented generation (RAG).
Milvus интегрирован с MemGPT, что упрощает разработчикам создание AI-агентов с подключениями к внешним источникам данных.
В следующем примере мы будем использовать MemGPT для общения с пользовательским источником данных, хранящимся в 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 для быстрого прототипирования.
Важное примечание: Если у вас больший объем данных, например, более миллиона документов, мы рекомендуем настроить более производительный сервер Milvus на Docker или Kubernetes. В таких случаях ваш URI должен быть URI сервера, например, <http://localhost:19530>.
Создание внешнего источника данных
На этом шаге мы должны создать источник данных, чтобы передавать внешние данные в чат-бот MemGPT. Мы будем использовать исследовательскую статью MemGPT в качестве примера источника данных.
Чтобы скачать эту статью, мы будем использовать команду curl. Вы также можете просто скачать 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 (вы можете использовать любую персону, какую захотите):
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.
Заключительные мысли
Краткое выступление Чарльза Пакера стало отличным погружением в концепции MemGPT. На сессии обсуждались ограничения памяти и контекста традиционных LLM, которые были представлены как узкие места для приложений на базе LLM.
MemGPT вводит концепцию расширенной виртуальной памяти, создавая внешний контекст, хранящийся на дисковом накопителе. Эта концепция вдохновлена тем, как операционная система компьютера управляет памятью, обмениваясь информацией между RAM и ROM. Агент MemGPT может хранить важную информацию во внешней базе данных и получать к ней доступ на основе текущего контекста. Агент открывает новые возможности для разработки приложений с длинным контекстом.
Интеграция векторной базы данных Milvus и MemGPT сделала еще один шаг вперед в упрощении разработки AI Agents с подключениями к внешним источникам данных. В этом посте мы также поделились примером, демонстрирующим, как использовать эту интеграцию для создания чат-бота с внешними воспоминаниями.
Читать далее

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.



