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.

Integre o MongoDB com o SDK do Vercel AI

Você pode integrar o MongoDB ao Vercel AI SDK, uma estrutura TypeScript para criar aplicativos e agentes de IA. A integração está disponível no pacote @mongodb-developer/vercel-ai-memory npm e fornece memória persistente apoiada MongoDB para os agentes. A integração inclui os seguintes níveis de memória:

  • Memória da sessão: armazena as voltas de conversa da sessão atual

  • Memória semântica: armazena conhecimento de longo prazo sobre entidades nomeadas, como pessoas e preferências do usuário

  • Memória de procedimentos: armazena conhecimento prático, como tarefas e fluxos de trabalho

  • Memória capsular: armazena registros dos principais eventos e resultados

  • Memória Scratchpad: armazena anotações de trabalho temporárias que você pode promover para gravações periódicas

A integração do MongoDB armazena memória no MongoDB, cria índices do MongoDB Vector Search automaticamente e aplica uma política de retenção para cada nível de memória. Você pode gerar incorporações com um modelo do lado do cliente ou pode utilizar a Incorporação Automatizada do Atlas para gerá-las do lado do servidor.

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

Para instalar o fornecedor de memória MongoDB para o Vercel AI SDK, execute o seguinte comando:

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

O pacote exige os pacotes ai, mongodb e zod como dependências. Esta página também faz referência aos modelos de incorporação da Voyage AI, que exigem o pacotevoyage-ai-provider. Para instalar essas dependências, execute o seguinte comando:

npm install ai mongodb zod voyage-ai-provider

Observação

A integração é compatível com o Vercel AI SDK v6 e v7.

Esta seção descreve como criar um agente que usa o provedor de memória MongoDB .

Para criar um provedor de memória do MongoDB , chame o método createMongoDBMemory() e passe a string de conexão do MongoDB e um modelo de incorporação como argumentos. Selecione a aba Voyage AI ou OpenAI para visualizar um exemplo que utiliza o provedor de modelo de incorporação correspondente:

Para usar um modelo de incorporação da Voyage AI, instale o pacotevoyage-ai-provider. As chaves de API do Voyage AI que você cria no Atlas exigem o endpoint do MongoDB Voyage AI, que você especifica com a opção baseURL do método createVoyage(). Para saber como criar uma chave de API do modelo Voyage AI, consulte Gerenciar chaves de API do modelo Voyage AI.

O exemplo a seguir cria um fornecedor de memória que usa um modelo de incorporação do 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'),})

O fornecedor se conecta ao MongoDB no primeiro uso da ferramenta. Para conectar e criar os índices de pesquisa antes da primeira solicitação, chame o método connect(). Para fechar a conexão MongoDB quando seu aplicação for desligado, chame o método close().

Para conectar o fornecedor de memória ao seu agente, chame o fornecedor de memória do MongoDB e passe argumentos userId e sessionId. Em seguida, passe as ferramentas de memória para o seu agente. O exemplo a seguir cria um agente cujas ferramentas de memória têm como escopo um usuário e uma sessão:

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 camada de memória armazena e recupera memória com escopo para esses identificadores. Para usar os valores userId e sessionId que você passou para o método createMongoDBMemory(), chame o provedor de memória do MongoDB sem argumentos.

Esta seção descreve como personalizar o provedor de memória MongoDB definindo parâmetros do método createMongoDBMemory().

Os comandos semantic_search, procedural_search e episodic_search executam queries de pesquisa vetorial para recuperar memória. Antes de executar uma pesquisa vetorial, a integração incorpora o texto da query.

O Atlas permite dois modos de incorporação:

  • Incorporação manual: Gere vetores de incorporação no lado do cliente com um modelo de incorporação que você especifica.

  • embedding automatizada: o MongoDB incorpora texto no lado do servidor sem precisar gerá-lo manualmente. Para aprender mais, consulte Embedding automatizada.

Selecione a aba Atlas Automated Embedding para permitir que o Atlas incorpore o texto de query automaticamente ou selecione a aba Client embedding model para visualizar o comportamento de incorporação padrão:

Para permitir que o Atlas gere e gerencie incorporações automaticamente, passe o parâmetro autoEmbed para o método createMongoDBMemory(). O exemplo a seguir mostra esta configuração:

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

Nesse modo, a integração armazena o texto de origem, cria índices vetoriais para o tipo autoEmbed e emite queries $vectorSearch com uma string de texto sem formatação. A incorporação automatizada do Atlas não requer uma chave de API incorporada ou um pipeline de incorporação do cliente .

Observação

A incorporação automatizada requer uma organização Atlas que tenha o Voyage AI habilitado. Em clusters dedicados (M10 e maiores), você deve habilitar o auto-scaling de armazenamento.

Por padrão, a integração armazena memória no banco de dados agent_memory e usa a coleção padrão e os nomes de índice descritos na seção Coleções e índices . Para personalizar os nomes do banco de dados, da collection e do índice, passe o parâmetro topology para o método createMongoDBMemory().

O exemplo a seguir fornece nomes personalizados para a sessão e camadas de memória 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 quando as memória expiram, você pode definir uma política de retenção para cada tipo de memória. Passe o parâmetro retention para o método createMongoDBMemory() para configurar as políticas de retenção.

Ao configurar uma política, especifique um campo mode e os campos adicionais que o modo exige. A tabela a seguir descreve os modos disponíveis e seus campos:

Modo
Campos
Descrição

none

necessário: mode

Memórias nunca expiram.

ttl

Necessário: mode, ttlSeconds
Opcional: field

As memória expiram após o número de segundos que o campo ttlSeconds especifica, contados a partir do carimbo de data/hora no campoDate indexado.

ttl+importance

Obrigatório: mode, ttlSeconds, minImportance
Opcional: field

O time-to-live (TTL) aplica-se apenas a recordações com um valor de importance abaixo do valor do campominImportance.

dynamic

Necessário: mode, computeExpireAt
Opcional: refreshOnRead

A função computeExpireAt() calcula o tempo de expiração de cada memória quando a integração grava a memória e recalcula esse tempo quando a memória é lida e o campo refreshOnRead é true. Use este modo para manter as memória importantes e recuperadas com frequência por mais tempo do que as memória raramente usadas.

O exemplo a seguir configura uma política de retenção para gravações semânticas, armazenando apenas gravações importantes após uma semana:

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

A memória de sessão suporta os dois modos a seguir, ambos apoiados pela mesma coleção:

  • modo orientado por ferramentas: O modelo decide quando salvar e recuperar as reviravoltas da sessão

  • modo orientado por gancho: o tempo de execução salva e recupera as mudanças de sessão automaticamente

Selecione a aba Tool-driven ou Hook-driven para ver um exemplo de código correspondente:

No modo orientado a ferramentas, o modelo salva e lê voltas de sessão chamando os comandos session_append e session_recent por meio da ferramenta de memória. Este modo é o mais simples de configurar, mas o modelo pode optar por não salvar uma curva ou carregar colunas anteriores. Use o modo orientado a ferramentas para protótipos e demostrações, onde a simplicidade é uma prioridade mais alta do que um registro completo de conversa.

O exemplo a seguir gera uma resposta e permite que o modelo decida quando salvar a curva:

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

As outras camadas de memória permanecem sob o controle do modelo em ambos os modos. O modelo deve selecionar quais memória semântica, processual e escalonada deve ser salva e recuperada, em vez de escrever a cada volta.

A integração fornece uma única ferramenta memory que aceita um campo command e envia o comando para a camada de memória correspondente. A tabela a seguir descreve os comandos disponíveis para cada nível:

Nível de memória
Comandos
Descrição

Sessão

session_append
session_recent

O comando session_append salva uma volta e o comando session_recent retorna as voltas mais recentes.

Semântico

semantic_save
semantic_search

O comando semantic_save salva o conhecimento da entidade e o comando semantic_search executa uma pesquisa vetorial para recuperá-lo. As memória semânticas são versionadas temporalmente e sua história é preservada.

Processual

procedural_save
procedural_search

O comando procedural_save salva um procedimento e o comando procedural_search executa uma pesquisa vetorial para recuperá-lo. As memória processuais são versionadas temporalmente e sua história é preservada.

Episódico

episodic_save
episodic_search

O comando episodic_save registra um evento e o comando episodic_search executa uma pesquisa vetorial para recuperá-lo.

Rascunho

scratchpad_write
scratchpad_read
scratchpad_promote

The scratchpad_write command writes a temporary note, the scratchpad_read command reads the current notes, and the scratchpad_promote command promotes a note to an episodic memory.

Qualquer nível

memory_forget

O comando memory_forget marca uma memória específica para exclusão. Este comando está sempre disponível e você pode usá-lo quando um usuário solicita ao agente para esquecer uma memória.

O modelo escolhe quais comandos chamar, então você não define explicitamente o campocommand . No entanto, você pode consultar os comandos nas instruções do seu agente. O exemplo a seguir mostra um agente cujas instruções especificam quais 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.`,})

No primeiro uso, a integração cria as seguintes collections no seu banco de dados:

collection
Política de retenção padrão
Índice vetorial

session_memory

O modottl, que expira as memória 24 horas após o carimbo de data/hora no campo created_at do documento

none

semantic_memory

O modonone , para que as recordações nunca expirem

semantic_vector_index, que usa similaridade do cosseno e detecta automaticamente as dimensões do vetor de incorporação

procedural_memory

O modonone , para que as recordações nunca expirem

procedural_vector_index, que usa similaridade do cosseno e detecta automaticamente as dimensões do vetor de incorporação

episodic_memory

O modottl, que expira as memória 1 um ano após o carimbo de data/hora no campo stats.last_retrieved do documento

episodic_vector_index, que usa similaridade do cosseno e detecta automaticamente as dimensões do vetor de incorporação

scratchpad_memory

O modottl, que expira as memória 1 hora após o carimbo de data/hora no campo created_at do documento

none

The integration also creates an expire_at TTL index on each collection, which expires each memory at the time stored in its expire_at field. The memory_forget command and the dynamic retention mode set this field to expire memories.

Observação

Os índices do MongoDB Vector Search são construídos de forma assíncrona. Em um novo banco de dados, aguarde alguns segundos para que os índices sejam criados antes de pesquisar.

Para saber mais sobre como usar o Vercel AI SDK com o MongoDB, consulte os seguintes recursos: