Saltearse al contenido

SelfQueryRetriever

SelfQueryRetriever es un componente que permite a los usuarios buscar documentos relevantes en un vector store sin escribir consultas SQL o de búsqueda manualmente. El componente utiliza un modelo de lenguaje para generar una consulta a partir de un texto de búsqueda y luego recupera los documentos más similares, devolviendo tanto los resultados como un objeto “retriever” que puede reutilizarse en otras partes del flujo.

¿Cómo funciona?

  1. Generación de la consulta
    El modelo de lenguaje recibe el texto de búsqueda y, basándose en la descripción del contenido del documento y el esquema de metadatos, crea una consulta estructurada que el vector store puede entender.

  2. Búsqueda en el vector store
    La consulta generada se envía al vector store (por ejemplo, un índice de embeddings). Se pueden elegir diferentes tipos de búsqueda:

    • similarity – devuelve los documentos más similares.
    • similarity_score_threshold – devuelve documentos que superan un umbral de similitud.
    • mmr – maximiza la diversidad entre los resultados (no está activado por defecto).
  3. Resultado
    Los documentos recuperados se convierten en un formato de datos estándar (Data) que puede ser usado directamente en el dashboard o en otras herramientas. Además, el componente expone un objeto Retriever y un Tool que encapsulan la lógica de búsqueda y pueden ser reutilizados en flujos de trabajo más complejos.

Entradas

  • Model: Modelo de lenguaje que se usará para generar la consulta.
  • Parent document vectorstore: Vector store que contiene los documentos a buscar.
  • Disable Streaming: Si se activa, el modelo no enviará resultados en tiempo real.
  • Document Content Description: Descripción del contenido de los documentos que se almacenan en el vector store.
  • Metadata Schema: Esquema JSON que describe los metadatos disponibles en cada documento.
  • Number of Results: Cantidad máxima de documentos que se devolverán.
  • Query Key Description: Descripción del parámetro que se usará para la consulta.
  • Query Key Name: Nombre del parámetro que se usará para la consulta.
  • Search Query: Texto que el usuario quiere buscar.
  • Search Score Threshold: Umbral mínimo de similitud cuando se selecciona la búsqueda por puntuación.
  • Search Type: Tipo de búsqueda a realizar (similarity, similarity_score_threshold o mmr).
  • Tool Description: Descripción que aparecerá en el Tool generado.
  • Tool Name: Nombre que tendrá el Tool generado.

Salidas

  • Retriever: Objeto Retriever listo para ser usado en otras partes del flujo.
  • Search Results: Lista de documentos recuperados, cada uno convertido a un objeto Data.
  • Tool: Herramienta estructurada (BaseTool) que encapsula la lógica de búsqueda y puede ser llamada desde otros componentes o flujos.

Ejemplo de Uso

  1. Configuración

    • Conecta el componente Model con un modelo de lenguaje de tu elección (por ejemplo, GPT‑4).
    • Conecta Parent document vectorstore con el índice que contiene tus documentos.
    • Establece Search Query a “Resumen de la última reunión de ventas”.
    • Deja Number of Results en 10 y Search Type en similarity.
  2. Ejecución

    • Ejecuta el componente.
    • El resultado aparecerá en la salida Search Results, mostrando los 10 documentos más relevantes.
    • Puedes usar la salida Retriever en otro componente que necesite realizar búsquedas adicionales sin volver a generar la consulta.
    • Si necesitas que el flujo de trabajo invoque la búsqueda como una acción, utiliza la salida Tool.

Componentes Relacionados

  • SelfQueryRetrieverToolBuilder – Construye el Tool que se expone en la salida.
  • SelfQueryRetriever – Clase base que implementa la lógica de generación de consultas y búsqueda.
  • VectorStore – Almacén de embeddings donde se guardan los documentos.
  • LanguageModel – Modelo de IA que genera la consulta a partir del texto de búsqueda.

Consejos y Mejores Prácticas

  • Define un esquema de metadatos claro: Un esquema bien estructurado facilita que el modelo genere consultas precisas.
  • Ajusta el umbral de similitud: Si obtienes demasiados resultados irrelevantes, aumenta Search Score Threshold.
  • Desactiva streaming cuando no sea necesario: Si solo necesitas los resultados finales, activa Disable Streaming para reducir latencia.
  • Reutiliza el Retriever: Si vas a hacer varias búsquedas en el mismo vector store, guarda la salida Retriever y úsala en lugar de crear una nueva instancia cada vez.
  • Prueba con diferentes tipos de búsqueda: mmr puede ser útil cuando necesitas diversidad en los resultados.

Consideraciones de Seguridad

  • Control de acceso al vector store: Asegúrate de que solo usuarios autorizados puedan leer los documentos.
  • Privacidad de los datos: Si los documentos contienen información sensible, revisa que el modelo de lenguaje no exponga datos confidenciales en sus respuestas.
  • Limitaciones de uso del modelo: Configura límites de tokens y de llamadas para evitar costos inesperados.