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 Google ADK

Você pode integrar o MongoDB ao Google ADK, um framework Python de código aberto para criar agentes de IA. A integração fornece três componentes:

  • MongoDbToolset, que fornece Vector Search MongoDB e ferramentas de pesquisa híbrida para agentes

  • MongoDbSessionService, que persiste sessões de agente , eventos e estado no MongoDB

  • MongoDbMemoryService, que armazena eventos de sessão no MongoDB para recuperação de memória de longo prazo baseada em palavras-chave

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

Para instalar o Google ADK e as dependências do MongoDB , execute o seguinte comando:

pip install "google-adk[mongodb]"

Este comando também instala o driver do PyMongo. A integração exige o PyMongo v4.9 ou posterior.

Esta seção descreve os três componentes que você pode usar para integrar o MongoDB ao Google ADK.

MongoDbToolset é uma classe de conjunto de ferramentas que inclui as seguintes ferramentas de pesquisa somente leitura, que podem acessar um banco de dados MongoDB :

  • mongodb_vector_search: Classifica documentos por incorporação de similaridade

  • mongodb_hybrid_search: Combina essa classificação de similaridade com uma classificação de texto completo

Importante

Índices exigidos

Para usar as ferramentas de pesquisa anteriores, você deve criar os índices descritos na seção Diretivas de índice .

Ao chamar uma dessas ferramentas, o modelo de agente passa uma query de texto sem formatação como argumento da ferramenta. Ambas as ferramentas incorporam este texto internamente, então o modelo nunca produz ou manipula um vetor.

Para visualizar um exemplo que vincula o conjunto de ferramentas ao seu banco de dados MongoDB , selecione a guia correspondente ao seu método de conexão preferido:

O exemplo a seguir mostra como usar uma string de conexão para configurar um conjunto de ferramentas:

from google.adk.agents import Agentfrom google.adk.integrations.mongodb import MongoDbToolset toolset = MongoDbToolset( connection_string="<connection_string>", database_name="products_db",) agent = Agent( model="gemini-2.5-flash", name="product_search_agent", instruction=( "Search the products collection with your MongoDB tools." ), tools=[toolset],)

Para saber mais sobre como localizar sua string de conexão, consulte Conectar-se a um cluster por meio de bibliotecas de clientes.

Nomeie a collection de destino nas instruções do agente, porque o modelo escolhe uma collection em cada chamada. Para saber as implicações que isso tem para os dados que o conjunto de ferramentas pode acessar, consulte a seção Escolha da Coleção.

As credenciais do modelo de incorporação vêm do Application Default Credentials, o mecanismo padrão do Google Cloud para descobrir credenciais. As credenciais do MongoDB vêm da string de conexão.

MongoDbToolSettings é uma classe de configurações que configura o modelo de incorporação, nomes de índice e limites de pesquisa que o MongoDbToolset utiliza. Passe uma instância dessa classe para o parâmetro settings de MongoDbToolset para substituir seus padrões, conforme mostrado no exemplo a seguir:

from google.adk.integrations.mongodb import MongoDbToolsetfrom google.adk.integrations.mongodb import MongoDbToolSettings toolset = MongoDbToolset( connection_string="<connection_string>", database_name="products_db", settings=MongoDbToolSettings(default_limit=8, max_results=20),)

Antes de executar uma pesquisa vetorial, o conjunto de ferramentas incorpora seu texto de query. Selecione a aba Atlas Automated Embedding para permitir que o Atlas incorpore queries automaticamente ou selecione a aba Google embedding models para visualizar o comportamento de incorporação padrão:

Para utilizar o Atlas Automated Embedding, configure o parâmetro use_mongodb_auto_embedding para True na classe de configuração MongoDbToolSettings. O exemplo a seguir mostra esta configuração:

