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.

Integrar MongoDB con el SDK de IA de Vercel

Puedes integrar MongoDB con el SDK de IA de Vercel, un framework de TypeScript para crear aplicaciones y agentes de IA. La integración está disponible en el paquete npm @mongodb-developer/vercel-ai-memory y proporciona memoria persistente respaldada por MongoDB para los agentes. La integración incluye los siguientes niveles de memoria:

  • Memoria de sesión: Almacena los turnos de conversación de la sesión actual.

  • Memoria semántica: Almacena conocimiento a largo plazo sobre entidades nombradas, como personas y preferencias de usuario.

  • Memoria procedimental: Almacena conocimientos prácticos, como tareas y flujos de trabajo.

  • Memoria episódica: Almacena registros de eventos y resultados clave.

  • Memoria de bloc de notas: Almacena notas de trabajo temporales que puedes convertir en recuerdos episódicos.

La integración con MongoDB almacena la memoria en MongoDB, crea automáticamente índices de búsqueda vectorial de MongoDB y aplica una política de retención a cada nivel de memoria. Puede generar incrustaciones con un modelo del lado del cliente o utilizar Atlas Automated Embedding para generarlas en el servidor.

Para completar un tutorial que configure el SDK de Vercel AI para usar MongoDB, consulte la sección "Primeros pasos con la integración del SDK de Vercel AI con MongoDB".

Para instalar el proveedor de memoria de MongoDB para el SDK de IA de Vercel, ejecute el siguiente comando:

npm install @mongodb-developer/vercel-ai-memory

El paquete requiere los paquetes ai, mongodb y zod como dependencias. Esta página también hace referencia a los modelos de incrustación de Voyage AI, que requieren el paquete voyage-ai-provider. Para instalar estas dependencias, ejecute el siguiente comando:

npm install ai mongodb zod voyage-ai-provider

Nota

La integración es compatible con Vercel AI SDK v6 y v7.

Esta sección describe cómo crear un agente que utilice el proveedor de memoria de MongoDB.

Para crear un proveedor de memoria de MongoDB, llame al método createMongoDBMemory() y pase como argumentos su cadena de conexión de MongoDB y un modelo de incrustación. Seleccione la pestaña Voyage AI o OpenAI para ver un ejemplo que utiliza el proveedor de modelo de incrustación correspondiente:

Para usar un modelo de incrustación de Voyage AI, instale el paquete voyage-ai-provider. Las claves de API de Voyage AI que cree en Atlas requieren el punto final de MongoDB de Voyage AI, que se especifica con la opción baseURL del método createVoyage(). Para obtener información sobre cómo crear una clave de API de Voyage AI, consulte Administrar claves de API de modelos de Voyage AI.

El siguiente ejemplo crea un proveedor de memoria que utiliza un modelo de incrustación de Voyage AI:

import { createMongoDBMemory } from '@mongodb-developer/vercel-ai-memory'import { createVoyage } from 'voyage-ai-provider' const voyage = createVoyage({ apiKey: process.env.VOYAGE_API_KEY, baseURL: 'https://ai.mongodb.com/v1',}) const mongodbMemory = createMongoDBMemory({ uri: process.env.MONGODB_URI!, embedder: voyage.embeddingModel('voyage-4'),})

El proveedor se conecta a MongoDB la primera vez que se utiliza la herramienta. Para conectarse y crear los índices de búsqueda antes de la primera solicitud, llame al método connect(). Para cerrar la conexión a MongoDB cuando se cierre la aplicación, llame al método close().

Para conectar el proveedor de memoria a su agente, llame al proveedor de memoria de MongoDB y pase los argumentos userId y sessionId. A continuación, pase las herramientas de memoria a su agente. El siguiente ejemplo crea un agente cuyas herramientas de memoria están limitadas a un usuario y una sesión:

import { openai } from '@ai-sdk/openai'import { ToolLoopAgent } from 'ai' const agent = new ToolLoopAgent({ model: openai('gpt-4.1'), tools: mongodbMemory({ userId: 'alice', sessionId: 'sess-001' }),})

Cada nivel de memoria almacena y recupera recuerdos asociados a estos identificadores. Para usar los valores userId y sessionId que pasó al método createMongoDBMemory(), llame al proveedor de memoria de MongoDB sin argumentos.

Esta sección describe cómo personalizar el proveedor de memoria de MongoDB configurando los parámetros del método createMongoDBMemory().

Los comandos semantic_search, procedural_search y episodic_search ejecutan consultas de búsqueda vectorial para recuperar recuerdos. Antes de ejecutar una búsqueda vectorial, la integración inserta el texto de la consulta.

Atlas admite dos modos de integración:

  • Incorporación manual: Generar vectores de incorporación en el lado del cliente con un modelo de incorporación que especifiques.

  • Incrustación automatizada: MongoDB incrusta texto del lado del servidor sin necesidad de generarlo manualmente. Para aprender más, consulta Incrustación automatizada.

Seleccione la pestaña Atlas Automated Embedding para permitir que Atlas incruste automáticamente el texto de la consulta, o seleccione la pestaña Client embedding model para ver el comportamiento de incrustación predeterminado:

Para permitir que Atlas genere y gestione incrustaciones automáticamente, pase el parámetro autoEmbed al método createMongoDBMemory(). El siguiente ejemplo muestra esta configuración:

import { createMongoDBMemory } from '@mongodb-developer/vercel-ai-memory' const mongodbMemory = createMongoDBMemory({ uri: process.env.MONGODB_URI!, autoEmbed: { model: 'voyage-4' },})

En este modo, la integración almacena el texto fuente, crea índices vectoriales para el tipo autoEmbed y realiza consultas $vectorSearch con una cadena de texto sin formato. Atlas Automated Embedding no requiere una clave de API de incrustación ni una canalización de incrustación del cliente.

Nota

La integración automatizada requiere una organización Atlas que tenga Voyage AI habilitado. En clústeres dedicados (M10 y superiores), debe habilitar el escalado automático de almacenamiento.

Por defecto, la integración almacena los recuerdos en la base de datos agent_memory y utiliza los nombres de colección e índice predeterminados descritos en la sección Colecciones e índices. Para personalizar los nombres de la base de datos, la colección y el índice, pase el parámetro topology al método createMongoDBMemory().

El siguiente ejemplo proporciona nombres personalizados para los niveles de memoria de sesión y semántica:

createMongoDBMemory({ uri: process.env.MONGODB_URI!, embedder: voyage.embeddingModel('voyage-4'), topology: { dbName: 'my_app', collections: { session: 'agent_sessions', semantic: 'agent_facts', }, vectorIndexNames: { semantic: 'agent_facts_vs', }, },})

Para controlar cuándo caducan los recuerdos, puede establecer una política de retención para cada tipo de recuerdo. Pase el parámetro retention al método createMongoDBMemory() para configurar las políticas de retención.

Al configurar una política, especifique un campo mode y los campos adicionales que requiere el modo. La siguiente tabla describe los modos disponibles y sus campos:

Modo
Campos
Descripción

none

obligatorio: mode

Los recuerdos nunca caducan.

ttl

Obligatorio: mode, ttlSeconds
Opcional: field

Las memorias caducan después del número de segundos que especifica el campo ttlSeconds, contados a partir de la marca de tiempo en el campo indexado Date.

ttl+importance

Obligatorio: mode, ttlSeconds, minImportance
Opcional: field

El tiempo de vida (TTL) se aplica solo a las memorias con un valor importance inferior al valor del campo minImportance.

dynamic

Obligatorio: mode, computeExpireAt
Opcional: refreshOnRead

La función computeExpireAt() calcula el tiempo de expiración de cada memoria cuando la integración escribe en ella, y lo recalcula cuando se lee la memoria y el campo refreshOnRead es true. Utilice este modo para conservar las memorias importantes y de uso frecuente durante más tiempo que las memorias de uso poco frecuente.

El siguiente ejemplo configura una política de retención para memorias semánticas, almacenando solo las memorias importantes después de una semana:

createMongoDBMemory({ uri: process.env.MONGODB_URI!, embedder: voyage.embeddingModel('voyage-4'), retention: { semantic: { mode: 'ttl+importance', ttlSeconds: 604800, minImportance: 6 }, },})

La memoria de sesión admite los dos modos siguientes, ambos respaldados por la misma colección:

  • Modo controlado por herramientas: El modelo decide cuándo guardar y recuperar los turnos de sesión.

  • Modo controlado por gancho: El entorno de ejecución guarda y recupera automáticamente los cambios de sesión.

Seleccione la pestaña Tool-driven o Hook-driven para ver un ejemplo de código correspondiente:

En el modo controlado por herramientas, el modelo guarda y lee los turnos de la sesión mediante los comandos session_append y session_recent a través de la herramienta de memoria. Este modo es el más sencillo de configurar, pero el modelo podría optar por no guardar un turno o cargar los anteriores. Utilice el modo controlado por herramientas para prototipos y demostraciones, donde la simplicidad sea más importante que un registro completo de la conversación.

El siguiente ejemplo genera una respuesta y permite al modelo decidir cuándo guardar el turno:

const result = await agent.generate({ prompt: 'My name is Alice and I am a marine biologist. Remember that.',})

Los demás niveles de memoria permanecen bajo el control del modelo en ambos modos. El modelo debe seleccionar qué recuerdos semánticos, procedimentales y episódicos guardar y recuperar, en lugar de escribirlos en cada turno.

La integración proporciona una única herramienta memory que acepta un campo command y envía el comando al nivel de memoria correspondiente. La siguiente tabla describe los comandos disponibles para cada nivel:

Nivel de memoria
Comandos
Descripción

sesión

session_append
session_recent

El comando session_append guarda un turno y el comando session_recent devuelve los turnos más recientes.

Semántico

semantic_save
semantic_search

El comando semantic_save guarda el conocimiento de la entidad, y el comando semantic_search realiza una búsqueda vectorial para recuperarlo. Las memorias semánticas se versionan temporalmente y se conserva su historial.

Procedimental

procedural_save
procedural_search

El comando procedural_save guarda un procedimiento, y el comando procedural_search realiza una búsqueda vectorial para recuperarlo. Las memorias de procedimientos se versionan temporalmente y se conserva su historial.

Episódico

episodic_save
episodic_search

El comando episodic_save registra un evento, y el comando episodic_search ejecuta una búsqueda vectorial para recuperarlo.

Bloc de notas

scratchpad_write
scratchpad_read
scratchpad_promote

El comando scratchpad_write escribe una nota temporal, el comando scratchpad_read lee las notas actuales y el comando scratchpad_promote convierte una nota en una memoria episódica.

Cualquier nivel

memory_forget

El comando memory_forget marca una memoria específica para su eliminación. Este comando siempre está disponible y puede utilizarse cuando un usuario solicita al agente que borre una memoria.

El modelo elige qué comandos ejecutar, por lo que no es necesario configurar explícitamente el campo command. Sin embargo, puede hacer referencia a los comandos en las instrucciones de su agente. El siguiente ejemplo muestra un agente cuyas instrucciones especifican qué comandos usar:

const agent = new ToolLoopAgent({ model: openai('gpt-4.1'), tools: mongodbMemory({ userId: 'alice', sessionId: 'sess-001' }), instructions: `You are an assistant with persistent memory. At the start of each session, call session_recent to restore context. Save important facts with semantic_save. If the user asks you to forget something, call memory_forget.`,})

En el primer uso, la integración crea las siguientes colecciones en su base de datos:

Colección
Política de retención por defecto
Índice vectorial

session_memory

El modo ttl, que hace que las memorias caduquen 24 horas después de la marca de tiempo en el campo created_at del documento.

Ninguno

semantic_memory

El modo none, para que los recuerdos nunca caduquen.

semantic_vector_index, que utiliza la similitud del coseno y detecta automáticamente las dimensiones del vector de incrustación.

procedural_memory

El modo none, para que los recuerdos nunca caduquen.

procedural_vector_index, que utiliza la similitud del coseno y detecta automáticamente las dimensiones del vector de incrustación.

episodic_memory

El modo ttl, que hace que las memorias caduquen 1 año después de la marca de tiempo en el campo stats.last_retrieved del documento.

episodic_vector_index, que utiliza la similitud del coseno y detecta automáticamente las dimensiones del vector de incrustación.

scratchpad_memory

El modo ttl, que hace que las memorias caduquen 1 hora después de la marca de tiempo en el campo created_at del documento.

Ninguno

La integración también crea un índice TTL expire_at en cada colección, que hace que cada memoria caduque en el momento almacenado en su campo expire_at. El comando memory_forget y el modo de retención dynamic configuran este campo para que las memorias caduquen.

Nota

Los índices de MongoDB Vector Search se crean de forma asíncrona. En una base de datos nueva, espere unos segundos a que se creen los índices antes de realizar una búsqueda.

Para obtener más información sobre cómo usar el SDK de IA de Vercel con MongoDB, consulte los siguientes recursos: