Introdução ao MemGPT e sua integração com o Milvus
Durante nosso encontro sobre dados não estruturados em maio, contamos com a participação de Charles Packer, estudante de PhD na UC Berkeley e cofundador da MemoryGPT (MemGPT). Charles destacou um gargalo fundamental nos atuais grandes modelos de linguagem (LLMs): memória limitada, e explicou como o MemGPT buscou resolver esse problema inspirando-se no design de sistemas operacionais.
Este blog abordará os principais conceitos discutidos na palestra e explicará a ‘memória estendida virtual’ introduzida pelo MemGPT. No entanto, se você quiser absorver o conhecimento em primeira mão, pode revisitar a palestra completa no YouTube.
Memória limitada nos LLMs atuais
Charles abriu sua palestra apresentando a memória como contexto para um LLM e destacando sua importância: “Para LLMs, memória é tudo.” A janela de contexto de um LLM define quanta informação ele consegue reter durante uma conversa. Essa capacidade de retenção permite que o modelo de linguagem recupere informações de consultas anteriores, tornando-o uma ferramenta poderosa para desenvolver diversas aplicações de chatbot.
No entanto, a janela de contexto é bastante limitada para a maioria dos LLMs populares. Alguns exemplos incluem 32 mil tokens para o GPT4 e 128 mil para o GPT4-Turbo. A memória limitada significa que essas aplicações de chatbot tendem a esquecer conversas mais antigas após um certo número de consultas, o que pode levar a uma experiência de usuário decepcionante. Charles destacou esse problema como um grande gargalo para aplicações de LLM, afirmando ainda que os LLMs acabam sendo reduzidos a mecanismos de busca em vez de assistentes.
As relações entre mecanismos de busca, LLMs e assistentes de IA
As soluções mais próximas para o problema de memória são a geração aumentada por recuperação (RAG) e LLMs de contexto longo como o Gemini. Mas, embora ofereçam alguma melhoria, RAG não é memória de verdade, e LLMs de contexto longo aumentam muitas vezes os custos computacionais. Além disso, o desempenho abaixo do esperado de modelos de contexto longo como o DevinAI prova que contextos limitados não são o problema; em vez disso, é a poluição de contexto causada pelo gerenciamento inadequado de tokens.
MemGPT: De mecanismos de busca a assistentes
O MemGPT introduz uma janela de contexto virtualmente estendida, inspirada na paginação de memória implementada em sistemas computacionais. Em computadores, informações importantes são armazenadas na memória (RAM) para acesso mais rápido, mas quando a RAM fica cheia, os dados restantes são armazenados em armazenamento persistente (ROM). O sistema operacional (OS) troca informações entre a RAM e a ROM dependendo do que precisa acessar.
O MemGPT segue o mesmo conceito criando um sistema de memória estendida. Ele divide o contexto do LLM em duas partes.
Contexto principal: Esta é a janela de contexto do LLM subjacente. Ela tem uma largura de banda limitada e armazena as informações mais relevantes que podem ser acessadas prontamente.
Contexto externo: O contexto externo é criado em armazenamento persistente (ROM) e tem uma janela infinita. Ele armazena ideias e informações importantes à medida que a conversa continua e o contexto principal fica cheio.
O MemGPT assume o controle do gerenciamento do fluxo de informações entre os dois contextos. Ele atualiza dinamicamente a memória com base no contexto atual, trocando informações de forma eficiente entre os armazenamentos de memória principal e externa. Esse controle e essa eficiência são fundamentais para o desempenho do sistema.
Esta abordagem posiciona o MemGPT como um componente crucial em aplicações que exigem memória de contexto longo. Por exemplo, chatbots de assistente pessoal, que precisam reter detalhes importantes da vida do usuário, podem se beneficiar significativamente. Relacionamentos pessoais e detalhes de trabalho são armazenados no contexto externo e recuperados conforme a conversa em andamento exige. Esta abordagem oferece aos usuários uma experiência verdadeiramente 'pessoal', aumentando a relevância e a utilidade do sistema.
Estrutura do MemGPT
Charles explicou as principais diferenças entre o design arquitetônico do MemGPT e um LLM padrão. Primeiro, há a diferença no tratamento do contexto, que discutimos em detalhes acima. Segundo, há a forma como ele lida com entradas e saídas. Suas entradas e saídas são estruturadas como JSON, tratando-as como eventos e chamadas de função em vez de texto simples.
Configuração padrão de LLM
Como o MemGPT funciona
Ele pode aceitar documentos, consultas de usuários e alertas do sistema como entrada, acionando um evento no LLM. O evento é analisado e transferido para o LLM, que utiliza o contexto estendido para processar o requisito e executar ações como uma chamada de função. Este design arquitetônico permite que ele atue como um agente treinado para realizar tarefas específicas. Por exemplo, quando um e-mail é recebido, ele pode acionar um evento, e o LLM analisará o e-mail para extrair e destacar detalhes importantes.
MemGPT como um Serviço
Charles concluiu as sessões explicando como o MemGPT pode ser implantado em um servidor privado para uso de longo prazo. Cada interação e consulta é mantida em um banco de dados com estado que pode ser acessado mesmo depois que o sistema é fechado.
Como o agente MemGPT vive em um servidor, ele é acessado por meio da interface de programação de aplicações REST (API). O agente pode ser acessado de qualquer lugar pela internet, facilitando a integração com aplicações comerciais.
Integração do MemGPT com o Banco de Dados Vetorial Milvus
Milvus é um banco de dados vetorial de código aberto para armazenamento e recuperação de vetores em escala de bilhões. Ele também é uma das tecnologias mais importantes para criar aplicações de geração aumentada por recuperação (RAG).
O Milvus foi integrado ao MemGPT, tornando mais fácil para os desenvolvedores criarem agentes de IA com conexões a fontes de dados externas.
No exemplo a seguir, usaremos o MemGPT para conversar com uma fonte de dados personalizada armazenada no Milvus.
Configuração
Instale as dependências necessárias.
pip install 'pymemgpt[milvus]'
Configure a conexão com o Milvus por meio do seguinte comando:
memgpt configure
...
? Select storage backend for archival data: milvus
? Enter the Milvus connection URI (Default: ~/.memgpt/milvus.db): ~/.memgpt/milvus.db
Você acabou de definir o URI para o caminho do arquivo local, por exemplo, ~/.memgpt/milvus.db, o que invocará automaticamente a instância local do serviço Milvus por meio do Milvus Lite, uma versão leve do Milvus para prototipagem rápida.
Observação Importante: Se você tiver uma quantidade maior de dados, como mais de um milhão de documentos, recomendamos configurar um servidor Milvus mais performático no Docker ou Kubernetes. Nesses casos, seu URI deve ser o URI do servidor, por exemplo, <http://localhost:19530>.
Criando uma fonte de dados externa
Nesta etapa, devemos criar uma fonte de dados para alimentar dados externos em um chatbot MemGPT. Usaremos o artigo de pesquisa do MemGPT como um exemplo de fonte de dados.
Para baixar este artigo, usaremos o comando curl. Você também pode simplesmente baixar o PDF pelo seu navegador.
curl -L -o memgpt_research_paper.pdf https://arxiv.org/pdf/2310.08560.pdf
Agora, baixamos o artigo. Em seguida, devemos criar uma fonte de dados do MemGPT usando memgpt load:
memgpt load directory --name memgpt_research_paper --input-files=memgpt_research_paper.pdf
Carregando arquivos: 100%|███████████████████████████████████| 1/1 [00:00<00:00, 3.94arquivo/s]
Carregados 74 trechos e 13 documentos de memgpt_research_paper
Anexando a fonte de dados a um agente MemGPT
Agora, criamos nossa fonte de dados. Podemos anexá-la a um chatbot MemGPT a qualquer momento.
Vamos criar um novo chatbot usando a persona memgpt_doc (você pode usar qualquer persona que quiser):
memgpt run --persona memgpt_doc
Ao conversar com o agente, podemos "anexar" a fonte de dados à memória de arquivo do agente:
? Gostaria de selecionar um agente existente? Não
🧬 Criando novo agente...
-> 🤖 Usando perfil de persona: 'sam_pov'
-> 🧑 Usando perfil humano: 'basic'
🎉 Novo agente 'PoliteButterfly' criado (id=d26e1981-ff36-4095-97a0-61a1601dfb5d)
Pressione enter para começar (solicitará a primeira mensagem do MemGPT)
💭 Interessante, tenho um usuário de primeira viagem. Hora de me apresentar e entender as necessidades do usuário. Fico me perguntando o que traz Chad aqui hoje.
🤖 Saudações, Chad! Eu sou o MemGPT. Como posso ajudá-lo hoje?
> Digite sua mensagem: /attach
? Selecione a fonte de dados memgpt_research_paper
100%|███████████████████████████████████| 1/1 [00:00<00:00, 4.81it/s]
Testando nosso novo chatbot
Carregamos os dados na memória do chatbot. Agora, podemos começar a fazer perguntas.
> Digite sua mensagem: O artigo que carreguei na sua memória de arquivo se chama MemGPT. Você pode me contar mais sobre ele?
💭 Parece que Chad gostaria de saber mais sobre o artigo intitulado 'MemGPT' que está armazenado na minha memória de arquivo. É hora de pesquisar na memória de arquivo por detalhes e dados de contexto para fornecer uma compreensão
abrangente do artigo. Vamos lembrar de percorrer os resultados até que eu tenha reunido informações suficientes para responder à pergunta de Chad.
⚡🧠 [function] pesquisando memória com archival_memory_search
💭 Com base nos resultados encontrados, MemGPT é um sistema de IA projetado para tarefas como conversas estendidas e análise de documentos. Ele gerencia com eficiência diferentes níveis de armazenamento para fornecer contexto estendido dentro
do limite restrito do LLM. Além disso, algo digno de nota em minhas descobertas é que o MemGPT apresenta um desempenho impressionante em recuperação de memória profunda (DMR) e tarefas de QA de documentos. Vamos preparar uma resposta abrangente para Chad.
🤖 Certamente, Chad. MemGPT, ou MemoryGPT, é um sistema especialmente projetado para tarefas como conversas estendidas e análise de documentos, que tradicionalmente são prejudicadas pelas janelas de contexto limitadas dos modelos
de linguagem grandes (LLMs) modernos. Ele usa uma técnica inspirada em sistemas de memória hierárquica de sistemas operacionais tradicionais, chamada gerenciamento de contexto virtual. Essa técnica permite o fornecimento efetivo
de contexto estendido dentro da janela de contexto limitada de um LLM, gerenciando inteligentemente diferentes níveis de armazenamento, de forma muito semelhante à paginação entre memória física e disco. Notavelmente, o MemGPT supera os baselines
de contexto fixo em recuperação de memória profunda e é capaz de analisar documentos grandes com precisão.
Considerações Finais
A breve palestra de Charles Packer foi um ótimo mergulho nos conceitos do MemGPT. A sessão discutiu as limitações de memória e contexto dos LLMs tradicionais e as apresentou como gargalos para aplicações de LLM.
O MemGPT introduz o conceito de memória virtual estendida ao criar um contexto externo armazenado em armazenamento em disco. O conceito é inspirado em como o sistema operacional de um computador gerencia a memória ao trocar informações entre RAM e ROM. O agente MemGPT pode armazenar informações vitais em um banco de dados externo e acessar as informações com base no contexto atual. O agente abre novos caminhos para o desenvolvimento de aplicações de contexto longo.
A integração do banco de dados vetorial Milvus e do MemGPT deu mais um passo para simplificar o desenvolvimento de Agentes de IA com conexões a fontes de dados externas. Neste post, também compartilhamos um exemplo que demonstra como usar essa integração para criar um chatbot com memórias externas.
Continue lendo

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.



