¿Qué contiene Milvus 1.0?
Milvus.jpeg
Milvus es una base de datos vectorial de código abierto diseñada para gestionar conjuntos de datos vectoriales masivos de millones, billones o incluso trillones. Milvus tiene amplias aplicaciones que abarcan el descubrimiento de nuevos fármacos, la visión por ordenador, la conducción autónoma, los motores de recomendación, los chatbots y mucho más.
En marzo de 2021, Zilliz, la empresa que está detrás de Milvus, lanzó la primera versión de soporte a largo plazo de la plataforma: Milvus v1.0. Después de meses de pruebas exhaustivas, una versión estable y lista para la producción de la base de datos vectorial más popular del mundo está lista para el prime time. Este artículo del blog cubre algunos fundamentos de Milvus, así como las características clave de la v1.0.
Distribuciones de Milvus
Milvus está disponible en distribuciones para CPU y para GPU. La primera depende exclusivamente de la CPU para la creación de índices y la búsqueda; la segunda permite la búsqueda híbrida con CPU y GPU y la creación de índices, lo que acelera aún más Milvus. Por ejemplo, con la distribución híbrida, la CPU puede utilizarse para la búsqueda y la GPU para la creación de índices, lo que mejora aún más la eficiencia de las consultas.
Ambas distribuciones de Milvus están disponibles en Docker. Puede compilar Milvus desde Docker (si su sistema operativo lo soporta) o compilar Milvus desde el código fuente en Linux (otros sistemas operativos no son compatibles).
Incrustación de vectores
Los vectores se almacenan en Milvus como entidades. Cada entidad tiene un campo de ID de vector y un campo de vector. Milvus v1.0 sólo soporta IDs de vectores enteros. Al crear una colección dentro de Milvus, los ID de vector pueden generarse automáticamente o definirse manualmente. Milvus garantiza que los ID de vectores generados automáticamente son únicos; sin embargo, los ID definidos manualmente pueden duplicarse dentro de Milvus. Si se definen manualmente los IDs, los usuarios son responsables de asegurarse de que todos los IDs son únicos.
Particiones
Milvus permite crear particiones en una colección. En situaciones en las que los datos se insertan regularmente y los datos históricos no son significativos (por ejemplo, datos en flujo), las particiones pueden utilizarse para acelerar la búsqueda de similitud vectorial. Una colección puede tener hasta 4.096 particiones. La especificación de una búsqueda vectorial dentro de una partición específica acota la búsqueda y puede reducir significativamente el tiempo de consulta, en particular para colecciones que contienen más de un billón de vectores.
Optimizaciones del algoritmo de índices
Milvus está construido sobre múltiples bibliotecas de índices ampliamente adoptadas, incluyendo Faiss, NMSLIB y Annoy. Milvus es mucho más que una envoltura básica para estas bibliotecas de índices. Estas son algunas de las principales mejoras que se han introducido en las bibliotecas subyacentes:
- Optimización del rendimiento de los índices IVF mediante el algoritmo k-means de Elkan.
- Optimizaciones de búsqueda FLAT.
- Soporte de índice híbrido IVF_SQ8H, que puede reducir el tamaño de los archivos de índice hasta en un 75% sin sacrificar la precisión de los datos. IVF_SQ8H se basa en IVF_SQ8, con una recuperación idéntica pero una velocidad de consulta mucho mayor. Se ha diseñado específicamente para Milvus con el fin de aprovechar la capacidad de procesamiento paralelo de las GPU y el potencial de sinergia entre el coprocesamiento CPU/GPU.
- Compatibilidad dinámica del conjunto de instrucciones.
Búsqueda, creación de índices y otras optimizaciones de Milvus
Se han realizado las siguientes optimizaciones en Milvus para mejorar el rendimiento de la búsqueda y la creación de índices.
- El rendimiento de la búsqueda se optimiza en situaciones en las que el número de consultas (nq) es inferior al número de subprocesos de la CPU.
- Milvus combina las peticiones de búsqueda de un cliente que tienen el mismo topK y los mismos parámetros de búsqueda.
- La creación de índices se suspende cuando entran solicitudes de búsqueda.
- Milvus precarga automáticamente las colecciones en la memoria al inicio.
- Se pueden asignar varios dispositivos GPU para acelerar la búsqueda de similitud vectorial.
Métricas de distancia
Milvus es una base de datos vectorial creada para potenciar la búsqueda de similitudes vectoriales. La plataforma se construyó teniendo en cuenta los MLOps y las aplicaciones de IA a nivel de producción. Milvus admite una amplia gama de métricas de distancia para calcular la similitud, como la distancia euclidiana (L2), el producto interior (PI), la distancia Jaccard, Tanimoto, la distancia Hamming, la superestructura y la subestructura. Las dos últimas métricas se utilizan habitualmente en la búsqueda molecular y el descubrimiento de nuevos fármacos impulsado por la IA.
Registro
Milvus soporta la rotación de registros. En el archivo de configuración del sistema, milvus.yaml, puede establecer el tamaño de un único archivo de registro, el número de archivos de registro y la salida de registro a stdout.
Solución distribuida
Con un nodo de escritura y un número ilimitado de nodos de lectura, Mishards libera el potencial computacional del cluster de servidores. Entre sus funciones se incluyen el reenvío de solicitudes, la división de lectura/escritura, el escalado dinámico/horizontal, etc.
Supervisión
Milvus es compatible con Prometheus, un conjunto de herramientas de alertas y supervisión de sistemas de código abierto. Milvus añade soporte para Pushgateway en Prometheus, haciendo posible que Prometheus adquiera métricas por lotes de corta duración. El sistema de supervisión y alertas funciona del siguiente modo:
- El servidor Milvus envía datos métricos personalizados a Pushgateway.
- Pushgateway garantiza que los datos métricos efímeros se envían de forma segura a Prometheus.
- Prometheus continúa extrayendo datos de Pushgateway.
- Alertmanager se utiliza para establecer el umbral de alerta para diferentes indicadores y enviar alertas por correo electrónico o mensaje.
Gestión de metadatos
Milvus utiliza SQLite para la gestión de metadatos por defecto. SQLite está implementado en Milvus y no requiere configuración. En un entorno de producción, se recomienda utilizar MySQL para la gestión de metadatos.
Participe en nuestra comunidad de código abierto:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word