Explorando las maravillas de Knowhere 2.0
Recién salido de la imprenta, Milvus 2.3 ha llegado con muchas actualizaciones revolucionarias. A la vanguardia de estas mejoras está Knowhere 2.0, una actualización transformadora que promete elevar Milvus a nuevas alturas.
Acompáñanos en esta publicación del blog mientras profundizamos en Knowhere 2.0, explorando sus características innovadoras, optimizaciones de rendimiento y principios de diseño que lo convierten en una fuerza destacada en las bases de datos vectoriales.
¿Qué es Knowhere?
Knowhere es el motor principal de búsqueda vectorial de Milvus. Imagina la base de datos vectorial como el vasto Universo Marvel; Knowhere es su sede definitiva. La misión principal de Knowhere es realizar búsquedas aproximadas de vecinos más cercanos (ANNS) mediante la construcción de índices con baja latencia.
Knowhere 2.0 y sus nuevas capacidades
Hemos estado trabajando en la reestructuración y actualización de Knowhere desde julio de 2022. Tras incansables debates, diseño, desarrollo y pruebas, Knowhere 2.0 debutó con Milvus 2.3 a finales de agosto de 2023. Esta nueva versión trae muchas mejoras, incluido el soporte para el índice GPU, la similitud de coseno, el índice ScaNN y la arquitectura Arm. El Knowhere actualizado beneficia a usuarios y desarrolladores, convirtiéndolo en una potencia dentro de Milvus. A continuación, exploremos sus características clave.
Soporte para índices GPU
Nvidia aportó los índices GPU_FLAT y GPU_IVFPQ de su biblioteca de búsqueda vectorial, RAFT, a Knowhere 2.0. Esta incorporación acelera significativamente las búsquedas en índices, con Milvus logrando mejoras notables de rendimiento en Nvidia A100, casi 70 veces para SIFT1M.
Milvus QPS GPU vs. CPU
Para obtener más información sobre el índice GPU, consulta la documentación de Milvus.
Soporte para similitud de coseno
En versiones anteriores de Knowhere, los usuarios tenían que utilizar el Producto Interno y normalizar los vectores antes de insertar vectores para usar la similitud de coseno. Este proceso era muy costoso, difícil de acceder y requería mayores conocimientos teóricos por parte de los usuarios.
Knowhere 2.0 admite de forma nativa la distancia de coseno, normaliza automáticamente los vectores entrantes dentro de la biblioteca y los empareja con los tipos de índice correspondientes, lo que mejora significativamente la experiencia del usuario.
Soporte para índice ScaNN
ScaNN, o FastScan, es un índice de vecino más cercano aproximado (ANN) de código abierto implementado por FAISS. Utiliza una codificación PQ más pequeña y conjuntos de instrucciones correspondientes para acceder a los registros de la CPU, lo que da como resultado un excelente rendimiento de indexación.
Knowhere 2.0 ahora admite de forma nativa el índice ScaNN. Con Knowhere 2.0, Milvus 2.3 alcanza siete veces el QPS de IVF_FLAT y 1,2 veces el de HNSW, con una tasa de recuperación de aproximadamente el 95 % en los conjuntos de datos de Cohere.
Soporte para arquitectura ARM
La arquitectura ARM es conocida por su rentabilidad en comparación con la arquitectura x86. Aunque es menos potente, ARM tiene un diseño y conjuntos de instrucciones más sencillos, lo que la hace cada vez más popular. Por ejemplo, las instancias ARM con las mismas especificaciones de CPU (p. ej., 1 vCPU y 16 GB de RAM) son aproximadamente un 15 % más baratas en la plataforma AWS que las instancias x86.
Con el soporte para la arquitectura ARM en Knowhere 2.0, los usuarios ahora pueden ejecutar y crear servicios de capa superior en esta arquitectura.
Soporte para búsqueda por rango
Hay dos métodos para encontrar los vecinos más cercanos: K Nearest Neighbor (KNN) y Range Search. KNN encuentra los "k" vectores más cercanos a un vector de consulta "q" dentro de una colección de vectores "X." Mientras tanto, Range Search no tiene un "k" especificado; en su lugar, devuelve todos los vectores dentro de una cierta distancia (radio) del vector de consulta "q" dentro de la colección de vectores "X."
Knowhere 2.0 admite range search para múltiples índices en la biblioteca, como HNSW, DiskANN e índices IVF. Esta función permite a los usuarios especificar la distancia entre el vector de entrada y los vectores almacenados en Milvus durante una consulta.
Consultas de filtro optimizadas
En consultas mixtas escalares y vectoriales, puedes filtrar algunos vectores. Knowhere 2.0 ha mejorado significativamente las consultas de vectores con filtro para HNSW, lo que resulta en aumentos de rendimiento de hasta 6 a 80 veces en comparación con versiones anteriores.
Mejoras en la estructura del código y la compilación
Knowhere 2.0 simplifica la herencia de clases de C++, utiliza patrones proxy para la integración de nuevos índices, refactoriza el módulo Config, adopta Conan como gestor de paquetes para una compilación optimizada y aprovecha el grupo de subprocesos de Folly para un control preciso de los subprocesos. Todas estas mejoras hacen que usar Milvus sea más sencillo.
Soporte de MMap
En el pasado, algunos usuarios se enfrentaban a restricciones de espacio de memoria debido a sus grandes conjuntos de datos, lo que afectaba a los índices que podían almacenar. Sin embargo, con la introducción de Knowhere 2.0, Milvus ahora admite Memory Mapping (MMap), lo que permite el mapeo automático de archivos grandes en memoria. Esta nueva función permite a los usuarios acceder a datos de índices extensos a pesar de contar con memoria insuficiente.
Soporte para la recuperación de vectores originales
Después de finalizar una búsqueda, los usuarios pueden requerir acceso a los vectores originales en función de los IDs devueltos para cálculos personalizados adicionales o filtrado. Con Knowhere 2.0, los usuarios pueden recuperar directamente los vectores originales del índice, reduciendo la latencia en comparación con obtenerlos desde almacenamiento remoto como S3.
Para obtener más detalles sobre las características y mejoras de Knowhere 2.0, consulta Notas de la versión de Knowhere 2.0.
¡Te invitamos a contribuir a Knowhere!
Knowhere está en continua evolución, y tus comentarios importan. Si tienes sugerencias o ideas valiosas, no dudes en contribuir al repositorio de Knowhere.
Sigue leyendo

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.

Vector Databases vs. Graph Databases
Use a vector database for AI-powered similarity search; use a graph database for complex relationship-based queries and network analysis.



