Milvus
Zilliz
Home
  • Acerca de Milvus

¿Qué es Milvus?

Milvus es un ave rapaz del género Milvus de la familia de los halcones Accipaitridae, famosa por su velocidad de vuelo, aguda visión y notable adaptabilidad.

Zilliz adopta el nombre de Milvus para su base de datos vectorial de código abierto, altamente escalable y de alto rendimiento, que funciona con eficacia en una amplia gama de entornos, desde un ordenador portátil hasta sistemas distribuidos a gran escala. Está disponible como software de código abierto y como servicio en la nube.

Desarrollado por Zilliz y pronto donado a la LF AI & Data Foundation en el marco de la Linux Foundation, Milvus se ha convertido en uno de los principales proyectos de bases de datos vectoriales de código abierto del mundo. Se distribuye bajo la licencia Apache 2.0, y la mayoría de los colaboradores son expertos de la comunidad de computación de alto rendimiento (HPC), especializados en la construcción de sistemas a gran escala y en la optimización de código compatible con el hardware. Entre los principales colaboradores figuran profesionales de Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba y Microsoft.

Curiosamente, todos los proyectos de código abierto de Zilliz llevan el nombre de un pájaro, una convención que simboliza la libertad, la previsión y la evolución ágil de la tecnología.

Datos no estructurados, embebidos y Milvus

Los datos no estructurados, como texto, imágenes y audio, varían de formato y contienen una rica semántica subyacente, lo que dificulta su análisis. Para gestionar esta complejidad, se utilizan embebimientos que convierten los datos no estructurados en vectores numéricos que capturan sus características esenciales. A continuación, estos vectores se almacenan en una base de datos vectorial, lo que permite realizar búsquedas y análisis rápidos y escalables.

Milvus ofrece sólidas capacidades de modelado de datos, lo que le permite organizar sus datos no estructurados o multimodales en colecciones estructuradas. Es compatible con una amplia gama de tipos de datos para el modelado de atributos diferentes, incluidos los tipos numéricos y de caracteres comunes, varios tipos de vectores, matrices, conjuntos y JSON, lo que le ahorra el esfuerzo de mantener múltiples sistemas de bases de datos.

Untructured data, embeddings, and Milvus Datos no estructurados, incrustaciones y Milvus

Milvus ofrece tres modos de implementación, que cubren una amplia gama de escalas de datos, desde la creación de prototipos locales en Jupyter Notebooks hasta clústeres masivos de Kubernetes que administran decenas de miles de millones de vectores:

  • Milvus Lite es una biblioteca Python que puede integrarse fácilmente en sus aplicaciones. Como versión ligera de Milvus, es ideal para la creación rápida de prototipos en cuadernos Jupyter o para su ejecución en dispositivos periféricos con recursos limitados. Más información.
  • Milvus Standalone es una implementación de servidor de una sola máquina, con todos los componentes agrupados en una sola imagen Docker para una implementación conveniente. Obtenga más información.
  • Milvus Distributed puede desplegarse en clústeres Kubernetes, con una arquitectura nativa de la nube diseñada para escenarios a escala de miles de millones o incluso mayor. Esta arquitectura garantiza la redundancia en componentes críticos. Más información.

Qué hace que Milvus sea tan rápido?

Milvus fue diseñado desde el primer día para ser un sistema de base de datos vectorial altamente eficiente. En la mayoría de los casos, Milvus supera a otras bases de datos vectoriales entre 2 y 5 veces (véanse los resultados de VectorDBBench). Este alto rendimiento es el resultado de varias decisiones clave de diseño:

Optimización en función del hardware: Para acomodar Milvus en varios entornos de hardware, hemos optimizado su rendimiento específicamente para muchas arquitecturas y plataformas de hardware, incluyendo AVX512, SIMD, GPUs y SSD NVMe.

Algoritmos de búsqueda avanzados: Milvus admite una amplia gama de algoritmos de indexación/búsqueda en memoria y en disco, incluidos IVF, HNSW, DiskANN y más, todos los cuales han sido profundamente optimizados. En comparación con implementaciones populares como FAISS y HNSWLib, Milvus ofrece un rendimiento entre un 30% y un 70% superior.

Motor de búsqueda en C++: Más del 80% del rendimiento de una base de datos vectorial viene determinado por su motor de búsqueda. Milvus utiliza C++ para este componente crítico debido al alto rendimiento del lenguaje, la optimización de bajo nivel y la gestión eficiente de los recursos. Y lo que es más importante, Milvus integra numerosas optimizaciones de código conscientes del hardware, que van desde la vectorización a nivel de ensamblador hasta la paralelización y programación multihilo, para aprovechar al máximo las capacidades del hardware.

Orientado a columnas: Milvus es un sistema de base de datos vectorial orientado a columnas. Las principales ventajas proceden de los patrones de acceso a los datos. Al realizar consultas, una base de datos orientada a columnas lee sólo los campos específicos implicados en la consulta, en lugar de filas enteras, lo que reduce enormemente la cantidad de datos a los que se accede. Además, las operaciones sobre datos basados en columnas pueden vectorizarse fácilmente, lo que permite aplicar operaciones en las columnas enteras a la vez, mejorando aún más el rendimiento.

Qué hace que Milvus sea tan escalable

En 2022, Milvus soportaba vectores a escala de miles de millones, y en 2023, escaló hasta decenas de miles de millones con una estabilidad constante, alimentando escenarios a gran escala para más de 300 grandes empresas, como Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection, etc.

La arquitectura de sistema altamente desacoplada y nativa de la nube de Milvus garantiza que el sistema pueda expandirse continuamente a medida que crecen los datos:

Highly decoupled system architecture of Milvus Arquitectura de sistema altamente desacoplada de Milvus

Milvus en sí es totalmente apátrida, por lo que se puede escalar fácilmente con la ayuda de Kubernetes o nubes públicas. Además, los componentes de Milvus están bien desacoplados, con las tres tareas más críticas -búsqueda, inserción de datos e indexación/compactación- diseñadas como procesos fácilmente paralelizables, con la lógica compleja separada. Esto garantiza que el nodo de consulta, el nodo de datos y el nodo de indexación correspondientes puedan ampliarse y reducirse de forma independiente, optimizando el rendimiento y la rentabilidad.

Tipos de búsquedas compatibles con Milvus

Milvus admite varios tipos de funciones de búsqueda para satisfacer las demandas de diferentes casos de uso:

  • Búsqueda RNA: Encuentra los K vectores más cercanos a su vector de consulta.
  • Búsqueda por filtrado: Realiza la búsqueda RNA bajo condiciones de filtrado especificadas.
  • Búsqueda por rango: Busca vectores dentro de un radio especificado a partir del vector de consulta.
  • Búsqueda híbrida: Realiza una búsqueda RNA basada en múltiples campos vectoriales.
  • Búsqueda de texto completo: Búsqueda de texto completo basada en BM25.
  • Reordenación: Ajusta el orden de los resultados de la búsqueda basándose en criterios adicionales o en un algoritmo secundario, refinando los resultados iniciales de la búsqueda RNA.
  • Recuperar: Recupera datos por sus claves primarias.
  • Consulta: Recupera datos utilizando expresiones específicas.

Completo conjunto de funciones

Además de las funciones de búsqueda clave mencionadas anteriormente, Milvus también proporciona un conjunto de funciones implementadas en torno a las búsquedas RNA para que pueda utilizar plenamente sus capacidades.

API y SDK

  • API RESTful (oficial)
  • PyMilvus (Python SDK) (oficial)
  • Go SDK (oficial)
  • Java SDK (oficial)
  • SDK deNode.js (JavaScript) (oficial)
  • C# (contribuido por Microsoft)
  • C++ SDK (en desarrollo)
  • SDK de Rust (en desarrollo)

Tipos de datos avanzados

Además de los tipos de datos primitivos, Milvus soporta varios tipos de datos avanzados y sus respectivas métricas de distancia aplicables.

¿Por qué Milvus?

  • Alto rendimiento a escala y alta disponibilidad

    Milvus presenta una arquitectura distribuida que separa la computación del almacenamiento. Milvus puede escalar horizontalmente y adaptarse a diversos patrones de tráfico, logrando un rendimiento óptimo mediante el aumento independiente de los nodos de consulta para la carga de trabajo de lectura pesada y el nodo de datos para la carga de trabajo de escritura pesada. Los microservicios sin estado de K8s permiten una rápida recuperación en caso de fallo, lo que garantiza una alta disponibilidad. La compatibilidad con réplicas mejora aún más la tolerancia a fallos y el rendimiento mediante la carga de segmentos de datos en varios nodos de consulta. Consulte la comparativa de rendimiento.

  • Soporte para varios tipos de índices vectoriales y aceleración por hardware

    Milvus separa el sistema y el núcleo del motor de búsqueda vectorial, lo que le permite soportar los principales tipos de índices vectoriales optimizados para diferentes escenarios, incluidos HNSW, IVF, FLAT (fuerza bruta), SCANN y DiskANN, con variaciones basadas en la cuantización y mmap. Milvus optimiza la búsqueda vectorial para funciones avanzadas como el filtrado de metadatos y la búsqueda por rangos. Además, Milvus implementa la aceleración por hardware para mejorar el rendimiento de la búsqueda vectorial y admite la indexación por GPU, como CAGRA de NVIDIA.

  • Arrendamiento múltiple flexible y almacenamiento en caliente/frío

    Milvus admite la multitenencia mediante el aislamiento a nivel de base de datos, colección, partición o clave de partición. Las estrategias flexibles permiten que un único clúster gestione de cientos a millones de inquilinos, además de garantizar un rendimiento de búsqueda optimizado y un control de acceso flexible. Milvus mejora la rentabilidad con el almacenamiento en caliente/frío. Los datos calientes a los que se accede con frecuencia pueden almacenarse en memoria o en unidades SSD para mejorar el rendimiento, mientras que los datos fríos a los que se accede con menos frecuencia se guardan en un almacenamiento más lento y rentable. Este mecanismo puede reducir significativamente los costes, manteniendo al mismo tiempo un alto rendimiento para tareas críticas.

  • Vector disperso para búsqueda de texto completo y búsqueda híbrida

    Además de la búsqueda semántica mediante vectores densos, Milvus también admite de forma nativa la búsqueda de texto completo con BM25, así como la incrustación dispersa aprendida como SPLADE y BGE-M3. Los usuarios pueden almacenar el vector disperso y el vector denso en la misma colección, y definir funciones para jerarquizar los resultados de múltiples peticiones de búsqueda. Vea ejemplos de búsqueda híbrida con búsqueda semántica + búsqueda de texto completo.

  • Seguridad de datos y control de acceso de grano fino

    Milvus garantiza la seguridad de los datos implementando la autenticación obligatoria de usuarios, el cifrado TLS y el control de acceso basado en roles (RBAC). La autenticación de usuarios garantiza que sólo los usuarios autorizados con credenciales válidas puedan acceder a la base de datos, mientras que el cifrado TLS protege todas las comunicaciones dentro de la red. Además, RBAC permite un control de acceso detallado mediante la asignación de permisos específicos a los usuarios en función de sus funciones. Estas características hacen de Milvus una opción sólida y segura para las aplicaciones empresariales, protegiendo los datos confidenciales de accesos no autorizados y posibles infracciones.