from google.adk.integrations.mongodb import MongoDbToolsetfrom google.adk.integrations.mongodb import MongoDbToolSettings toolset = MongoDbToolset( connection_string="<connection_string>", database_name="products_db", settings=MongoDbToolSettings( use_mongodb_auto_embedding=True, mongodb_auto_embedding_model="voyage-4", # optional ),)

Com essa configuração, o conjunto de ferramentas não faz uma chamada de incorporação do Google. Em vez disso, o estágio de pesquisa vetorial recebe o texto da query e o Atlas gera a incorporação com o modelo do Voyage AI configurado no índice. O campo pesquisado deve ser indexado como o tipo autoEmbed.

Dica

Recurso de visualização

O Atlas Automated Embedding também está disponível como um recurso de visualização em implementações autogerenciadas. Para saber mais, consulte Sobre o tipo autoEmbed.

O modelo escolhe a collection em cada chamada, portanto, um conjunto de ferramentas vinculado a um banco de dados acessa cada collection nesse banco de dados que tenha um índice de pesquisa}. Defina o parâmetro database_name como um banco de dados que contenha somente dados que o agente tem permissão para ler e armazene quaisquer outros dados em um banco de dados separado.

O parâmetro tool_filter não restringe quais collections o modelo pode acessar, pois seleciona ferramentas inteiras e não recebe argumentos de chamada. Para impor uma lista de permissões de coleção, use o gancho before_tool_callback, que recebe os argumentos de chamada:

from google.adk.agents import Agentfrom google.adk.integrations.mongodb import MongoDbToolset def allow_products_only(tool, args, tool_context): if tool.name.startswith("mongodb_") and args.get("collection_name") != "products": return { "status": "ERROR", "error_details": "Only the products collection may be searched.", } return None agent = Agent( name="product_search_agent", instruction="Answer questions about products.", tools=[ MongoDbToolset( connection_string="<connection_string>", database_name="products_db", ) ], before_tool_callback=allow_products_only,)

Se a chamada de resposta retornar um dicionário, o ADK nunca executará a ferramenta de pesquisa. Em vez disso, ele envia esse dicionário para o agente como se fosse a saída da própria ferramenta. Retornar None permite que a ferramenta de pesquisa seja executada normalmente.

MongoDbSessionService armazena sessões, eventos e estado do aplicativo, do usuário e da sessão no MongoDB. Passe para um objeto Runner para configurar o histórico de conversa persistente para seu agente, conforme mostrado no exemplo a seguir:

from google.adk.integrations.mongodb import MongoDbSessionServicefrom google.adk.runners import Runner session_service = MongoDbSessionService( connection_string="<connection_string>", database_name="my_app",) runner = Runner( agent=agent, app_name="my_app", session_service=session_service,)

MongoDbSessionService armazena dados nas seguintes coleções:

collection
_id Valor
Conteúdos

sessions

<app_name>/<user_id>/<session_id>

Estado do escopo da sessão em JSON, registros de data e hora e um número de revisão de simultaneidade otimista

events

<app_name>/<user_id>/<session_id>/<event_id>

evento serializado completo

app_states

<app_name>

Estado com escopo de aplicação

user_states

<app_name>/<user_id>

Estado no escopo do usuário

O Google ADK define o estado do aplicativo, do usuário ou da sessão atual com um prefixo app: ou user: na chave de estado. MongoDbSessionService armazena cada valor na coleção correspondente e remove o prefixo da chave armazenada, de modo que um valor definido com a chave app:theme seja armazenado na coleção app_states como theme.

Observação

O campo state de cada coleção armazena suas chaves e valores como uma string codificada em JSON, não como um documento nativo do MongoDB . Como resultado, uma chave de estado contendo um caractere que o MongoDB proíbe em nomes de campo de documento , como . ou $, é armazenada e recuperada sem perda ou corrupção de dados.

O modelo de simultaneidade do serviço depende do seu tipo de sistema:

  • Em um conjunto de réplicas, cluster fragmentado ou cluster do Atlas , cada escrita de vários documentos é executada em uma transação, portanto, ela é confirmada ou cancelada atomicamente.

  • Em um mongod autônomo , ou em qualquer sistema sem suporte a transações, o serviço retorna às gravações sequenciais com uma verificação de revisão de concorrência otimista no documento da sessão.

Em um único processo, um bloqueio por sessão impede gravações simultâneas na mesma sessão. Esse bloqueio não tem efeito em vários processos, como quando várias instâncias do seu aplicação gravam na mesma sessão ao mesmo tempo.

Em vários processos, a verificação de revisão do documento da sessão evita a corrupção de dados. Se duas gravações competirem, a escrita que conclui primeiro aumenta o número de revisão e a outra escrita falhará na verificação de revisão. Seu aplicação deve detectar essa falha, recarregar a sessão para obter o estado atual e tentar novamente a gravação.

MongoDbMemoryService armazena eventos de sessão em uma coleção de memória e os recupera por correspondência de palavra-chave. Passe para um objeto Runner para configurar a memória de longo prazo entre sessões, conforme mostrado no exemplo a seguir:

from google.adk.integrations.mongodb import MongoDbMemoryServicefrom google.adk.runners import Runner memory_service = MongoDbMemoryService( connection_string="<connection_string>", database_name="my_app",) runner = Runner( agent=agent, app_name="my_app", memory_service=memory_service,)

O objeto Runner chama o método add_session_to_memory() do serviço de memória para alimentar os eventos de uma sessão na memória. Cada evento ingerido é armazenado como um documento de memória em sua coleção de memória, que o parâmetro memories_collection configura. Esses documentos contêm as palavras-chave em minúsculas extraídas do conteúdo de texto do evento.

Ao usar o serviço de memória, considere o seguinte comportamento:

  • Quando você pesquisa a memória, o serviço retorna documentos cuja array de palavras-chave intersecciona as palavras-chave da query.

  • A ingestão é idempotente. Se você consumir novamente uma sessão, o serviço substituirá suas memória em vez de duplicá-las.

  • A recuperação realiza uma pesquisa por palavra-chave e não requer um modelo de incorporação, credenciais do Google ou um índice vetorial. Como resultado, a recuperação de memória funciona em qualquer sistema MongoDB .

Esta seção descreve os índices necessários para integrar o MongoDB e o Google ADK, e inclui índices recomendados para melhorias de desempenho.

Cada coleção que o agente pesquisa requer os seguintes índices:

  • Índice do MongoDB Vector Search no campo que armazena as incorporações, com o campo indexado como o tipo vector. Se você utilizar o Atlas Automated Embedding, indexe o campo como o tipo autoEmbed .

  • Índice de pesquisa do MongoDB no campo que armazena o texto a ser pesquisado, se você usar a ferramenta mongodb_hybrid_search

MongoDbToolset lê esses índices por nome e não os cria. Para saber como criar esses índices, consulte Criar um índice de Vector Search do MongoDB e Índice de pesquisa do MongoDB .

A maioria das leituras e todas as gravações usam o campo_id , que o MongoDB indexa automaticamente. No entanto, os seguintes padrões de leitura não usam o campo _id e exigem uma verificação de collection, a menos que você tenha um índice:

  • Lendo os eventos de uma sessão por aplicativo, usuário e sessão, classificados por registro de data e hora.

  • Pesquisando memória por aplicativo e usuário com uma correspondência na array de palavras-chave.

Por padrão, MongoDbSessionService e MongoDbMemoryService criam os seguintes índices sugeridos no primeiro uso:

collection
Index
Campos indexados e ordem de classificação

events

app_user_session_ts

(app_name, user_id, session_id, timestamp DESC, revision DESC)

sessions

app_user

(app_name, user_id)

memories

app_user_keywords

(app_name, user_id, keywords) (multikey)

Se você definir o parâmetro ensure_indexes como False, o serviço não criará esses índices sugeridos.

Observação

A criação de índice é idempotente, então você pode deixar com segurança o parâmetro ensure_indexes configurado para seu valor padrão de True. Esse parâmetro exige que o usuário do MongoDB mantenha a ação createIndex nas collections sessions, events e memories.

Em vez de usar um único usuário administrador, recomendamos que você use dois usuários de banco de dados separados para manter os privilégios definidos de acordo com o que cada componente exige.

A tabela a seguir descreve a configuração de mínimo privilégio sugerida para dois usuários de banco de dados :

Usuário do banco de dados
Usado por
Privilégios mínimos

Pesquisar usuário (somente leitura)

MongoDbToolset

find em cada coleção que o agente procura

Usuário de estado (leitura-gravação)

MongoDbSessionService, MongoDbMemoryService

* find, insert, update, remove nas collections sessions e events
* find, insert, update nas collections app_states, user_states e memories collections
* Se você definir ensure_indexes como True, adicione a ação createIndex nas collections sessions, events e memories

Importante

Os privilégios na tabela anterior são ações do MongoDB , não roles integradas do Atlas . Para concedê-las, crie uma função personalizada para cada usuário com essas ações, com escopo para as coleções listadas.

Para saber mais sobre como usar o Google ADK com o MongoDB, consulte os seguintes recursos: