Presentación de Milvus 2.3: una versión que marca un hito al ofrecer compatibilidad con GPU, Arm64, CDC y muchas otras funciones muy esperadas.
¡Noticias emocionantes! Después de ocho meses de esfuerzo concertado, estamos encantados de anunciar el lanzamiento de Milvus 2.3, una versión hito que aporta numerosas características muy esperadas, incluyendo soporte para GPU, Arm64, upsert, captura de datos de cambios, índice ScaNN y tecnología MMap. Milvus 2.3 también introduce mejoras en el rendimiento de las consultas, un equilibrio y una programación de la carga más robustos y una mejor observabilidad y operabilidad.
Acompáñeme a ver estas nuevas funciones y mejoras y descubra cómo puede beneficiarse de esta versión.
Compatibilidad con GPU index que multiplica entre 3 y 10 veces el rendimiento en QPS
El índice GPU es una función muy esperada en la comunidad Milvus. Gracias a una gran colaboración con los ingenieros de Nvidia, Milvus 2.3 ha soportado la indexación GPU con el robusto algoritmo RAFT añadido a Knowhere, el motor de indexación de Milvus. Gracias a la compatibilidad con la GPU, Milvus 2.3 es más de tres veces más rápido en QPS que las versiones anteriores que utilizaban el índice HNSW de la CPU y casi diez veces más rápido para conjuntos de datos específicos que requieren cálculos pesados.
Compatibilidad con Arm64 para satisfacer la creciente demanda de los usuarios
Las CPU Arm son cada vez más populares entre los proveedores de servicios en la nube y los desarrolladores. Para satisfacer esta creciente demanda, Milvus proporciona ahora imágenes Docker para la arquitectura ARM64. Con este nuevo soporte de CPU, los usuarios de MacOS pueden crear sus aplicaciones con Milvus de forma más fluida.
Soporte Upsert para una mejor experiencia de usuario
Milvus 2.3 introduce una mejora notable al soportar la operación upsert. Esta nueva funcionalidad permite a los usuarios actualizar o insertar datos sin problemas y les permite realizar ambas operaciones en una sola solicitud a través de la interfaz Upsert. Esta función agiliza la gestión de datos y aporta eficiencia.
Nota:
- La función upsert no se aplica a los ID de autoincremento.
- Upsert se implementa como una combinación de
delete
yinsert
, lo que puede provocar cierta pérdida de rendimiento. Recomendamos el uso deinsert
si utiliza Milvus en escenarios de escritura intensiva.
Búsqueda por rangos para resultados más precisos
Milvus 2.3 permite a los usuarios especificar la distancia entre el vector de entrada y los vectores almacenados en Milvus durante una consulta. Milvus devuelve entonces todos los resultados coincidentes dentro del rango establecido. A continuación se muestra un ejemplo de especificación de la distancia de búsqueda utilizando la función de búsqueda por rango.
// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)
En este ejemplo, el usuario requiere que Milvus devuelva vectores dentro de una distancia de 10 a 20 unidades desde el vector de entrada.
Nota: Las diferentes métricas de distancia varían en la forma de calcular las distancias, dando lugar a distintos rangos de valores y estrategias de clasificación. Por lo tanto, es esencial conocer sus características antes de utilizar la función de búsqueda por rangos.
Índice ScaNN para una mayor velocidad de consulta
Milvus 2.3 es ahora compatible con el índice ScaNN, un índice de aproximación al vecino más cercano (RNA ) de código abierto desarrollado por Google. El índice ScaNN ha demostrado un rendimiento superior en varias pruebas comparativas, superando a HNSW en alrededor de un 20% y siendo aproximadamente siete veces más rápido que IVFFlat. Con la compatibilidad con el índice ScaNN, Milvus alcanza una velocidad de consulta mucho mayor en comparación con versiones anteriores.
Índice creciente para un rendimiento de consulta estable y mejor
Milvus incluye dos categorías de datos: datos indexados y datos en flujo. Milvus puede utilizar índices para buscar rápidamente datos indexados, pero sólo puede buscar brutalmente datos de flujo fila por fila, lo que puede afectar al rendimiento. Milvus 2.3 introduce el Índice Creciente, que crea automáticamente índices en tiempo real para datos en flujo con el fin de mejorar el rendimiento de las consultas.
Iterador para la recuperación de datos por lotes
En Milvus 2.3, Pymilvus ha introducido una interfaz de iterador que permite a los usuarios recuperar más de 16.384 entidades en una búsqueda o búsqueda de rango. Esta función resulta útil cuando los usuarios necesitan exportar decenas de miles o incluso más vectores en lotes.
Compatibilidad con MMap para aumentar la capacidad
MMap es una llamada al sistema UNIX que se utiliza para asignar archivos y otros objetos a la memoria. Milvus 2.3 es compatible con MMap, que permite a los usuarios cargar datos en discos locales y asignarlos a la memoria, aumentando así la capacidad de una sola máquina.
Los resultados de nuestras pruebas indican que utilizando la tecnología MMap, Milvus puede duplicar su capacidad de datos limitando la degradación del rendimiento a un 20%. Este enfoque reduce significativamente los costes totales, por lo que resulta especialmente beneficioso para los usuarios con un presupuesto ajustado a los que no les importa comprometer el rendimiento.
Compatibilidad con CDC para una mayor disponibilidad del sistema
La captura de datos de cambios (CDC) es una función de uso común en los sistemas de bases de datos que captura y replica los cambios de datos en un destino designado. Con la función CDC, Milvus 2.3 permite a los usuarios sincronizar datos entre centros de datos, realizar copias de seguridad de datos incrementales y migrar datos sin problemas, haciendo que el sistema esté más disponible.
Además de las características anteriores, Milvus 2.3 introduce una interfaz de recuento para calcular con precisión el número de filas de datos almacenados en una colección en tiempo real, soporta la métrica Coseno para medir la distancia vectorial, y más operaciones en matrices JSON. Para más características e información detallada, consulte las notas de la versión Milvus 2.3.
Mejoras y correcciones de errores
Además de las nuevas funciones, Milvus 2.3 incluye muchas mejoras y correcciones de errores de versiones anteriores.
Mejora del rendimiento del filtrado de datos
Milvus realiza el filtrado escalar antes de la búsqueda vectorial en las consultas de datos híbridos escalares y vectoriales para obtener resultados más precisos. Sin embargo, el rendimiento de indexación puede disminuir si el usuario ha filtrado demasiados datos después del filtrado escalar. En Milvus 2.3, hemos optimizado la estrategia de filtrado de HNSW para solucionar este problema, lo que ha mejorado el rendimiento de las consultas.
Mayor uso de CPU multinúcleo
La búsqueda aproximada más cercana (RNA) es una tarea computacionalmente intensiva que requiere recursos masivos de CPU. En versiones anteriores, Milvus sólo podía utilizar alrededor del 70% de los recursos de CPU multinúcleo disponibles. Sin embargo, con la última versión, Milvus ha superado esta limitación y puede utilizar completamente todos los recursos de CPU multinúcleo disponibles, lo que resulta en un mejor rendimiento de la consulta y un menor desperdicio de recursos.
QueryNode refactorizado
QueryNode es un componente crucial en Milvus que es responsable de la búsqueda vectorial. Sin embargo, en versiones anteriores, QueryNode tenía estados complejos, colas de mensajes duplicadas, una estructura de código desorganizada y mensajes de error no intuitivos.
En Milvus 2.3, hemos actualizado QueryNode introduciendo una estructura de código sin estado y eliminando la cola de mensajes para borrar datos. Estas actualizaciones dan como resultado un menor desperdicio de recursos y una búsqueda de vectores más rápida y estable.
Colas de mensajes mejoradas basadas en NATS
Construimos Milvus sobre una arquitectura basada en registros y, en versiones anteriores, utilizamos Pulsar y Kafka como intermediarios centrales de registros. Sin embargo, esta combinación se enfrentaba a tres retos clave:
- Era inestable en situaciones de múltiples temas.
- Consumía recursos cuando estaba inactiva y tenía problemas para deduplicar mensajes.
- Pulsar y Kafka están estrechamente ligados al ecosistema Java, por lo que su comunidad rara vez mantiene y actualiza sus SDK para Go.
Para solucionar estos problemas, hemos combinado NATS y Bookeeper como nuestro nuevo corredor de registros para Milvus, que se adapta mejor a las necesidades de los usuarios.
Equilibrador de carga optimizado
Milvus 2.3 ha adoptado un algoritmo de equilibrio de carga más flexible basado en las cargas reales del sistema. Este algoritmo optimizado permite a los usuarios detectar rápidamente fallos en los nodos y cargas desequilibradas y ajustar la programación en consecuencia. Según los resultados de nuestras pruebas, Milvus 2.3 puede detectar fallos, cargas desequilibradas, estados anormales de los nodos y otros eventos en cuestión de segundos y realizar los ajustes oportunos.
Para más información sobre Milvus 2.3, consulte las notas de la versión Milvus 2.3.
Actualizaciones de herramientas
También hemos actualizado Birdwatcher y Attu, dos valiosas herramientas para operar y mantener Milvus, junto con Milvus 2.3.
Actualización de Birdwatcher
Hemos actualizado Birdwatcher, la herramienta de depuración de Milvus, introduciendo numerosas características y mejoras, incluyendo:
- API RESTful para una integración perfecta con otros sistemas de diagnóstico.
- Compatibilidad con el comando PProf para facilitar la integración con la herramienta Go pprof.
- Capacidades de análisis de uso de almacenamiento.
- Funcionalidad eficiente de análisis de registros.
- Soporte para ver y modificar configuraciones en etcd.
Actualización de Attu
Hemos lanzado una nueva interfaz para Attu, una herramienta de administración de bases de datos vectoriales todo en uno. La nueva interfaz tiene un diseño más sencillo y es más fácil de entender.
Para más detalles, consulte las notas de la versión Milvus 2.3.
Sigamos en contacto
Si tiene preguntas o comentarios sobre Milvus, no dude en ponerse en contacto con nosotros a través de Twitter o LinkedIn. También puede unirse a nuestro canal de Slack para charlar directamente con nuestros ingenieros y la comunidad, o consultar nuestro horario de oficina de los martes.
- Compatibilidad con GPU index que multiplica entre 3 y 10 veces el rendimiento en QPS
- Compatibilidad con Arm64 para satisfacer la creciente demanda de los usuarios
- Soporte Upsert para una mejor experiencia de usuario
- Búsqueda por rangos para resultados más precisos
- Índice ScaNN para una mayor velocidad de consulta
- Índice creciente para un rendimiento de consulta estable y mejor
- Iterador para la recuperación de datos por lotes
- Compatibilidad con MMap para aumentar la capacidad
- Compatibilidad con CDC para una mayor disponibilidad del sistema
- Mejoras y correcciones de errores
- Actualizaciones de herramientas
- Sigamos en contacto
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word