Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Integre o MongoDB com o Mem0

Você pode integrar o MongoDB com o Mem, 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 0Mem0 para usar o MongoDB como seu armazenamento de vetores, o Mem0 mantém 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.

Para concluir um tutorial que configura o Mem0 para usar o MongoDB, consulte Introdução à integração do MongoDB Mem0 .

Mem0 exige 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

Para utilizar o MongoDB como o armazenamento de vetores Mem0, passe um dicionário de configuração para Memory.from_config() que defina a chave provider do dicionário vector_store como mongodb.

Selecione a aba Basic initialization para visualizar um exemplo de configuração básica do MongoDB e Mem0 ou selecione a aba Custom configuration para ver como configurar a integração com configurações personalizadas.

Para inicializar o armazenamento de vetor, especifique sua string de conexão do MongoDB , o nome do banco de dados , o nome da collection e o número de dimensões que seu modelo de incorporação produz. O exemplo seguinte define estas 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 o 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 seu 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 do MongoDB Vector Search e um índice do MongoDB Search na coleção. Como esses índices são construídos de forma assíncrona, as pesquisas podem retornar resultados vazios até que a criação do índice seja concluída.

Use estas chaves para configurar o armazenamento de vetores.

Quando você define a chave provider como mongodb, o Mem0 lê suas configurações do MongoDB do dicionário config aninhado dentro do dicionário vector_store. Esse dicionário aceita as seguintes chaves. Cada chave é opcional e retorna ao valor padrão especificado, mas você deve definir mongo_uri para se conectar a qualquer sistema que não seja local.

Chave
necessidade
Descrição

mongo_uri

Opcional

A string de conexão para sua deployment do MongoDB . Padrão mongodb://localhost:27017 é. Para saber mais sobre como localizar sua string de conexão, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.

db_name

Opcional

O nome do banco de dados que contém a collection de memória. Padrão é mem0_db. Mem0 cria o banco de dados se ainda não existir.

collection_name

Opcional

O nome da coleção que armazena documentos de memória. Padrão é mem0. Mem0 cria a collection se ela ainda não existir.

embedding_model_dims

Opcional

O número de dimensões nos vetores de incorporação. Padrão é 1536. Esse valor deve corresponder ao número de dimensões que seu incorporador configurado produz.

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, agente ou execução de conversa específicos, passe um dicionário filters que contenha pelo menos uma das chaves user_id, agent_id ou run_id.

O método add() extrai fato de uma conversa e os grava em sua collection como documentos de memória. Se já existir uma memória semanticamente equivalente para a entidade, Mem0 atualizará essa memória em vez de criar um documento duplicado.

O exemplo a seguir passa uma conversa para o método add() e tem 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)
{'results': [{'id': '...', 'memory': 'User is moving to Berlin around September 2026.', 'event': 'ADD'}]}

Use estes parâmetros para configurar como o Mem0 armazena memória.

Parâmetro
necessidade
Descrição

messages

Obrigatório

A conversa começa a extrair dados, seja como uma lista de dicionários {"role": ..., "content": ...} ou como uma string.

user_id

Condicional

Um identificador do usuário ao qual a memória pertence. Você deve fornecer pelo menos uma das chaves user_id, agent_id ou run_id.

agent_id

Condicional

Um identificador do agente ao qual a memória pertence. Obrigatório se você não fornecer um valor user_id ou run_id.

run_id

Condicional

Um identificador para uma execução de conversa ou sessão específica. Obrigatório se você não fornecer um valor user_id ou agent_id.

metadata

Opcional

Os pares de valores-chave a serem anexados a cada documento de memória que esta chamada grava. Você pode consultar estes valores utilizando o parâmetro filters do método search().

expiration_date

Opcional

A data após a qual Mem0 exclui a memória dos resultados.

infer

Opcional

Se o Mem0 usa o LLM para extrair dados discretos antes de armazená-los. O padrão é True. Se False, Mem0 armazena o conteúdo bruto da mensagem.

memory_type

Opcional

O tipo de memória a armazenar.

prompt

Opcional

Um prompt de extração personalizado que substitui o modelo de extração de fatores padrão.

O método get() recupera um único documento de memória por seu valor de ID sem executar uma pesquisa vetorial.

O exemplo a seguir recupera uma memória diretamente por seu ID:

memory = m.get(memory_id="<memory-id>")
print(memory)
{'id': '...', 'memory': 'User is moving to Berlin around September 2026.',
'hash': '...', 'metadata': None, 'score': None, 'created_at': '...',
'updated_at': '...', 'user_id': 'alice', 'attributed_to': 'user'}

O parâmetro memory_id é exigido 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.

O método search() executa uma pesquisa semântica no índice MongoDB Vector Search e retorna as memória que são mais relevantes para uma string de query.

O exemplo a seguir pesquisa nas memória de um usuário específico os 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"])
User is moving to Berlin around September 2026. - score: 0.7043201923370361

Use estes parâmetros para configurar a query de pesquisa.

Parâmetro
necessidade
Descrição

query

Obrigatório

A query de linguagem natural que Mem0 utiliza para gerar a incorporação de pesquisa.

filters

Opcional

As condições de filtro a serem aplicadas junto com a query semântica. Deve conter pelo menos uma das chaves user_id, agent_id ou run_id. Oferece suporte a operadores de comparação, operadores de lista, operadores de string e os operadores lógicos AND, OR e NOT.

top_k

Opcional

O número máximo de resultados a retornar. Padrão é 20.

threshold

Opcional

A pontuação mínima de relevância que uma memória deve atender para aparecer nos resultados. Padrão é 0.1.

rerank

Opcional

Se Mem0 reclassifica os resultados antes de devolvê-los. O padrão é False.

explain

Opcional

Se incluir um detalhamento score_details para cada resultado. O padrão é False.

reference_date

Opcional

A data que Mem0 utiliza para resolver expressões de tempo relativo na query.

show_expired

Opcional

Se deve incluir recordações cuja expiration_date já passou. O padrão é False.

O método get_all() retorna os documentos de memória armazenados para uma determinada entidade sem executar uma pesquisa semântica. Use este método para exibir o histórico completo da memória de uma entidade.

O exemplo a seguir retorna e imprime todas as memória 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"])
<id> User is moving to Berlin around September 2026.

Utilize estes parâmetros para configurar quais memória o Mem0 retorna.

Parâmetro
necessidade
Descrição

filters

Opcional

As condições de filtro que identificam as memória a serem retornadas. Deve conter pelo menos um entre user_id, agent_id ou run_id.

top_k

Opcional

O número máximo de documentos a retornar. O padrão é 20.

show_expired

Opcional

Se deve incluir recordações cuja expiration_date já passou. O padrão é False.

O método update() substitui o texto de um documento de memória existente. Mem0 recalcula a incorporação 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.")

Use esses parâmetros para configurar a atualização.

Parâmetro
necessidade
Descrição

memory_id

Obrigatório

O valor id do documento de memória a ser atualizado.

text

Opcional

O texto de substituição para a memória. Mem0 calcula e armazena uma nova incorporação para este texto.

metadata

Opcional

Os metadados de substituição para o documento de memória.

expiration_date

Opcional

A data após a qual Mem0 exclui a memória dos resultados.

O método delete() exclui um único documento de memória da sua collection.

O exemplo a seguir exclui uma memória por seu 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 excluído.

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 recordações para um usuário específico:

m.delete_all(user_id="alice")

Utilize estes parâmetros para configurar quais memória o Mem0 exclui.

Parâmetro
necessidade
Descrição

user_id

Opcional

Exclui todas as recordações deste usuário. Você deve fornecer pelo menos um entre user_id, agent_id ou run_id.

agent_id

Opcional

Exclui todas as recordações para este agente.

run_id

Opcional

Exclui todas as memória para esta execução ou sessão.

O método history() retorna o histórico de edição para uma única memória, incluindo cada versão do texto e o tipo de evento . O Mem0 armazena esse 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ção de uma memória:

history = m.history(memory_id="<memory-id>")
for entry in history:
print(entry["event"], entry["old_memory"], entry["new_memory"])
ADD None User is moving to Berlin around September 2026.
UPDATE User is moving to Berlin around September 2026. Alice relocated to Berlin in July 2025.

O parâmetro memory_id é exigido e aceita o valor id do documento de memória cujo histórico você deseja recuperar.

O método reset() executa as seguintes ações:

  • Exclui sua coleção do MongoDB e seus índices do MongoDB Vector Search 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ória s em vez de usar o método delete_all() para excluí-las uma entidade de cada vez.

m.reset()

reset() não aceita nenhum parâmetro e exclui todas as memória que Mem0 armazenou através desta instância do Memory.

O método close() libera a conexão SQLite local que o Mem0 utiliza para o banco de dados de histórico. Este método não afeta sua conexão MongoDB .

m.close()

close() não aceita nenhum parâmetro. Mem0 chama isso automaticamente se você usar a instância Memory como gerenciador de contexto.

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 do MongoDB Vector Search é denominado <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 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" }
}
}
}
}
}

O Mem0 utiliza o índice do MongoDB Search para executar pesquisas de palavras-chave que completam os resultados semânticas do search(). Se o índice não existir, Mem0 registra um aviso e retorna somente resultados semânticas.

Para saber mais sobre como usar o Mem0 com o MongoDB, consulte: