Saltearse al contenido

BM25 Retriever

El componente BM25 Retriever es una herramienta de búsqueda inteligente diseñada para integrarse sin problemas en tus flujos de automatización dentro de Nappai. Su función principal es tomar tus instrucciones de texto, compararlas con la información guardada en tu base de documentos y devolverte una lista clasificada de los resultados más útiles. A diferencia de los sistemas que dependen de traducciones complejas, este componente se enfoca en el significado de las palabras clave que escribes, garantizando que la búsqueda sea rápida, precisa y fácil de entender.

¿Cómo funciona?

Cuando ejecutas este nodo, el sistema analiza automáticamente el texto que has ingresado en el campo de búsqueda y lo compara con el almacén de documentos que le hayas indicado. Utiliza un método de cálculo que evalúa la frecuencia de cada palabra en tu consulta y su importancia general dentro de todos tus documentos. Esto le permite asignar una puntuación de relevancia a cada resultado y ordenarlos de mayor a menor utilidad.

Una vez procesada la búsqueda, el componente entrega los fragmentos de texto encontrados junto con su puntuación y posición en la lista. Además, puede exponer el motor de búsqueda completo para que lo reutilices en otras partes de tu flujo, evitando repetir configuraciones y manteniendo la consistencia en tus automatizaciones.

Entradas

Campos de Entrada

  • Parent document vectorstore: Almacén de datos donde se guardan los documentos que deseas consultar. Este campo es obligatorio y debe recibir la fuente de información de tu sistema.
  • Search Query: Texto o frase que escribes para buscar información específica. Aquí deberás ingresar la consulta que el sistema evaluará contra tus documentos.
  • Top K: Valor numérico que define cuántos documentos quieres obtener como máximo en los resultados. Por defecto se establece en 5, pero puedes ajustarlo según la cantidad de información que necesites procesar.

Salidas

El componente devuelve dos salidas principales. Resultados es una lista estructurada con el contenido de los documentos encontrados, su puntuación de relevancia y su posición en la lista. Esta salida es ideal para conectar directamente con nodos de generación de texto, respuestas automáticas o visualizadores. Retriever expone el motor de búsqueda completo para que puedas reutilizarlo en otros pasos del flujo sin tener que configurar la búsqueda nuevamente.

Ejemplo de Respuesta JSONjson

{ “Resultados”: [ { “page_content”: “Para reiniciar el módulo de facturación, acceda al panel de control y seleccione la opción ‘Reinicio Seguro’. Espere 30 segundos hasta que el indicador se ilumine en verde.”, “metadata”: { “source”: “manuales_technicos_v2.pdf”, “page”: 12, “author”: “Soporte_Nappai” }, “score”: 0.87, “rank”: 1 }, { “page_content”: “En caso de errores de conexión durante el proceso de facturación, verifique que el servicio de base de datos esté activo antes de ejecutar el reinicio.”, “metadata”: { “source”: “guisas_resolución_problemas.docx”, “page”: 5, “author”: “Equipo_Técnico” }, “score”: 0.74, “rank”: 2 } ], “Retriever”: “BM25Retriever instance ready for workflow reuse” }

Conectividad

Este componente se conecta lógicamente a la entrada de un almacén de documentos (vectorstore) para acceder a tu base de conocimiento. Sus salidas suelen enlazarse con nodos de procesamiento de lenguaje natural (LLMs), cadenas de preguntas y respuestas (QA), o generadores de resúmenes, ya que los resultados obtenidos están listos para ser analizados o presentados. También es compatible con otros módulos de recuperación que necesiten compartir la misma configuración de búsqueda para mantener la coherencia en tus flujos.

Ejemplo de Uso

Imagina que estás automatizando la respuesta a consultas de soporte técnico. Configuras este componente conectando tu base de manuales técnicos al campo Parent document vectorstore. Escribes una pregunta como “Cómo reiniciar el sistema de facturación” en Search Query y estableces Top K en 3. El sistema buscará en tus manuales, devolverá los 3 fragmentos más relevantes, y los conectarás automáticamente a un nodo de IA para que redacte una respuesta clara y personalizada al cliente.

Notas Importantes

🔒 Error logging exposure 🟡 El componente registra errores detallados en los logs. Si tu sistema maneja información sensible, verifica que el registro de logs esté configurado de forma segura o desactivado en entornos de producción.

⚠️ VectorStore compatibility requirement 🟡 Este componente solo funciona con almacenes de datos que expongan métodos de búsqueda estándar. Si tu vectorstore no soporta estas búsquedas, es posible que el sistema no pueda recuperar la información.

⚠️ Maximum documents loaded 🟡 Durante la búsqueda, el sistema carga hasta 1000 documentos de forma predeterminada. Si tu base de datos contiene más de este límite, los documentos adicionales no serán considerados, lo que podría afectar la relevancia de los resultados.

⚠️ Empty vectorstore error 🟡 Si el almacén de datos no contiene documentos, el componente mostrará un mensaje de error en lugar de resultados. Asegúrate de que tu base de datos esté poblada antes de ejecutar la búsqueda.

📋 Provide a compatible VectorStore 🟡 Es obligatorio suministrar un objeto de almacén de datos compatible que soporte métodos de búsqueda estándar. Sin esta conexión válida, el componente no podrá operar.

📋 Install langchain_community 🟡 El motor de búsqueda depende del paquete langchain_community. Asegúrate de que este paquete esté instalado en tu entorno de Python antes de utilizar el componente.

💡 Craft specific search queries 🟢 Utiliza consultas precisas y ricas en palabras clave específicas en lugar de frases vagas. Las consultas detalladas ayudan al algoritmo a ordenar los documentos con mayor precisión.

💡 Set an appropriate Top K value 🟢 Selecciona un número de resultados que equilibre la precisión y el rendimiento. Un valor demasiado alto puede devolver información redundante y ralentizar el flujo de trabajo.

💡 Maintain consistent document metadata 🟢 Mantén un formato uniforme en los metadatos de tus documentos. Esto facilita el procesamiento posterior y permite filtrar o organizar la información recuperada con mayor facilidad.

⚙️ Do not leave search query empty 🟡 El campo Search Query es obligatorio. Dejarlo vacío activará un error en el flujo. Siempre ingresa una consulta válida antes de ejecutar el nodo.

⚙️ Top K should not exceed available documents 🟡 Si estableces Top K en un número mayor al total de documentos disponibles, el sistema simplemente devolverá la cantidad existente. Ajusta este valor para evitar confusiones en los resultados.

ℹ️ Search results include rank and score 🟢 Cada documento recuperado incluye un orden de aparición (rank) y un valor de puntuación opcional. Puedes utilizar estos datos para visualizar la relevancia o aplicar filtros personalizados en tus flujos.

Consejos y Mejores Prácticas

  • Escribe consultas breves y precisas para obtener resultados más exactos y rápidos.
  • Ajusta el valor de Top K según la complejidad de tu consulta; valores bajos suelen ser más eficientes para búsquedas específicas.
  • Verifica que tu almacén de datos esté actualizado y populated antes de cada ejecución.
  • Revisa la documentación de tu vectorstore para asegurar la compatibilidad con los métodos de búsqueda estándar.
  • Mantén un estilo consistente en los metadatos de tus documentos para facilitar el filtrado posterior.

Consideraciones de Seguridad

El registro automático de errores puede exponer información sensible en los logs del sistema. Te recomendamos revisar y auditar la configuración de logging en entornos de producción, y desactivar o restringir el almacenamiento de detalles críticos. Además, asegura que tu entorno de Python cuente con las dependencias necesarias y actualizadas para evitar vulnerabilidades por paquetes desactualizados o mal configurados.