Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Integre MongoDB con Mem0

Puede integrar MongoDB con Mem0, una capa de memoria de código abierto para agentes y asistentes de IA que extrae, almacena y recupera hechos de las conversaciones a lo largo del tiempo. Cuando configure Mem0 para utilizar MongoDB como su almacén de vectores, Mem0 mantiene la memoria del agente en sus colecciones de MongoDB. Utiliza MongoDB Vector Search para la recuperación semántica y MongoDB Search para la recuperación de palabras clave de texto completo.

Para completar un tutorial que configura Mem0 para usar MongoDB, consulta Introducción a la integración de MongoDB Mem0.

Mem0 requiere Python v3.10 o posterior y PyMongo v4.13.2 o posterior. Para instalar las últimas versiones de Mem0 y PyMongo, ejecute el siguiente comando:

pip install mem0ai pymongo

Para usar MongoDB como almacén de vectores Mem0, pase un diccionario de configuración a Memory.from_config() que establezca la clave provider del diccionario vector_store en mongodb.

Seleccione la pestaña Basic initialization para ver un ejemplo básico de configuración de MongoDB y Mem0, o seleccione la pestaña Custom configuration para ver cómo configurar la integración con configuraciones personalizadas.

Para inicializar el almacén de vectores, especifique su cadena de conexión de MongoDB, el nombre de la base de datos, el nombre de la colección y el número de dimensiones que produce su modelo de incrustación. El siguiente ejemplo establece estas claves en el diccionario 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)

El diccionario de configuración también acepta las claves llm y embedder, que puede utilizar para reemplazar los modelos de OpenAI por defecto con cualquier proveedor compatible con Mem0. En el siguiente ejemplo se establecen estas claves opcionales:

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)

El valor de la clave embedding_model_dims en el diccionario vector_store.config debe coincidir con el número de dimensiones que produce el incrustador configurado.

Cuando llama por primera vez al método Memory.from_config(), Mem0 crea la colección de destino si aún no existe y crea un índice de búsqueda vectorial de MongoDB y un índice de MongoDB Search en la colección. Debido a que estos índices se compilan de forma asíncrona, las búsquedas pueden devolver resultados vacíos hasta que finalice la creación de índices.

Utilice estas claves para configurar el almacenamiento de vectores.

Cuando establece la clave provider en mongodb, Mem0 lee su configuración de MongoDB del diccionario config anidado dentro del diccionario vector_store. Ese diccionario acepta las siguientes claves. Cada clave es opcional y recurre al valor por defecto especificado, pero debe establecer mongo_uri para conectarse a cualquier implementación que no sea local.

Clave
Necesidad
Descripción

mongo_uri

Opcional

La cadena de conexión para la implementación de MongoDB. Se establece en mongodb://localhost:27017 por defecto. Para obtener más información sobre cómo encontrar su cadena de conexión, consulte Conéctese a un clúster a través de las librerías de cliente.

db_name

Opcional

El nombre de la base de datos que contiene la colección de memoria. Se establece en mem0_db por defecto. Mem0 crea la base de datos si aún no existe.

collection_name

Opcional

El nombre de la colección que almacena documentos de memoria. Se establece en mem0 por defecto. Mem0 crea la colección si aún no existe.

embedding_model_dims

Opcional

El número de dimensiones en los vectores de incrustación. Se establece en 1536 por defecto. Este valor debe coincidir con el número de dimensiones que produce su incrustador configurado.

Esta sección describe los métodos proporcionados por la clase Memory. Cada método opera en la colección que configuras en el diccionario vector_store.config.

Para limitar un método a un usuario, agente o ejecución de conversación específico, pasa un diccionario filters que contenga al menos una de las claves user_id, agent_id o run_id.

El método add() extrae hechos de una conversación y los guarda en tu colección como documentos de memoria. Si ya existe una memoria semánticamente equivalente para la entidad, Mem0 actualiza esa memoria en lugar de crear un documento duplicado.

El siguiente ejemplo pasa una conversación al método add() y limita la memoria resultante a un usuario 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)

Utilice estos parámetros para configurar cómo Mem0 almacena las memorias.

Parameter
Necesidad
Descripción

messages

Requerido

La conversación se centra en extraer hechos de, ya sea como una lista de diccionarios {"role": ..., "content": ...} o como un string.

user_id

Condicional

Un identificador para el usuario al que pertenece la memoria. Debe proporcionar al menos una de las claves user_id, agent_id o run_id.

agent_id

Condicional

Un identificador para el agente al que pertenece la memoria. Obligatorio si no proporcionas un valor user_id o run_id.

run_id

Condicional

Un identificador para una ejecución o sesión de conversación específica. Obligatorio si no proporcionas un valor user_id o agent_id.

metadata

Opcional

Los pares clave-valor para adjuntar a cada documento de memoria que esta llamada guarda. Puede consultar estos valores mediante el parámetro filters del método search().

expiration_date

Opcional

La fecha después de la cual Mem0 excluye la memoria de los resultados.

infer

Opcional

Si Mem0 utiliza el LLM para extraer hechos discretos antes de almacenarlos. Por defecto, True. Si False, Mem0 almacena el contenido del mensaje sin procesar.

memory_type

Opcional

El tipo de memoria que se va a almacenar.

prompt

Opcional

Una solicitud de extracción personalizada que anula la plantilla de extracción de hechos por defecto.

El método get() recupera un único documento de memoria por su valor de ID sin ejecutar una búsqueda vectorial.

El siguiente ejemplo recupera una memoria directamente por su ID:

memory = m.get(memory_id="<memory-id>")
print(memory)

El parámetro memory_id es obligatorio y acepta el valor id del documento de memoria que se va a recuperar. Si no existe ninguna memoria con ese ID, el método get() devuelve None.

El método search() ejecuta una búsqueda semántica en el índice de búsqueda vectorial de MongoDB y devuelve las memorias más relevantes para un string del query.

El siguiente ejemplo busca en los recuerdos de un usuario específico los cinco resultados más 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"])

Utilice estos parámetros para configurar la consulta de búsqueda.

Parameter
Necesidad
Descripción

query

Requerido

La query en lenguaje natural que Mem0 utiliza para generar la incrustación de búsqueda.

filters

Opcional

Las condiciones de filtro que se aplicarán junto con la query semántica. Debe contener al menos una de las claves user_id, agent_id o run_id. Admite operadores de comparación, operadores de lista, operadores de string y los operadores lógicos AND, OR y NOT.

top_k

Opcional

El número máximo de resultados a devolver. Se establece por defecto en 20.

threshold

Opcional

La puntuación mínima de relevancia que una memoria debe cumplir para aparecer en los resultados. Se establece por defecto en 0.1.

rerank

Opcional

Si Mem0 vuelve a clasificar los resultados antes de devolverlos. El valor por defecto es False.

explain

Opcional

Si se debe incluir un desglose de score_details para cada resultado. El valor por defecto es False.

reference_date

Opcional

La fecha que Mem0 utiliza para resolver expresiones de tiempo relativas en la query.

show_expired

Opcional

Si se deben incluir memorias cuyo expiration_date ha pasado. El valor por defecto es False.

El método get_all() devuelve los documentos de memoria almacenados para una entidad determinada sin ejecutar una búsqueda semántica. Utilice este método para mostrar el historial completo de memoria de una entidad.

El siguiente ejemplo devuelve e imprime todos los recuerdos de un usuario específico:

all_memories = m.get_all(filters={"user_id": "alice"})
for mem in all_memories["results"]:
print(mem["id"], mem["memory"])

Utilice estos parámetros para configurar qué memorias devuelve Mem0.

Parameter
Necesidad
Descripción

filters

Opcional

Las condiciones de filtro que identifican las memorias que se van a devolver. Debe contener al menos uno de user_id, agent_id o run_id.

top_k

Opcional

El número máximo de documentos para devolver. Se establece por defecto en 20.

show_expired

Opcional

Si se deben incluir memorias cuyo expiration_date ha pasado. El valor por defecto es False.

El método update() reemplaza el texto de un documento de memoria existente. Mem0 vuelve a calcular la incrustación a partir del nuevo texto y actualiza el documento en su lugar.

El siguiente ejemplo reemplaza el texto de una memoria existente:

m.update(memory_id="<memory-id>", text="Alice relocated to Berlin in July 2025.")

Utilice estos parámetros para configurar la actualización.

Parameter
Necesidad
Descripción

memory_id

Requerido

El valor id del documento de memoria que se va a actualizar.

text

Opcional

El texto de reemplazo para la memoria. Mem0 calcula y almacena una nueva incrustación para este texto.

metadata

Opcional

Los metadatos de reemplazo para el documento de memoria.

expiration_date

Opcional

La fecha después de la cual Mem0 excluye la memoria de los resultados.

El método delete() borra un único documento de memoria de su colección.

El siguiente ejemplo elimina una memoria por su ID:

m.delete(memory_id="<memory-id>")

El parámetro memory_id es obligatorio y acepta el valor id del documento de memoria que se va a borrar.

El método delete_all() borra todos los documentos de memoria para una entidad determinada de tu colección.

El siguiente ejemplo borra todas las memorias de un usuario específico:

m.delete_all(user_id="alice")

Utiliza estos parámetros para configurar qué memorias borra Mem0.

Parameter
Necesidad
Descripción

user_id

Opcional

Borra todas las memorias de este usuario. Debe proporcionar al menos uno de user_id, agent_id o run_id.

agent_id

Opcional

Borra todas las memorias de este agente.

run_id

Opcional

Borra todas las memorias para esta ejecutar o sesión.

El método history() devuelve el historial de ediciones de una sola memoria, incluida cada versión del texto y el tipo de evento. Mem0 almacena este historial en una base de datos SQLite local en lugar de en MongoDB. Para cambiar dónde Mem0 guarda esa base de datos, establezca la clave history_db_path en su diccionario de configuración.

El siguiente ejemplo recupera e imprime el historial de ediciones de una memoria:

history = m.history(memory_id="<memory-id>")
for entry in history:
print(entry["event"], entry["old_memory"], entry["new_memory"])

El parámetro memory_id es obligatorio y acepta el valor id del documento de memoria cuyo historial desea recuperar.

El método reset() realiza las siguientes acciones:

  • Borra su colección de MongoDB y sus índices de MongoDB búsqueda vectorial y MongoDB Search

  • Restablece la base de datos del historial local

  • Vuelve a crear la colección y sus índices desde cero

Utilice este método para borrar todas las memorias en lugar de utilizar el método delete_all() para eliminarlas una entidad a la vez.

m.reset()

reset() no acepta ningún parámetro y borra toda la memoria que Mem0 ha almacenado a través de esta instancia Memory.

El método close() libera la conexión local de SQLite que Mem0 utiliza para la base de datos del historial. Este método no afecta a su conexión de MongoDB.

m.close()

close() no acepta ningún parámetro. Mem0 lo llama automáticamente si utiliza la instancia Memory como administrador de contexto.

Mem0 crea los siguientes índices en tu colección la primera vez que se conecta. También puedes crear o inspeccionar estos índices manualmente. Para obtener más información, consulte Cree un índice de MongoDB búsqueda vectorial.

El índice de búsqueda vectorial de MongoDB se denomina <collectionName>_vector_index, donde <collectionName> es el nombre de la colección que almacena documentos de memoria. El índice utiliza la siguiente definición:

{
"fields": [
{
"type": "vector",
"path": "embedding",
"numDimensions": 1536,
"similarity": "cosine"
}
]
}

El índice de búsqueda de MongoDB se denomina <collection-name>_text_search_index y utiliza la siguiente definición:

{
"mappings": {
"dynamic": false,
"fields": {
"payload": {
"type": "document",
"fields": {
"data": { "type": "string" },
"text_lemmatized": { "type": "string" }
}
}
}
}
}

Mem0 utiliza el índice de búsqueda de MongoDB Search para ejecutar búsquedas por palabras clave que complementan los resultados semánticos de search(). Si el índice no existe, Mem0 registra una advertencia y devuelve solo resultados semánticos.

Para obtener más información sobre cómo usar Mem0 con MongoDB, consulte: