Você pode integrar o MongoDB com o Agno, um framework Python de código aberto para a criação de agente de IA multimodais. O Agno oferece duas integrações com o MongoDB:
Banco de dados vetorial que armazena a base de conhecimento do seu agente e a recupera com a pesquisa vetorial do MongoDB.
Banco de dados de sessão e memória que persiste sessões de agente, memórias de usuário, métricas e execuções de avaliação em suas coleção do MongoDB.
Você pode usar qualquer integração por conta própria ou pode usar ambas no mesmo agente.
Começar
Para concluir um tutorial que configura o Agno para usar o MongoDB, consulte Introdução à integração do MongoDB Agno.
Instalação
O Agno exige Python versão3.9 ou versão posterior. Para instalar as últimas versões do Agno e do PyMongo, execute o seguinte comando:
pip install agno pymongoOs exemplos nesta página usam modelos OpenAI, que o Agno usa por padrão. Para instalar a biblioteca cliente OpenAI, execute o seguinte comando:
pip install openaiOs Custom configuration exemplo nesta página usam embedding do Voyage AI. Para instalar a biblioteca cliente do Voyage AI, execute o seguinte comando:
pip install voyageaiVariáveis de ambiente
Antes de executar os exemplo nesta página, defina as seguintes variáveis de ambiente:
String de conexão: Defina
MONGODB_URIcomo a string de conexão para sua implantação do MongoDB.Chave de API do modelo: Defina
OPENAI_API_KEYouVOYAGE_API_KEYcomo a chave de API do seu provedor de modelo.
banco de dados vetorial
A classe MongoVectorDb implementa a interface do banco de dados vetorial Agno com a pesquisa vetorial do MongoDB. Para dar a um agente pesquisa semântica sobre seus documentos, passe uma instância desta classe para o parâmetro vector_db de um objeto Agno Knowledge e, em seguida, passe esse objeto para o parâmetro knowledge do seu agente.
Importante
Nomes de classe do MongoDB
O Agno nomeia ambas as classes do MongoDB como MongoDb, mas as importa de módulos diferentes. Importe a classe de banco de dados vetorial de agno.vectordb.mongodb e a classe de banco de dados de agno.db.mongo. Para evitar uma colisão de nomes, o Agno também exporta a classe de banco de dados vetorial como MongoVectorDb. Os exemplos nesta página usam esse alias.
Selecione a aba Basic initialization para visualizar um exemplo de configuração mínima, ou selecione a aba Custom configuration para ver como configurar a integração com configurações personalizadas.
Para inicializar o banco de dados vetorial, especifique a coleção que armazena seus embedding e sua string de conexão do MongoDB. O exemplo a seguir cria uma Base de Conhecimento, adiciona um documento e dá a um agente acesso aos dados:
import osfrom agno.agent import Agentfrom agno.knowledge.knowledge import Knowledgefrom agno.vectordb.mongodb import MongoVectorDb
vector_db = MongoVectorDb( collection_name="agent_knowledge", db_url=os.environ["MONGODB_URI"], database="agno",)
knowledge = Knowledge(vector_db=vector_db)knowledge.insert( name="Recipes", url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",)
agent = Agent(knowledge=knowledge, search_knowledge=True)O exemplo a seguir habilita a pesquisa híbrida, usa o Voyage AI para gerar embeddings em vez do padrão da OpenAI e especifica um nome de índice de pesquisa vetorial do MongoDB:
import osfrom agno.agent import Agentfrom agno.knowledge.embedder.voyageai import VoyageAIEmbedderfrom agno.knowledge.knowledge import Knowledgefrom agno.vectordb.mongodb import MongoVectorDbfrom agno.vectordb.search import SearchType
embedder = VoyageAIEmbedder( id="voyage-4-large", dimensions=1024, api_key=os.environ["VOYAGE_API_KEY"], request_params={"output_dimension": 1024},)
vector_db = MongoVectorDb( collection_name="agent_knowledge", db_url=os.environ["MONGODB_URI"], database="agno", embedder=embedder, search_type=SearchType.hybrid, hybrid_vector_weight=0.7, hybrid_keyword_weight=0.3, search_index_name="agno_vector_index",)
knowledge = Knowledge(vector_db=vector_db)agent = Agent(knowledge=knowledge, search_knowledge=True)Se você especificar um embedder, o Agno usará o número de dimensões que o embedder produz ao criar o índice de pesquisa vetorial do MongoDB. O dicionário request_params passa argumentos de palavra-chave específicos do provedor para chamar de embedding. Para Voyage AI, output_dimension controla o tamanho do vetor retornado para modelos que suportam dimensões variáveis.
Ao criar um objeto Knowledge, o Agno verifica se a coleção já existe. Se não o fizer, Agno cria a coleção e o índice de pesquisa vetorial do MongoDB. Se a coleção existir, o Agno não verifica se o índice existe, mesmo que você o tenha excluído separadamente.
Depois de criar o índice, Agno aguarda até que o índice apareça na coleção. No entanto, não verifica o status do índice, portanto, uma query que executa imediatamente depois pode não retornar resultados enquanto o índice termina de ser criado.
Métodos de banco de dados vetorial
A classe Knowledge chama os seguintes métodos quando você adiciona conteúdo a uma Base de Conhecimento ou quando um agente a pesquisa. Chame esses métodos diretamente apenas se você gerenciar documentos fora de um objeto Knowledge.
Para limitar uma operação de gravar ou pesquisa aos documentos de um usuário, passe um valor user_id ao método de operação.
Método | Descrição |
|---|---|
| Incorpora |
| Incorpora cada documento em |
| Substitui os documentos que compartilham |
| Exclui todos os documentos da sua coleção, mas mantém a coleção e seu índice de pesquisa vetorial do MongoDB. |
| Excluir o documento com o valor |
| Excluir os documentos com o valor |
| Excluir os documento cujo campo |
| Descartar sua coleção e seu índice do MongoDB pesquisa vetorial. |
| Retorna |
| Retorna o número de documentos em sua coleção. |
Dica
Métodos assíncronos
Os seguintes métodos descritos na tabela anterior têm, cada um, um método assíncrono correspondente:
search(): Usarasync_search()insert(): Usarasync_insert()upsert(): Usarasync_upsert()drop(): Usarasync_drop()exists(): Usarasync_exists()
Banco de dados de sessão e memória
A classe MongoDb no módulo agno.db.mongo implementa a interface de banco de dados Agno. Para persistir as sessões, memórias de usuário, métricas e execuções de avaliação de um agente no MongoDB, passe uma instância desta classe para o parâmetro db de um objeto Agent, Team ou Workflow.
Selecione a aba Basic initialization para visualizar um exemplo de configuração mínima, ou selecione a aba Custom configuration para ver como configurar a integração com configurações personalizadas.
Para inicializar o banco de dados, especifique sua string de conexão do MongoDB. O exemplo a seguir cria um agente que armazena seu histórico de sessões no MongoDB e inclui esse histórico no contexto do modelo:
import osfrom agno.agent import Agentfrom agno.db.mongo import MongoDb
db = MongoDb(db_url=os.environ["MONGODB_URI"])
agent = Agent(db=db, add_history_to_context=True)O exemplo a seguir especifica o nome do banco de dados e os nomes das coleção que armazenam sessões, memórias e métricas:
import osfrom agno.agent import Agentfrom agno.db.mongo import MongoDb
db = MongoDb( db_url=os.environ["MONGODB_URI"], db_name="agno_prod", session_collection="agent_sessions", memory_collection="agent_memories", metrics_collection="agent_metrics",)
agent = Agent(db=db, add_history_to_context=True)O Agno cria cada coleção que você configura na primeira vez que ele gravar nessa coleção.
À medida que seu agente executar, o Agno lê e gravar automaticamente nas coleções de sessão, memória e métricas descritas nesta seção. O Agno cria cada coleção na primeira vez que ela é necessária. Você também pode chamar métodos diretamente na sua instância MongoDb, como os seguintes:
upsert_session()e sessões de leitura e gravaçãoget_sessions().upsert_user_memory()grava uma única memória de usuário.get_metrics()lê métricas de uso agregadas.upsert_sessions()eupsert_memories()gravar muitos registros em uma única operação, como quando você migra o histórico de sessões existente para o MongoDB.close()libera a conexão do cliente. Chame este método quando seu aplicativo for encerrado.
índice de pesquisa
Na primeira vez que o Agno cria sua coleção de vetores, ele também cria um índice de pesquisa vetorial do MongoDB na coleção. O nome do índice é o valor do parâmetro search_index_name, que tem como padrão vector_index_1. Você também pode criar ou inspecionar esse índice manualmente. Para saber mais, consulte Criar um índice de pesquisa vetorial do MongoDB.
O índice usa a seguinte definição, onde numDimensions corresponde ao número de dimensões que seu embedder produz e similarity corresponde ao seu valor distance_metric:
{ "fields": [ { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" }, { "type": "filter", "path": "user_id" } ]}O Agno indexa o campo user_id como um campo de filtro para que possa limitar as pesquisas aos documento de um único usuário final.
A pesquisa híbrida não requer um índice do MongoDB Search. O Agno executa sua pesquisa por palavra-chave como uma query de expressão regular no campo content e, em seguida, combina esses resultados com os resultados da pesquisa vetorial MongoDB usando a fusão de classificação recíproca.
Recursos adicionais
Para saber mais sobre como usar o Agno com o MongoDB, consulte os seguintes recursos:
Agno MongoDB Vector Store referência
Banco de dados MongoDB Agno referência
Agno Knowledge documentação
Agno Repositório do Github