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?
-
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. -
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).
-
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 objetoRetriever
y unTool
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
ommr
). - 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
-
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 ySearch Type
ensimilarity
.
- Conecta el componente
-
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 salidaRetriever
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.