Integraciones de IA

  • Integraciones de modelos de incrustación Los modelos de incrustación convierten los datos no estructurados en su representación numérica en un espacio de datos de alta dimensión para que pueda almacenarlos en Milvus. Actualmente, PyMilvus, el SDK de Python, integra varios modelos de incrustación para que pueda preparar rápidamente sus datos en incrustaciones vectoriales. Para más detalles, consulte Visión general de la incrustación.

  • Integración de modelos de reordenación En el ámbito de la recuperación de información y la IA generativa, un reordenador es una herramienta esencial que optimiza el orden de los resultados de las búsquedas iniciales. PyMilvus también integra varios modelos de reordenación para optimizar el orden de los resultados obtenidos en las búsquedas iniciales. Para más detalles, consulte Visión general de los rerankers.

  • LangChain y otras integraciones de herramientas de IA En la era GenAI, las herramientas, como LangChain, reciben mucha atención por parte de los desarrolladores de aplicaciones. Como componente central, Milvus suele servir como almacén de vectores en dichas herramientas. Para saber cómo integrar Milvus en sus herramientas de IA favoritas, consulte nuestras Integraciones y tutoriales.

Herramientas y ecosistema

  • Attu Attu es una GUI intuitiva todo-en-uno que le ayuda a gestionar Milvus y los datos que almacena. Para más detalles, consulte el repositorio de Attu.

  • Birdwatcher Birdwatcher es una herramienta de depuración para Milvus. Usándola para conectarse a etcd, puede comprobar el estado de su sistema Milvus o configurarlo sobre la marcha. Para más detalles, consulte BirdWatcher.

  • Integraciones de Promethus y Grafana Prometheus es un conjunto de herramientas de alerta y supervisión de sistemas de código abierto para Kubernetes. Grafana es una pila de visualización de código abierto que puede conectarse con todas las fuentes de datos. Puede utilizar Promethus y Grafana como proveedor de servicios de supervisión para supervisar visualmente el rendimiento de Milvus distributed. Para obtener más información, consulte Despliegue de servicios de supervisión.

  • Milvus Backup Milvus Backup es una herramienta que permite a los usuarios realizar copias de seguridad y restaurar los datos de Milvus. Proporciona tanto CLI como API para adaptarse a diferentes escenarios de aplicación. Para más detalles, consulte Milvus Backup.

  • Milvus Capture Data Change (CDC) Milvus-CDC puede capturar y sincronizar datos incrementales en las instancias de Milvus y garantiza la fiabilidad de los datos empresariales transfiriéndolos sin problemas entre las instancias de origen y de destino, lo que permite una copia de seguridad incremental y una recuperación de desastres sencillas. Para obtener más información, consulte Milvus CDC.

  • Conectores Milvus Milvus ha planificado un conjunto de conectores para que pueda integrar Milvus con herramientas de terceros, como Apache Spark. Actualmente, puede utilizar nuestro conector Spark para alimentar sus datos Milvus a Apache Spark para el procesamiento de aprendizaje automático. Para más detalles, consulte Conector Spark-Milvus.

  • Servicios de Transmisión Vectorial (VTS) Milvus proporciona un conjunto de herramientas para que usted pueda transferir sus datos entre una instancia Milvus y un montón de fuentes de datos, incluyendo clusters Zilliz, Elasticsearch, Postgres (PgVector), y otra instancia Milvus. Para más detalles, consulte VTS.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

¿Fue útil esta página?