Você pode integrar o MongoDB com o Mem0 para configurar a memória de longo prazo para seus agentes de IA que persiste em todas as conversas. Este tutorial configura o Mem0 para usar o MongoDB para armazenar vetores e, em seguida, cria um assistente com aumento de memória. Neste tutorial, você executa as seguintes tarefas:
Configure seu ambiente.
Use o MongoDB como o armazenar de vetor Mem0.
Armazenar e recuperar documentos de memória.
Crie um assistente que personalize suas respostas com base nas memórias que ele recupera.
Plano de fundo
Mem0 é uma camada de memória de código aberto para agentes e assistentes de IA. Em vez de passar um histórico inteiro de conversas para o LLM em cada solicitação, o Mem0 extrai fatores discretos das conversas, armazena cada fato como um documento e recupera somente os dados mais relevantes no momento da consulta.
Quando você configura o Mem0 para usar o MongoDB como seu espaço para armazenar vetores, o Mem0 persiste esses documentos de memória em uma coleção do MongoDB. Ele usa pesquisa vetorial para recuperação semântica e MongoDB Search para recuperação de palavras-chave de texto completo. Mem0 cria os dois índices para você na primeira vez que ele se conecta à sua coleção.
Pré-requisitos
Para concluir este tutorial, você deve ter os seguintes recursos:
Um dos seguintes tipos de cluster MongoDB :
Um Atlas cluster executando o MongoDB versão 6.0.11, 7.0.2 ou posterior. Garanta que seu endereço IP esteja incluído na lista de acessodo seu projeto Atlas .
Um sistema local do Atlas criado usando Python e Docker. Instale o
atlas-local-lib-py(pip install atlas-local-lib-py) para criar e gerenciar implantações locais programaticamente. Para saber mais, consulte o repositório atlas-local-lib-py .Um cluster da MongoDB Community com o Search e o Vector Search instalados.
Uma chave de API OpenAI. Você deve ter uma conta OpenAI com créditos disponíveis para solicitações de API. Para saber mais sobre como registrar uma conta OpenAI, consulte o site da API OpenAI.
Python v3.10 ou posterior.
Configurar o ambiente
Instalar dependências.
Execute os seguintes comandos no seu terminal para criar um novo diretório denominado mem0-mongodb-project e instalar as dependências necessárias:
mkdir mem0-mongodb-project cd mem0-mongodb-project pip install mem0ai pymongo openai python-dotenv
Mem0 exige PyMongo v4.13.2 ou versão posterior. O comando anterior instala a versão mais recente do PyMongo.
Defina suas variáveis de ambiente.
No seu diretório mem0-mongodb-project, crie um arquivo .env e adicione o seguinte código:
OPENAI_API_KEY="<openai-api-key>" MONGODB_URI="<connection-string>"
Substitua <connection-string> pela string de conexão do seu cluster do Atlas ou da implantação local do Atlas.
Sua string de conexão deve usar o seguinte formato:
mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net
IMPORTANTE: certifique-se de que a string de conexão inclua as credenciais do usuário de banco de dados. Para aprender mais sobre como localizar sua string de conexão, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.
Sua string de conexão deve usar o seguinte formato:
mongodb://localhost:<port-number>/?directConnection=true
Para saber mais, consulte Connection strings.
Crie um arquivo de projeto.
No seu diretório mem0-mongodb-project, crie um arquivo chamado main.py. Adicione o seguinte código a este arquivo para carregar suas variáveis de ambiente:
from mem0 import Memory from openai import OpenAI from dotenv import load_dotenv import os load_dotenv()
Nas próximas etapas, você adicionará código a este arquivo para configurar o Mem0 e criar seu assistente.
Armazenar e Recuperar Dados de Memória
Nesta seção, você configura o Mem0 para usar o MongoDB como seu armazenamento de vetor. Em seguida, você armazena memórias que o Mem0 extrai de conversas e as recupera usando pesquisa semântica.
Configure o MongoDB como um armazenamento de vetor.
Para usar MongoDB como o armazenar de vetor Mem0, adicione o seguinte código ao seu arquivo main.py:
config = { "llm": { "provider": "openai", "config": { "model": "gpt-4o-mini", "temperature": 0.1, "max_tokens": 2000, }, }, "embedder": { "provider": "openai", "config": { "model": "text-embedding-3-small", "embedding_dims": 1536, }, }, "vector_store": { "provider": "mongodb", "config": { "mongo_uri": os.environ["MONGODB_URI"], "db_name": "mem0_db", "collection_name": "agent_memory", "embedding_model_dims": 1536, }, }, } m = Memory.from_config(config)
Este código define as seguintes chaves no dicionário config:
llm: Especificagpt-4o-minicomo o modelo que extrai fatos de conversasembedder: Especificatext-embedding-3-smallcomo o modelo que gera o embeddingvector_store: Configura o MongoDB como o repositório de vetor
O índice deve levar cerca de um minuto para ser criado. Enquanto constrói, o índice está em um estado de sincronização inicial . Quando terminar de ser criado, você poderá começar a consultar os dados em sua coleção.
Armazenar memórias de uma conversa.
Adicione o seguinte código para extrair e armazenar memórias de uma conversa sobre a realocação de um usuário:
messages = [ {"role": "user", "content": "I'm moving to Berlin next month."}, {"role": "assistant", "content": "I'll remember that you're relocating to Berlin."}, ] result = m.add(messages, user_id="alice") print(result)
Quando você passa dados de conversação para o método add(), Mem0 usa o LLM para extrair fatos da conversação e grava cada fato em sua coleção como um documento de memória separado.
Armazenar memórias de uma segunda conversa.
Adicione o seguinte código para armazenar memórias de uma segunda conversa, que o Mem0 adiciona ao perfil de memória do mesmo usuário:
messages = [ {"role": "user", "content": "I prefer concise answers and I use Python daily."}, {"role": "assistant", "content": "Noted. I'll keep my responses brief and Python-focused."}, ] result = m.add(messages, user_id="alice") print(result)
Pesquisar as memórias armazenadas.
Para pesquisar dados de memória que sejam resposta a uma query sobre a realocação do usuário, adicione o seguinte código ao seu arquivo main.py:
print("\nWaiting for the MongoDB Vector Search index to finish building...") time.sleep(60) results = m.search( query="When is Alice moving?", filters={"user_id": "alice"}, top_k=5, ) for mem in results["results"]: print(mem["memory"], "- score:", mem["score"])
Antes de executar a query, o código aguarda 60 segundos para permitir que o índice de pesquisa vetorial do MongoDB termine de ser criado.
Retornar o histórico completo da memória.
Para retornar o histórico completo de memória do usuário sem executar uma pesquisa semântica, adicione o seguinte código ao seu arquivo main.py:
all_memories = m.get_all(filters={"user_id": "alice"}) for mem in all_memories["results"]: print(mem["id"], mem["memory"])
Dica
Para inspecionar os documentos de memória armazenados, navegue até a coleção mem0_db.agent_memory na IU do Atlas. Para aprender mais, consulte Visualizar coleções.
Criar um assistente com memória aumentada
Esta seção mostra como combinar armazenamento de memória e recuperação em um assistente que personaliza suas respostas. Antes que o assistente responda, ele recupera as memórias mais relevantes para a mensagem atual e as adiciona ao prompt do sistema. Depois que ele responde, ele armazena a nova rodada de conversa para que as memórias cresçam a cada troca.
Recuperar memórias e criar o prompt do sistema.
No seu arquivo main.py, adicione o seguinte código para definir uma função que pesquisa as memórias mais relevantes para uma mensagem e adiciona essas memórias ao prompt do sistema:
openai_client = OpenAI() USER_ID = "alice" def build_system_prompt(user_message): # Retrieve the memories that are most relevant to the message relevant = m.search( query=user_message, filters={"user_id": USER_ID}, top_k=5, ) memory_text = "\n".join(f"- {mem['memory']}" for mem in relevant["results"]) # Add the retrieved memories to the system prompt system_prompt = "You are a helpful personal assistant." if memory_text: system_prompt += ( " Use the following facts to personalize your response:\n" f"{memory_text}" ) return system_prompt
Gerar uma resposta e armazenar a rodada da conversa.
Adicione o seguinte código para definir uma função que gera uma resposta personalizada e armazena a nova rodada de conversa como memórias:
def chat(user_message): # Generate a response response = openai_client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": build_system_prompt(user_message)}, {"role": "user", "content": user_message}, ], ) assistant_message = response.choices[0].message.content # Store the new conversation turn as memories m.add( [ {"role": "user", "content": user_message}, {"role": "assistant", "content": assistant_message}, ], user_id=USER_ID, ) return assistant_message print(chat("Can you recommend a programming meetup in my city?"))
O assistente recomenda um encontro de Python em Berlim porque recuperou as preferências de localização e linguagem da Alice do MongoDB antes de montar o prompt.
Execute o arquivo
Para executar o arquivo main.py, execute o seguinte comando do seu diretório mem0-mongodb-project:
python main.py
Se o comando for executado com êxito, a saída se assemelha ao seguinte:
# Output from the first add() method that stores relocation data {'results': [{'id': '...', 'memory': 'User is moving to Berlin around September 2026.', 'event': 'ADD'}]} # Output from the second add() method that stores user preferences {'results': [{'id': '...', 'memory': 'Prefers concise answers', 'event': 'ADD'}, {'id': '...', 'memory': 'Uses Python daily', 'event': 'ADD'}]} Waiting for the MongoDB Vector Search index to finish building... # Output from the search() method that retrieves the relocation memory User is moving to Berlin in September 2026. - score: 0.38553877995545677User is moving to Berlin around September 2026. - score: 0.7043201923370361 # Output from the get_all() method that returns the full memory history <id> User is moving to Berlin around September 2026. <id> Prefers concise answers <id> Uses Python daily # Output from the chat() method that asks the assistant about programming meetups Since you're moving to Berlin around September 25, 2026, I recommend checking platforms like Meetup.com or Eventbrite closer to your move for local Python programming meetups. You can also follow local tech communities on social media for updates on events.
Próximos passos
Para aprender mais sobre as chaves de configuração do Mem0 e o conjunto completo de métodos Memory, consulte Integrar MongoDB com Mem0.
Para saber mais sobre os índices que o Mem0 cria na sua coleção, consulte Criar um índice de Vector Search do MongoDB e Gerenciar índices de pesquisa do MongoDB .