Resumen

Conecta tu base de datos con un agente inteligente y obtén resultados útiles: aquí se construyen las herramientas para hacer búsqueda vectorial y resúmenes sobre MongoDB usando LangChain. La clave: reutilizar el mismo modelo de embeddings para las preguntas del usuario y para los datos ya indexados, y ejecutar todo en Jupyter Notebook con un aggregation pipeline que consulta por similitud.

¿Cómo crear herramientas del agente con LangChain y embeddings?

Se definen dos funciones en Python y se marcan como herramientas con el decorador de LangChain. Cuando LangChain detecta el decorador, entiende: es una herramienta que el agente puede usar. Además, para cada query del usuario hay que generar embeddings con el mismo modelo que se usó al guardar los vectores en la base de datos, así se mantiene la coherencia semántica.

  • Importar librerías y esperar la carga: puede mostrar una alerta esperada.
  • Elegir el mismo modelo embedding que generó los vectores guardados.
  • Definir la herramienta de búsqueda vectorial.
  • Definir la herramienta que trae un documento/página para resumir.
  • Ejecutar las celdas y verificar que ambas funciones queden registradas como herramientas.

Ejemplo de la idea del decorador en Python:

# Herramienta marcada para el agente en LangChain
@tool
def buscar_vectorial(pregunta):
    # Implementación definida en el notebook.
    ...

¿Qué hace el pipeline de agregación en MongoDB para la búsqueda vectorial?

Se configura un aggregation pipeline que usa el índice donde están los embeddings. En lugar de “queries” tradicionales, aquí se ejecuta código contra la base de datos: se llama a la colección y se le pasa el pipeline para obtener los documentos más cercanos en el espacio vectorial al significado de la pregunta.

  • Definir el pipeline con el índice de embeddings.
  • Ejecutar la llamada a la colección mediante su API.
  • Recibir los documentos más similares según la métrica del índice.

Fragmento representativo de la interacción con MongoDB:

# Ejecución del aggregation pipeline
coleccion.aggregate(pipeline)

Datos clave:

  • Embeddings/vectores: arreglo de números que capturan similitudes semánticas.
  • Búsqueda vectorial: trae documentos “más cercanos” a la query en un plano vectorial.
  • Índice de embeddings: referencia obligatoria para el pipeline.
  • Almacenamiento: los vectores pueden guardarse junto con la información en el mismo documento de MongoDB.

¿Qué herramientas se definen exactamente?

  • Herramienta de búsqueda vectorial: ejecuta el pipeline y retorna documentos cercanos.
  • Herramienta para resumir documentos: primero trae una página/documento y luego se resume.

¿Cómo se organizan las herramientas del agente?

  • Se crea un arreglo con ambas funciones para que el agente sepa qué puede invocar.

¿Cómo se prueban las herramientas?

  • Se invoca la de búsqueda vectorial con una pregunta sobre “mejores prácticas para hacer backups de datos en MongoDB”.
  • Se valida que retorna documentos cercanos según el significado de la query.

¿Por qué la búsqueda vectorial necesita un modelo de lenguaje?

La búsqueda vectorial retorna el “más cercano”, pero ese “más cercano” puede estar aún muy lejos en términos de relevancia. Por eso, para validar si lo recuperado realmente responde a la pregunta, hay que pasar la evidencia por un modelo de lenguaje.

  • Caso probado: preguntar “When Bogotá was founded” devuelve “cualquier cosa” si solo se usa vector search, porque el más cercano puede no ser pertinente.
  • Con un modelo de lenguaje se compara pregunta y contexto y se filtra la irrelevancia.
  • Luego se puede aplicar la herramienta de resumen para condensar la información obtenida.

Conceptos y habilidades que se ejercitan:

  • Definición de herramientas con LangChain usando un decorador.
  • Generación de embeddings consistentes entre datos y consultas.
  • Construcción de un aggregation pipeline con el índice de embeddings.
  • Uso de la API de colección: ejecutar aggregate con el pipeline.
  • Comprensión de límites de la búsqueda vectorial sin modelo de lenguaje.
  • Preparación de funciones para resumir documentos.

¿Te gustaría comentar cómo organizarías las herramientas del agente o qué pipeline usarías para mejorar la relevancia?