Saltearse al contenido

Milvus Vector Store

Este componente te permite interactuar con Milvus, una base de datos vectorial diseñada para encontrar similitudes entre información (como textos, imágenes o audio) de forma rápida y precisa.

En el contexto de Nappai, este componente actúa como el “cerebro” de la memoria para tus agentes de IA. Permite guardar documentos y luego buscar aquellos que tengan un significado similar a lo que el usuario está preguntando, facilitando respuestas más contextualizadas y precisas.

¿Cómo funciona?

Imagina que tienes una biblioteca inmensa de libros y documentos. En lugar de leer uno por uno para encontrar una respuesta, este componente transforma el contenido de tus documentos en “vectores” (una representación numérica que captura el significado).

Cuando realizas una búsqueda, el componente compara el significado de tu pregunta con los vectores guardados y te devuelve los documentos más similares, incluso si las palabras no son exactamente las mismas.

Integración con Milvus: El componente se conecta directamente a una instancia de Milvus (el servidor donde se almacenan los datos). Utiliza la API de Milvus para realizar operaciones de almacenamiento (ingestión de datos) y recuperación (búsqueda semántica).

Conexión y Credenciales

Este componente requiere configurar previamente una credencial en el panel de Nappai para poder interactuar con el servicio externo:

  1. Dirígete a la sección de Credenciales en tu panel de Nappai.
  2. Crea una nueva credencial del tipo Milvus API y guarda los campos requeridos (URL, Usuario, Contraseña, Api Key).
  3. En tu flujo de trabajo, selecciona la credencial guardada en el campo de entrada Credential de este nodo.

Operaciones

Este componente ofrece varias operaciones que puedes seleccionar según lo que necesites hacer. Solo puedes usar una operación a la vez:

  • Add: Permite guardar (almacenar) nuevos documentos o datos en tu base de datos vectorial de Milvus.
  • Search: Busca documentos similares basándose en una consulta de texto o un vector específico.
  • Retriever: Recupera documentos relevantes basándose en una entrada, optimizado para devolver resultados directamente al agente.

Para usar el componente, primero selecciona la operación que necesitas en el campo “Operation” (Operación).

Entradas

Campos de Entrada

Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:

  • Embedding: Función que transforma los datos crudos en vectores de alta dimensión para ser comprendidos por la base de datos.
    • Visible en: Add, Search, Retriever
  • Ingest Data: Datos que deseas guardar o almacenar en la base de datos.
    • Visible en: Add
  • Operation: Selecciona qué acción quieres realizar (Agregar, Buscar o Recuperar).
    • Visible en: Add, Search, Retriever
  • Collection Description: Descripción textual de la colección donde se almacenarán los datos.
    • Visible en: Add, Search, Retriever
  • Collection Name: Nombre único e identificador para la colección en Milvus.
    • Visible en: Add, Search, Retriever
  • Other Connection Arguments: Argumentos opcionales adicionales para conectar con Milvus.
    • Visible en: Add, Search, Retriever
  • Consistencey Level: Define el nivel de consistencia de los datos (balanza entre velocidad y frescura).
    • Visible en: Add, Search, Retriever
  • Drop Old Collection: Si está activado, borra cualquier colección existente con el mismo nombre antes de guardar.
    • Visible en: Add, Search, Retriever
  • Index Parameters: Parámetros avanzados para optimizar la indexación y búsqueda de datos.
    • Visible en: Add, Search, Retriever
  • Number of Results: Cantidad de resultados similares que deseas obtener en una búsqueda.
    • Visible en: Add, Search, Retriever
  • Primary Field Name: Nombre del campo principal que identifica los datos.
    • Visible en: Add, Search, Retriever
  • Search Parameters: Parámetros específicos para ajustar la búsqueda (distancia, métricas, etc.).
    • Visible en: Add, Search, Retriever
  • Search Query: Texto de búsqueda para encontrar documentos relevantes. Déjalo vacío para recuperar todo.
    • Visible en: Search
  • Text Field Name: Nombre del campo donde se almacena el texto original del documento.
    • Visible en: Add, Search, Retriever
  • Timeout: Tiempo máximo de espera en segundos antes de que la conexión expire.
    • Visible en: Add, Search, Retriever
  • Connection URI: Dirección URL del servidor de Milvus al que te estás conectando.
    • Visible en: Add, Search, Retriever
  • Vector Field Name: Nombre del campo donde se almacenan los vectores (representación numérica).
    • Visible en: Add, Search, Retriever

Salidas

El componente produce los siguientes resultados que puedes usar en pasos siguientes de tu automatización:

  • Retriever: Objeto retirable listo para ser usado por un agente de IA o modelo de lenguaje.
  • Results: Lista de documentos y metadatos encontrados que coinciden con tu búsqueda.
  • Vector Store: Referencia al almacén vectorial configurado.

Ejemplo de Respuesta JSONjson

{ “results”: [ { “id”: “doc_12345”, “text”: “Resumen del proceso de ventas de Q3…”, “score”: 0.95, “metadata”: { “category”: “Ventas”, “author”: “Juan Pérez” } }, { “id”: “doc_12346”, “text”: “Análisis detallado de los ingresos trimestrales…”, “score”: 0.88, “metadata”: { “category”: “Finanzas”, “date”: “2023-10-01” } } ] }

Conectividad

Este componente suele conectarse lógicamente con las siguientes partes del flujo de trabajo:

  • Entrada de Texto/Splitter: Comúnmente se conecta a la entrada de “Ingest Data” proveniente de un componente que divide textos en fragmentos más pequeños para una mejor búsqueda.
  • Modelos de IA (LLM): El output “Retriever” o “Results” se conecta frecuentemente a un agente de IA para darle contexto y permitirle responder preguntas basadas en tus datos propios.
  • Salidas: El resultado de una búsqueda se puede dirigir a un componente de visualización o a un generador de respuestas finales.

Ejemplo de Uso

Escenario: Creación de un Chatbot de Soporte Técnico

  1. Add: Tomas tus manuales de usuario en formato PDF o texto y usas la operación Add para guardarlos en tu colección “Soporte_Tecnico”.
  2. Search: Cuando un usuario pregunta “¿Cómo reinicio el servidor?”, el componente usa la operación Search para encontrar los párrafos del manual que explican exactamente cómo reiniciar un servidor.
  3. Resultado: Los resultados se pasan al Chatbot, que utiliza esa información para darle una respuesta precisa al usuario.

Notas Importantes

🔒 Secure Password Handling: Las contraseñas que ingreses en el campo de la conexión se almacenan de forma segura por el componente. Evita exponer este campo en entornos compartidos o públicos.

⚠️ Default Result Count: El número predeterminado de resultados de búsqueda es 4. Si necesitas más, aumenta este valor, ten en cuenta que valores más grandes pueden aumentar el tiempo de respuesta.

⚠️ Empty Search Query Returns No Results: Si el campo de Search Query está vacío o contiene solo espacios, el componente devolverá una lista vacía en lugar de realizar una búsqueda.

📋 Milvus Server Needed: Debes tener una instancia de Milvus ejecutándose y accesible en la URI que proporciones. La URI por defecto es http://localhost:19530.

📋 langchain-milvus Dependency: Este componente utiliza el paquete externo langchain-milvus. Debes instalarlo mediante pip install langchain-milvus antes de usar el componente.

💡 Set Appropriate Consistency Level: Elige un nivel de consistencia que equilibre la latencia y la frescura de los datos. Para la mayoría de los casos, el nivel predeterminado ‘Session’ ofrece un buen equilibrio.

⚙️ Use Unique Collection Names: Asigna un nombre distinto a cada proyecto para evitar que los datos se mezclen accidentalmente. Reutilizar un nombre puede causar que los datos de un proyecto se superpongan con otro.

⚙️ Drop Old Collection Caution: Activar “Drop Old Collection” eliminará cualquier colección existente con ese nombre. Usa esta opción solo si estás seguro de que los datos antiguos ya no son necesarios.

⚙️ Advanced Index and Search Parameters: Los parámetros de índice y búsqueda son configuraciones avanzadas. Valores incorrectos pueden degradar el rendimiento o la precisión; pruébalos cuidadosamente primero en un conjunto de datos pequeño.

ℹ️ Automatic Document Ingestion: El componente añade cualquier documento que proporciones a la colección cada vez que se construye. Ejecutarlo varias veces puede crear entradas duplicadas a menos que la colección se limpie.

Consejos y Mejores Prácticas

  • Asegúrate de que tu servidor Milvus esté corriendo antes de intentar conectar el componente.
  • Usa nombres de colecciones descriptivos y únicos para mantener tus datos organizados.
  • Si encuentras errores de “Dimension mismatch”, verifica que la función de Embedding esté generando vectores del tamaño correcto.
  • Para bases de datos muy grandes, ajusta el parámetro “Number of Results” y los “Index Parameters” según el rendimiento de tu servidor.

Consideraciones de Seguridad

Este componente maneja credenciales (URL, Usuario, Contraseña/Api Key) que deben ser tratadas como información sensible.

  • Nunca compartas archivos de flujo de trabajo que contengan estas credenciales en texto plano sin encriptar.
  • Asegúrate de que el servidor Milvus al que te conectas tenga los permisos de acceso adecuados.
  • El campo de contraseña se maneja de forma segura internamente, pero evita dejar el flujo expuesto a usuarios no autorizados.