Você pode integrar o MongoDB ao Mem0, uma camada de memória de código aberto para agentes e assistentes de IA que extrai, armazena e recupera dados de conversas ao longo do tempo. Quando você configura o Mem0 para usar o MongoDB como seu armazenamento de vetores, o Mem0 persiste a memória do agente em suas coleções do 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.
Começar
Para concluir um tutorial que configura o Mem0 para usar o MongoDB, consulte Introdução à integração do MongoDB Mem0.
Instalação
Mem0 requer Python v3.10 ou posterior e PyMongo v4.13.2 ou posterior. Para instalar as versões mais recentes do Mem0 e do PyMongo, execute o seguinte comando:
pip install mem0ai pymongo
Uso
Para usar o MongoDB como o armazenar de vetor Mem0, passe um dicionário de configuração para Memory.from_config() que define a chave provider do dicionário vector_store como mongodb.
Selecione a aba Basic initialization para visualizar um exemplo básico de configuração do MongoDB e Mem0, ou selecione a aba Custom configuration para ver como configurar a integração com configurações personalizadas.
Para inicializar o repositório de vetores, especifique sua string de conexão do MongoDB, nome do banco de dados, nome da coleção e o número de dimensões que seu modelo de embedding produz. O exemplo a seguir define essas chaves no dicionário vector_store.config:
import os from mem0 import Memory config = { "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)
O dicionário de configuração também aceita as chaves llm e embedder, que você pode usar para substituir os modelos OpenAI padrão por qualquer provedor compatível com Mem0. O exemplo a seguir define estas chaves opcionais:
import os from mem0 import Memory 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, }, }, "history_db_path": os.path.expanduser("~/.mem0/history.db"), } m = Memory.from_config(config)
O valor da chave embedding_model_dims no dicionário vector_store.config deve corresponder ao número de dimensões que o incorporador configurado produz.
Quando você chama o método Memory.from_config() pela primeira vez, Mem0 cria a coleção de destino se ela ainda não existir e cria um índice de pesquisa vetorial do MongoDB e um índice de pesquisa do MongoDB na coleção. Como a construção desses índices é assíncrona, as pesquisas podem retornar resultados vazios até que a construção de índice seja concluída.
Métodos
Esta seção descreve os métodos fornecidos pela classe Memory. Cada método opera na coleção que você configura no dicionário vector_store.config.
Para definir o escopo de um método para um usuário específico, agente ou executar de conversação, passe um dicionário filters que contenha pelo menos uma das chaves user_id, agent_id ou run_id.
add()
O método add() extrai fatos de uma conversa e os grava em sua coleção como documentos de memória. Se uma memória semanticamente equivalente já existe para a entidade, Mem0 atualiza essa memória em vez de criar um documento duplicado.
O exemplo a seguir passa uma conversa para o método add() e define o escopo da memória resultante para um usuário específico:
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)
get()
O método get() recupera um único documento de memória pelo seu valor de ID sem executar uma pesquisa vetorial.
O exemplo a seguir recupera uma memória diretamente pelo seu ID:
memory = m.get(memory_id="<memory-id>") print(memory)
O parâmetro memory_id é obrigatório e aceita o valor id do documento de memória a ser recuperado. Se não houver memória com esse ID, o método get() retornará None.
search()
O método search() executa uma pesquisa semântica no índice de pesquisa vetorial do MongoDB e retorna as memórias que são mais relevantes para uma string da query.
O exemplo a seguir pesquisa as memórias de um usuário específico pelos cinco resultados mais relevantes:
results = m.search( query="Where does Alice live?", filters={"user_id": "alice"}, top_k=5, ) for mem in results["results"]: print(mem["memory"], "- score:", mem["score"])
get_all()
O método get_all() retorna os documentos de memória armazenados para uma determinada entidade sem executar uma pesquisa semântica. Utilize este método para exibir o histórico de memória completo de uma entidade.
O exemplo a seguir retorna e imprime todas as memórias de um usuário específico:
all_memories = m.get_all(filters={"user_id": "alice"}) for mem in all_memories["results"]: print(mem["id"], mem["memory"])
update()
O método update() substitui o texto de um documento de memória existente. Mem0 recalcula o embedding a partir do novo texto e atualiza o documento no local.
O exemplo a seguir substitui o texto de uma memória existente:
m.update(memory_id="<memory-id>", text="Alice relocated to Berlin in July 2025.")
Delete()
O método delete() exclui um único documento de memória da sua coleção.
O exemplo a seguir exclui uma memória pela sua ID:
m.delete(memory_id="<memory-id>")
O parâmetro memory_id é obrigatório e aceita o valor id do documento de memória a ser excluir.
delete_all()
O método delete_all() exclui todos os documentos de memória para uma determinada entidade da sua coleção.
O exemplo a seguir exclui todas as memórias para um usuário específico:
m.delete_all(user_id="alice")
histórico()
O método history() retorna o histórico de edições para uma única memória, incluindo cada versão do texto e o tipo de evento. Mem0 armazena este histórico em um banco de dados SQLite local em vez de no MongoDB. Para alterar onde o Mem0 grava esse banco de dados, defina a chave history_db_path no seu dicionário de configuração.
O exemplo a seguir recupera e imprime o histórico de edições para uma memória:
history = m.history(memory_id="<memory-id>") for entry in history: print(entry["event"], entry["old_memory"], entry["new_memory"])
O parâmetro memory_id é obrigatório e aceita o valor id do documento de memória cujo histórico você deseja recuperar.
reset()
O método reset() executa as seguintes ações:
Exclui sua coleção do MongoDB e seus índices de pesquisa vetorial do MongoDB e do MongoDB Search
Redefine o banco de dados de histórico local
Recria a coleção e seus índices do zero
Use este método para limpar todas as memórias em vez de usar o método delete_all() para exclui-las uma entidade por vez.
m.reset()
reset() não aceita nenhum parâmetro e exclui todas as memórias que Mem0 armazenou por meio desta instância Memory.
close()
O método close() libera a conexão SQLite local que o Mem0 usa para o banco de dados de histórico. Este método não afeta sua conexão com o MongoDB.
m.close()
close() não aceita parâmetros. Mem0 chamar automaticamente se você usar a instância Memory como um gerenciador de contexto.
Índices de pesquisa
Mem0 cria os seguintes índices em sua coleção na primeira vez que se conecta. Você também pode criar ou inspecionar esses índices manualmente. Para saber mais, consulte Criar um índice de Vector Search do MongoDB .
O índice de pesquisa vetorial do MongoDB tem o nome <collectionName>_vector_index, onde <collectionName> é o nome da coleção que armazena documentos de memória. O índice usa a seguinte definição:
{ "fields": [ { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" } ] }
O índice de pesquisa do MongoDB Search é denominado <collection-name>_text_search_index e usa a seguinte definição:
{ "mappings": { "dynamic": false, "fields": { "payload": { "type": "document", "fields": { "data": { "type": "string" }, "text_lemmatized": { "type": "string" } } } } } }
Mem0 usa o índice de pesquisa do MongoDB Search para executar pesquisas por palavra-chave que complementam os resultados semânticos de search(). Se o índice não existir, Mem0 log um aviso e retorna apenas resultados semânticos.
Recursos adicionais
Para aprender mais sobre como usar o Mem0 com o MongoDB, consulte: