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 configura Mem0 para usar MongoDB como su almacén de vectores, Mem0 persiste la memoria del agente en sus colecciones de MongoDB. Utiliza MongoDB búsqueda vectorial para la recuperación semántica y MongoDB Search para la recuperación de palabras clave de texto completo.
Empezar
Para completar un tutorial que configura Mem0 para usar MongoDB, consulta Introducción a la integración de MongoDB Mem0.
Instalación
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 pymongoUso
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 osfrom 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 osfrom 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.
Métodos
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.
add()
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)get()
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.
buscar()
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"])obtener_todos()
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"])update()
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.")borrar()
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.
delete_all()
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")history()
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.
restablecer()
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.
close()
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.
índice de búsqueda
Mem0 crea los siguientes índices en su colección la primera vez que se conecta. También puede crear o inspeccionar estos índices manualmente. Para aprender más, consulta Crea 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.
Recursos adicionales
Para obtener más información sobre cómo usar Mem0 con MongoDB, consulte: