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.

Integre MongoDB con el marco Agno

Puede integrar MongoDB con Agno, un marco de Python de código abierto para crear agentes de IA multimodales. Agno ofrece dos integraciones de MongoDB:

  • Base de datos vectorial que almacena la Base de Conocimiento de su agente y la recupera con MongoDB búsqueda vectorial.

  • Base de datos de sesión y memoria que persiste sesiones de agente, memorias de usuario, métricas y ejecuciones de evaluación en sus colecciones de MongoDB.

Puedes usar cualquiera de las integraciones por sí sola, o puedes usar ambas en el mismo agente.

Para completar un tutorial que configure Agno para utilizar MongoDB, consulte Primeros pasos con la integración de MongoDB Agno.

Agno requiere Python v3.9 o posterior. Para instalar las últimas versiones de Agno y PyMongo, ejecuta el siguiente comando:

pip install agno pymongo

Los ejemplos de esta página utilizan modelos de OpenAI, que Agno utiliza por defecto. Para instalar la librería de cliente de OpenAI, ejecute el siguiente comando:

pip install openai

Los Custom configuration ejemplos de esta página utilizan incrustaciones de Voyage AI. Para instalar la librería de cliente de Voyage AI, ejecute el siguiente comando:

pip install voyageai

Antes de ejecutar los ejemplos en esta página, configure las siguientes variables de entorno:

  • Cadena de conexión: Establezca MONGODB_URI en la cadena de conexión para su implementación de MongoDB.

  • Clave de API del modelo: Establezca OPENAI_API_KEY o VOYAGE_API_KEY en la clave de API de su proveedor de modelos.

La clase MongoVectorDb implementa la interfaz de base de datos vectorial Agno con la búsqueda vectorial de MongoDB. Para que un agente realice una búsqueda semántica en sus documentos, pase una instancia de esta clase al parámetro vector_db de un objeto Agno Knowledge, y luego pase ese objeto al parámetro knowledge de su agente.

Importante

Nombres de clase de MongoDB

Agno nombra ambas clases de MongoDB MongoDb, pero las importa de módulos diferentes. Importe la clase de base de datos vectorial de agno.vectordb.mongodb y la clase de base de datos de agno.db.mongo. Para evitar una colisión de nombres, Agno también exporta la clase de base de datos vectorial como MongoVectorDb. Los ejemplos en esta página utilizan ese alias.

Seleccione la pestaña Basic initialization para ver un ejemplo de configuración mínima, o seleccione la pestaña Custom configuration para ver cómo configurar la integración con ajustes personalizados.

Para inicializar la base de datos vectorial, especifique la colección que almacena sus incrustaciones y su cadena de conexión de MongoDB. El siguiente ejemplo crea una Base de Conocimiento, añade un documento y le da a un agente acceso a los datos:

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)

Cuando crea un objeto Knowledge, Agno verifica si la colección ya existe. Si no lo hace, Agno crea la colección y el índice de búsqueda vectorial de MongoDB. Si la colección existe, Agno no comprueba si el índice existe, incluso si usted lo borró por separado.

Después de crear el índice, Agno espera hasta que el índice aparezca en la colección. Sin embargo, no verifica el estado del índice, por lo que una query que se ejecuta inmediatamente después puede devolver ningún resultado mientras el índice termina de crearse.

La clase Knowledge llama a los siguientes métodos cuando se añade contenido a una Base de Conocimiento o cuando un agente la busca. llamar a estos métodos directamente solo si gestiona documentos fuera de un objeto Knowledge.

Para limitar una operación de guardar o búsqueda a los documentos de un solo usuario, pase un valor user_id al método de operación.

Método
Descripción

search(query, limit, filters, min_score, user_id)

Integra query y devuelve hasta limit documentos coincidentes. Si establece search_type en SearchType.hybrid, Agno también ejecuta una búsqueda por palabras clave y combina los dos conjuntos de resultados. El parámetro filters acepta un diccionario de filtros de metadatos. Si pasa una lista de expresiones de filtro de Agno en su lugar, Agno deja un registro de una advertencia y no aplica ningún filtro porque la integración de MongoDB no los admite.

insert(content_hash, documents, filters, user_id)

Incrusta cada documento en documents e inserta los documentos en su colección. Agno deriva el valor _id de cada documento de un código hash del contenido del documento.

upsert(content_hash, documents, filters, user_id)

Reemplaza los documentos que comparten content_hash, luego inserta los documentos en documents. Utilice este método para actualizar un documento cuyo contenido ha cambiado.

delete()

Borra todos los documentos de su colección, pero mantiene la colección y su índice de búsqueda vectorial de MongoDB.

delete_by_id(id)

Borrar el documento con el valor _id especificado.

delete_by_name(name)

Elimina los documentos con el valor name especificado.

delete_by_metadata(metadata)

Borrar los documentos cuyo campo meta_data coincide con los pares clave-valor especificados.

drop()

Descartar su colección y su índice de búsqueda vectorial de MongoDB.

exists()

Devuelve True si su colección existe.

get_count()

Devuelve el número de documentos de su colección.

Tip

Métodos asíncronos

Cada uno de los siguientes métodos descritos en la tabla anterior tiene un método asíncrono correspondiente:

  • search(): Usar async_search()

  • insert(): Usar async_insert()

  • upsert(): Usar async_upsert()

  • drop(): Usar async_drop()

  • exists(): Usar async_exists()

La clase MongoDb en el módulo agno.db.mongo implementa la interfaz de base de datos de Agno. Para conservar las sesiones de un agente, las memorias de usuario, las métricas y las ejecuciones de evaluación en MongoDB, pase una instancia de esta clase al parámetro db de un objeto Agent, Team o Workflow.

Seleccione la pestaña Basic initialization para ver un ejemplo de configuración mínima, o seleccione la pestaña Custom configuration para ver cómo configurar la integración con ajustes personalizados.

Para inicializar la base de datos, especifique su cadena de conexión de MongoDB. El siguiente ejemplo crea un agente que almacena su historial de sesión en MongoDB e incluye ese historial en el contexto del 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)

Agno crea cada colección que configura la primera vez que escribe en esa colección.

Mientras se ejecuta el agente, Agno lee y escribe automáticamente en las colecciones de sesión, memoria y métricas descritas en esta sección. Agno crea cada colección la primera vez que se necesita. También puede llamar a métodos directamente en su instancia de MongoDb, como los siguientes:

  • upsert_session() y get_sessions() sesiones de lectura y guardar.

  • upsert_user_memory() guardar una única memoria de usuario.

  • get_metrics() lee métricas de uso agregadas.

  • upsert_sessions() y upsert_memories() guarda muchos registros en una sola operación, como cuando migra el historial de sesiones existente a MongoDB.

  • close() libera la conexión del cliente. Llame a este método cuando su aplicación se apague.

La primera vez que Agno crea su colección vectorial, también crea un índice de búsqueda vectorial de MongoDB en la colección. El nombre del índice es el valor del parámetro search_index_name, que por defecto es vector_index_1. También puede crear o inspeccionar este índice manualmente. Para obtener más información, consulta Crea un índice de MongoDB búsqueda vectorial.

El índice utiliza la siguiente definición, donde numDimensions coincide con el número de dimensiones que produce su incrustador y similarity coincide con su valor distance_metric:

{ "fields": [ { "type": "vector", "path": "embedding", "numDimensions": 1536, "similarity": "cosine" }, { "type": "filter", "path": "user_id" } ]}

Agno indexa el campo user_id como un campo de filtro para que pueda limitar las búsquedas a los documentos de un único usuario final.

La búsqueda híbrida no requiere un índice de búsqueda de MongoDB Search. Agno ejecuta su búsqueda de palabras clave como una query de expresión regular en el campo content, luego combina esos resultados con los resultados de la búsqueda vectorial de MongoDB mediante el uso de la fusión de rango recíproco.

Para aprender más sobre el uso de Agno con MongoDB, consultar los siguientes recursos: