Saltearse al contenido

Multi Query Retriever

El Multi Query Retriever permite ampliar la búsqueda de documentos en una base vectorial. En lugar de enviar una sola pregunta al motor de búsqueda, el componente crea varias versiones de la misma consulta usando un modelo de lenguaje. Esto ayuda a superar las limitaciones de los algoritmos de similitud basados en distancia y aumenta la probabilidad de encontrar información relevante.

¿Cómo funciona?

  1. Entrada de la consulta
    El usuario escribe una pregunta o frase en el campo Search Query.

  2. Generación de variantes
    El componente envía esa pregunta a un modelo de lenguaje (LLM) que produce un número configurable de versiones alternativas (por defecto 3). El número mínimo de variantes es 2, aunque el usuario puede aumentarlo con el campo Number of Questions.

  3. Construcción del retriever
    Se crea un MultiQueryRetriever que combina las variantes generadas con un Base Retriever pre‑configurado. El parámetro Include Original query decide si la consulta original también se incluye en la búsqueda.

  4. Búsqueda
    Cuando se llama al método search_documents, el retriever envía todas las variantes a la base de datos vectorial y devuelve los documentos más relevantes. El número de resultados se controla con Number of Results (por defecto 20).

El proceso se ejecuta localmente dentro del dashboard; no se hace ninguna llamada a APIs externas aparte de la que el LLM pueda requerir (por ejemplo, OpenAI, Anthropic, etc.), lo cual ya está gestionado por el componente Model.

Entradas

  • Search Query: Texto libre con la pregunta o frase que quieres buscar.
  • Include Original query: Si está activado, la consulta original se envía junto con las variantes generadas.
  • Number of Questions: Cantidad de versiones alternativas que el LLM debe crear. El mínimo aceptado es 2.
  • Number of Results: Número de documentos que quieres recibir como respuesta.
  • Model: El modelo de lenguaje que se usará para generar las variantes. Debe ser un componente de tipo LanguageModel.
  • Base Retriever: El retriever base que se utilizará para la búsqueda en la base de datos vectorial. Debe ser un componente de tipo Retriever.

Salidas

  • Retriever: Un objeto Retriever listo para usar en otras partes del flujo de trabajo.
  • Search Results: Lista de documentos (tipo Data) que coinciden con las variantes de la consulta.

Ejemplo de Uso

  1. Añade el componente al flujo de trabajo.
  2. Conecta un componente LanguageModel (por ejemplo, GPT‑4) al campo Model.
  3. Conecta un componente Retriever (por ejemplo, PineconeRetriever) al campo Base Retriever.
  4. Escribe la pregunta en Search Query:
    ¿Cuáles son los últimos cambios en la política de privacidad de la empresa?
  5. Deja los valores por defecto o ajusta Number of Questions a 5 y Number of Results a 10.
  6. Ejecuta el flujo.
  7. Los resultados aparecerán en la salida Search Results y podrás visualizarlos en un gráfico o tabla dentro del dashboard.

Componentes Relacionados

  • Retriever – Componentes que proporcionan la base de datos vectorial.
  • LanguageModel – Componentes que ofrecen modelos de lenguaje para generar texto.
  • Vector Database – Almacenes de vectores como Pinecone, Weaviate, etc., que suelen usarse con los retrievers.

Consejos y Mejores Prácticas

  • Usa un número razonable de preguntas: Más variantes pueden mejorar la cobertura, pero también aumentan el tiempo de respuesta.
  • Activa “Include Original query” cuando la consulta original sea muy específica y quieras asegurar que se incluya.
  • Ajusta “Number of Results” según la cantidad de información que necesites; valores muy altos pueden ralentizar la búsqueda.
  • Revisa la política de privacidad del LLM que uses, ya que la consulta se envía a un servicio externo.
  • Combina con filtros: Si tu base de datos permite filtros, añádelos después de la búsqueda para refinar aún más los resultados.

Consideraciones de Seguridad

  • La consulta y sus variantes se envían al modelo de lenguaje, por lo que cualquier dato sensible debe ser anonimizado antes de enviarlo.
  • Asegúrate de que el modelo de lenguaje y el retriever base cumplan con las normativas de protección de datos de tu organización.
  • Si usas un servicio de LLM externo, revisa que la conexión sea segura (HTTPS) y que los datos no se almacenen de forma permanente en el proveedor.