Você pode integrar o MongoDB ao Mem0 para configurar a memória de longo prazo para seus agentes de IA que persiste nas conversas. Este tutorial configura o Mem0 para usar o MongoDB como seu armazenamento de vetores e, em seguida, cria um assistente aumentado a memória. Neste tutorial, você executa as seguintes tarefas:
Configure seu ambiente.
Utilize o MongoDB como o armazenamento de vetores Mem0.
Armazene e recupere documentos de memória.
Crie um assistente que personalize suas respostas com base nas memória que ele recupera.
Plano de fundo
Mem0 é uma camada de memória open source 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 utilizar o MongoDB como seu armazenamento de vetor, o Mem0 persiste estes documentos de memória em uma coleção MongoDB . Ele usa o MongoDB Vector Search para recuperação semântica e o MongoDB Search para recuperação de palavras-chave de texto completo. Mem0 cria os dois índices para você na primeira vez que se conecta à sua collection.
Pré-requisitos
Para concluir este tutorial, você deve ter os seguintes recursos:
Um dos seguintes tipos de cluster MongoDB :
Um cluster do Atlas executando a versão 6.0.11 do MongoDB, 7.0.2, ou posterior. Certifique-se de que seu endereço IP esteja incluído na lista de acesso do seu projeto Atlas.
Um sistema local do Atlas criado usando Python e Docker. Instale
atlas-local-lib-pyopip 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 da OpenAI. Você deve ter uma conta da 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 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
Para saber mais, 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 denominado 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()
Em etapas futuras, você adicionará código a este arquivo para configurar Mem0 e construir seu assistente.
Armazenar e recuperar dados de memória
Nesta seção, você configura o Mem0 para utilizar o MongoDB como seu armazenamento de vetor. Em seguida, você armazena memória que Mem0 extrai de conversas e as recupera usando a pesquisa semântica.
Configure o MongoDB como um armazenamento de vetor.
Para utilizar o MongoDB como o armazenamento de vetores 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: especifica ogpt-4o-minicomo o modelo que extrai feitos das conversasembedder: especificatext-embedding-3-smallcomo o modelo que gera as incorporaçõesvector_store: Configura o MongoDB como o armazenamento vetorial
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.
Armazene recordações de uma conversa.
Adicione o seguinte código para extrair e armazenar recordações 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 para o método add(), Mem0 usa o LLM para extrair detalhes da conversa e grava cada fato em sua collection como um documento de memória separado.
Armazene recordações de uma segunda conversa.
Adicione o seguinte código para armazenar recordações de uma segunda conversa, que Mem0 adiciona ao mesmo perfil de memória do 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)
Pesquise as recordações armazenadas.
Para pesquisar dados de memória que respondam 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 do MongoDB Vector Search termine de construir.
Retorne 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 pela mem0_db.agent_memory coleção na UI do Atlas . Para saber mais,consulte Visualizar collections.
Crie um assistente aprimorado por memória
Esta seção mostra como combinar o armazenamento e a recuperação da memória em um assistente que personaliza suas respostas. Antes de o assistente responder, ele recupera as memória que são mais relevantes para a mensagem atual e as adiciona ao prompt do sistema. Depois de responder, ele armazena a nova vez de conversa para que as memória cresçam a cada troca.
Recupere memória e crie o prompt do sistema.
Em seu arquivo main.py, adicione o seguinte código para definir uma função que pesquisa as recordações mais relevantes para uma mensagem e adiciona essas recordações 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
Gere uma resposta e armazene a vez de conversa.
Adicione o seguinte código para definir uma função que gera uma resposta personalizada e armazena a nova mudança de conversa como gravações:
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 evento do Python em Salim porque ele recuperou as preferências de localização e idioma de Alice do MongoDB antes de montar o prompt.
Executar o arquivo
Para executar o arquivo main.py, execute o seguinte comando a partir do seu diretório mem0-mongodb-project:
python main.py
Se o comando for executado com sucesso, a saída será semelhante 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 saber mais sobre as0 chaves de configuração Mem e o conjunto completo de Memory métodos do, consulte Integrar MongoDB com0 Mem.
Para saber mais sobre os índices que o Mem0 cria em sua coleção, consulte Criar um índice de Vector Search do MongoDB e Gerenciar índices de pesquisa do MongoDB .