🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus se creó para la búsqueda de similitud vectorial a escala masiva (piense en un billón)

Milvus se creó para la búsqueda de similitud vectorial a escala masiva (piense en un billón)

  • Engineering
January 13, 2021
milvus

Cada día se desperdicia un número incalculable de conocimientos críticos para el negocio porque las empresas no pueden dar sentido a sus propios datos. Se calcula que los datos no estructurados, como texto, imágenes, vídeo y audio, representan el 80% de todos los datos, pero sólo se analiza el 1% de ellos. Afortunadamente, la inteligencia artificial (IA), el software de código abierto y la ley de Moore están haciendo que el análisis a escala de máquina sea más accesible que nunca. Mediante la búsqueda de similitud vectorial, es posible extraer valor de conjuntos de datos masivos no estructurados. Esta técnica consiste en convertir los datos no estructurados en vectores de características, un formato de datos numéricos de fácil manejo que puede procesarse y analizarse en tiempo real.

La búsqueda de similitudes vectoriales tiene aplicaciones que abarcan el comercio electrónico, la seguridad, el desarrollo de nuevos fármacos, etc. Estas soluciones se basan en conjuntos de datos dinámicos que contienen millones, miles de millones o incluso billones de vectores, y su utilidad depende a menudo de la obtención de resultados casi instantáneos. Milvus es una solución de gestión de datos vectoriales de código abierto creada desde cero para gestionar y buscar de forma eficiente grandes conjuntos de datos vectoriales. Este artículo cubre el enfoque de Milvus para la gestión de datos vectoriales, así como la forma en que la plataforma ha sido optimizada para la búsqueda de similitud vectorial.

Ir a:

Los árboles LSM mantienen la eficiencia de la gestión dinámica de datos a gran escala

Para proporcionar una gestión dinámica de datos eficiente, Milvus utiliza una estructura de datos de árbol de fusión con estructura de registro (árbol LSM). Los árboles LSM son idóneos para acceder a datos con un elevado número de inserciones y eliminaciones. Para obtener información detallada sobre los atributos específicos de los árboles LSM que ayudan a garantizar una gestión dinámica de datos de alto rendimiento, consulte la investigación original publicada por sus inventores. Los árboles LSM son la estructura de datos subyacente utilizada por muchas bases de datos populares, como BigTable, Cassandra y RocksDB.

Los vectores existen como entidades en Milvus y se almacenan en segmentos. Cada segmento contiene desde una hasta ~8 millones de entidades. Cada entidad tiene campos para un ID único y entradas vectoriales, representando estas últimas entre 1 y 32768 dimensiones.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_2.png Blog_Milvus se creó para la búsqueda de similitud vectorial a gran escala (piense en un billón)_2.png

La gestión de datos está optimizada para un acceso rápido y una fragmentación limitada

Al recibir una solicitud de inserción, Milvus escribe nuevos datos en el registro de escritura anticipada (WAL). Una vez que la solicitud se registra correctamente en el archivo de registro, los datos se escriben en un búfer mutable. Por último, uno de los tres desencadenantes hace que el búfer se vuelva inmutable y se vacíe en el disco:

  1. Intervalos de tiempo: Los datos se envían regularmente al disco a intervalos definidos (1 segundo por defecto).
  2. Tamaño del búfer: Los datos acumulados alcanzan el límite superior del búfer mutable (128 MB).
  3. Disparo manual: Los datos se vuelcan manualmente al disco cuando el cliente llama a la función de volcado.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_3.png Blog_Milvus se creó para la búsqueda de similitud vectorial a escala masiva (piense en billones)_3.png

Los usuarios pueden añadir decenas o millones de vectores a la vez, generando archivos de datos de diferentes tamaños a medida que se insertan nuevos vectores. Esto provoca una fragmentación que puede complicar la gestión de los datos y ralentizar la búsqueda de similitud vectorial. Para evitar una fragmentación excesiva de los datos, Milvus fusiona constantemente los segmentos de datos hasta que el tamaño combinado del archivo alcanza un límite configurable por el usuario (por ejemplo, 1 GB). Por ejemplo, dado un límite superior de 1 GB, la inserción de 100 millones de vectores de 512 dimensiones resultará en sólo ~200 archivos de datos.

En los escenarios de cálculo incremental en los que los vectores se insertan y se buscan simultáneamente, Milvus hace que los datos vectoriales recién insertados estén disponibles inmediatamente para la búsqueda antes de fusionarlos con otros datos. Después de fusionar los datos, los archivos de datos originales se eliminarán y el archivo fusionado recién creado se utilizará para la búsqueda.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_4.png Blog_Milvus se creó para la búsqueda de similitud vectorial a gran escala (piense en un billón)_4.png

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_5.png Blog_Milvus fue creado para la búsqueda de similitud vectorial a escala masiva (piense en un billón)_5.png

La búsqueda por similitud se acelera indexando datos vectoriales

Por defecto, Milvus se basa en la búsqueda de fuerza bruta cuando consulta datos vectoriales. También conocida como búsqueda exhaustiva, este enfoque comprueba todos los datos vectoriales cada vez que se ejecuta una consulta. Con conjuntos de datos que contienen millones o miles de millones de vectores multidimensionales, este proceso es demasiado lento para ser útil en la mayoría de los escenarios de búsqueda de similitud. Para agilizar la consulta, se utilizan algoritmos para crear un índice vectorial. Los datos indexados se agrupan de forma que los vectores similares estén más próximos entre sí, lo que permite al motor de búsqueda de similitudes consultar sólo una parte de los datos totales, reduciendo drásticamente los tiempos de consulta pero sacrificando la precisión.

La mayoría de los tipos de índices vectoriales soportados por Milvus utilizan algoritmos de búsqueda de vecino más cercano aproximado (RNA). Existen numerosos índices RNA, y cada uno de ellos presenta ventajas y desventajas en cuanto a rendimiento, precisión y requisitos de almacenamiento. Milvus admite índices basados en cuantificación, gráficos y árboles, todos los cuales sirven para diferentes escenarios de aplicación. Consulte la documentación técnica de Milvus para obtener más información sobre la creación de índices y los tipos específicos de índices vectoriales que admite.

La creación de índices genera muchos metadatos. Por ejemplo, la indexación de 100 millones de vectores de 512 dimensiones guardados en 200 archivos de datos dará lugar a 200 archivos de índice adicionales. Para comprobar eficazmente el estado de los archivos y eliminar o insertar archivos nuevos, se necesita un sistema eficaz de gestión de metadatos. Milvus utiliza el procesamiento transaccional en línea (OLTP), una técnica de procesamiento de datos muy adecuada para actualizar y/o eliminar pequeñas cantidades de datos en una base de datos. Milvus utiliza SQLite o MySQL para gestionar los metadatos.

Más información sobre Milvus

Milvus es una plataforma de gestión de datos vectoriales de código abierto actualmente en incubación en LF AI & Data, una organización paraguas de la Fundación Linux. Milvus se convirtió en código abierto en 2019 por Zilliz, la compañía de software de ciencia de datos que inició el proyecto. Puede encontrar más información sobre Milvus en su sitio web. Si está interesado en la búsqueda de similitud vectorial, o en utilizar la IA para desbloquear el potencial de los datos no estructurados, únase a nuestra comunidad de código abierto en GitHub.

    Try Managed Milvus for Free

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

    Get Started

    Like the article? Spread the word

    Sigue Leyendo