¿Qué es la base de datos de vectores Milvus?

Milvus fue creada en 2019 con el objetivo principal de almacenar, indexar y gestionar vectores de incrustación a gran escala generados por redes neuronales profundas y otros modelos de aprendizaje automático (ML).

Como base de datos diseñada específicamente para manejar consultas de vectores de entrada, Milvus puede indexar vectores a una escala de decenas de miles de millones. A diferencia de las bases de datos relacionales existentes que lidian principalmente con patrones predefinidos y datos estructurados, Milvus está diseñada desde cero para manejar vectores de incrustación derivados de datos no estructurados.

Con la continua expansión de Internet, los datos no estructurados se han vuelto cada vez más comunes, incluyendo correos electrónicos, documentos, datos de sensores IoT, fotos de Facebook, estructuras proteicas, y más. Para permitir a las computadoras comprender y procesar datos no estructurados, es necesario transformar estos datos en vectores utilizando técnicas de incrustación. Milvus almacena e indexa estos vectores. Milvus puede analizar la distancia de similitud entre dos vectores calculando su distancia de similitud e inferir su correlación. Si dos vectores de incrustación son muy similares, indica que las fuentes de datos originales también son similares.

Flujo de trabajo de Milvus:

Flujo de trabajo

Conceptos clave

Si no estás familiarizado con el mundo de las bases de datos de vectores y la búsqueda de similitud, es posible que encuentres útiles los siguientes conceptos clave.

Aprende más sobre los términos de Milvus.

Datos no estructurados

Los datos no estructurados, incluyendo imágenes, videos, audio y lenguaje natural, se refieren a información que no sigue un modelo predefinido o una estructura organizativa. Este tipo de datos representa aproximadamente el 80% de los datos globales y puede transformarse en vectores utilizando varios modelos de inteligencia artificial (IA) y aprendizaje automático (ML).

Vectores de incrustación

Los vectores de incrustación son las abstracciones de características de los datos no estructurados (como correos electrónicos, datos de sensores IoT, fotos de Instagram, estructuras proteicas, etc.). Desde una perspectiva matemática, los vectores de incrustación consisten en números de punto flotante o matrices binarias. Las técnicas de incrustación modernas se utilizan para transformar datos no estructurados en vectores de incrustación.

Búsqueda de similitud de vectores

La búsqueda de similitud de vectores implica comparar un vector con una base de datos para encontrar el vector más similar al vector de consulta. El uso de algoritmos de búsqueda de vecinos más cercanos aproximados (ANNS) puede acelerar el proceso de búsqueda. Si dos vectores de incrustación son muy similares, indica que la fuente de datos original también es similar.

¿Por qué elegir Milvus?

  • Alto rendimiento para la búsqueda de vectores en conjuntos de datos a gran escala.
  • Soporte de la comunidad centrado en el desarrollador con soporte multilingüe y de herramientas.
  • Logra escalabilidad y alta fiabilidad en la nube, incluso manteniendo la estabilidad en caso de fallas.
  • Permite la búsqueda mixta mediante la combinación de filtrado escalar con búsqueda de similitud de vectores.

¿Qué índices y estándares métricos se admiten?

Los índices son las unidades organizativas de datos. Antes de buscar o consultar las entidades insertadas, debes declarar el tipo de índice y el estándar de métrica de similitud. Si no especificas el tipo de índice, Milvus utilizará la búsqueda de fuerza bruta de manera predeterminada.

Tipos de índices

Milvus admite la mayoría de los tipos de índices de vectores para la búsqueda aproximada del vecino más cercano (ANNS), incluyendo:

  • FLAT: Adecuado para escenarios que buscan resultados de búsqueda completamente precisos y precisos en conjuntos de datos a pequeña escala (millones).
  • IVF_FLAT: Basado en el índice de cuantización, adecuado para escenarios que buscan un equilibrio ideal entre precisión y velocidad de consulta. También hay una versión para GPU llamada GPU_IVF_FLAT.
  • IVF_SQ8: Basado en el índice de cuantización, adecuado para escenarios que buscan una reducción significativa en el consumo de memoria de disco, CPU y GPU debido a recursos muy limitados.
  • IVF_PQ: Basado en el índice de cuantización, adecuado para escenarios que buscan una alta velocidad de consulta incluso a expensas de la precisión. También hay una versión para GPU llamada GPU_IVF_PQ.
  • HNSW: Basado en el índice gráfico, adecuado para escenarios con requisitos muy altos de eficiencia de búsqueda.

Para obtener información más detallada, consulta el Índice de vectores.

Métricas de similitud

En Milvus, las métricas de similitud se utilizan para medir la similitud entre vectores. Elegir una buena métrica de distancia puede mejorar significativamente el rendimiento de clasificación y agrupación. Dependiendo de la forma de los datos de entrada, se eligen métricas de similitud específicas para lograr el mejor rendimiento.

Las métricas comunes utilizadas para incrustaciones de puntos flotantes son:

  • Distancia euclidiana (L2): Esta métrica se utiliza comúnmente en el campo de la visión por computadora.
  • Producto interno (IP): Esta métrica se utiliza comúnmente en el campo del procesamiento de lenguaje natural.

Las métricas comunes utilizadas para incrustaciones binarias son:

  • Distancia de Hamming: Esta métrica se utiliza comúnmente en el campo del procesamiento de lenguaje natural.
  • Similitud de Jaccard: Esta métrica se utiliza comúnmente para la búsqueda de similitudes moleculares.

Aplicaciones de Muestra

Milvus facilita la incorporación de la búsqueda de similitud a tus aplicaciones. Algunas aplicaciones de muestra de Milvus incluyen:

  • Búsqueda de similitud de imágenes: Permite hacer que las imágenes sean buscables y devuelve las imágenes más similares de una gran base de datos casi al instante.
  • Búsqueda de similitud de videos: Al convertir los fotogramas clave en vectores y luego ingresar los resultados en Milvus, puede buscar y recomendar miles de millones de videos en tiempo real.
  • Búsqueda de similitud de audio: Permite realizar consultas rápidas en grandes cantidades de datos de audio, como voz, música, efectos de sonido y sonidos similares.
  • Sistemas de recomendación: Recomienda información o productos en base al comportamiento y necesidades del usuario.
  • Sistemas de preguntas y respuestas: Chatbots interactivos de preguntas y respuestas digitales que pueden responder automáticamente preguntas de los usuarios.
  • Clasificación de secuencias de ADN: Clasifica con precisión genes en milisegundos al comparar secuencias de ADN similares.
  • Motores de búsqueda de texto: Ayuda a los usuarios a encontrar la información que están buscando al comparar palabras clave con una base de datos de texto.

Concepto de Diseño de Milvus

Como base de datos vectorial basada en la nube, Milvus separa el almacenamiento de la computación en su diseño. Para mejorar la elasticidad y flexibilidad, todos los componentes de Milvus son sin estado.

El sistema se divide en cuatro capas:

  • Capa de Acceso: Compuesta por un grupo de proxies sin estado que sirven como la capa frontal del sistema y los puntos finales para los usuarios.
  • Servicio Coordinador: Este servicio asigna tareas a nodos trabajadores y actúa como el centro central del sistema.
  • Nodos Trabajadores: Estos nodos actúan como los brazos y piernas del sistema, siguiendo las instrucciones del servicio coordinador y ejecutando comandos DML/DDL desencadenados por los usuarios de manera automática.
  • Almacenamiento: Esta es la columna vertebral del sistema responsable de la persistencia de datos. Incluye almacenamiento de metadatos, agentes de registro y almacenamiento de objetos.

Arquitectura de Milvus.

Herramientas para Desarrolladores

Milvus proporciona un conjunto completo de APIs y herramientas para desarrollo y operación.

Acceso a API

Milvus proporciona bibliotecas de cliente envueltas alrededor de la API de Milvus, las cuales se pueden usar para insertar, eliminar y consultar datos programáticamente desde el código de la aplicación:

  • PyMilvus
  • Node.js SDK
  • Go SDK
  • Java SDK

Herramientas del Ecosistema Milvus

El ecosistema Milvus ofrece varias herramientas útiles, incluyendo:

  • Milvus CLI
  • Attu: Un sistema de gestión gráfica para Milvus.
  • MilvusDM (Migración de Datos Milvus): Una herramienta de código abierto específicamente para importar y exportar datos con Milvus.
  • Herramienta de Planificación de Capacidad de Milvus: Ayuda a estimar el tamaño de archivo crudo requerido, el tamaño de memoria y el tamaño estable de disco a través de varios tipos de índices.

Limitaciones de Milvus

Milvus se compromete a proporcionar la mejor base de datos vectorial para impulsar aplicaciones de inteligencia artificial y búsquedas de similitud vectorial. Sin embargo, el equipo trabaja continuamente para introducir más características y herramientas óptimas para mejorar la experiencia del usuario. Esta página enumera algunas limitaciones conocidas que los usuarios pueden encontrar al usar Milvus.

Longitud de Nombres de Recursos

Recurso Límite
Colección 255 caracteres
Campo 255 caracteres
Índice 255 caracteres
Partición 255 caracteres

Reglas de Nomenclatura

Los nombres de recursos pueden constar de números, letras y guiones bajos (_). Los nombres deben comenzar con una letra o guión bajo.

Número de Recursos

Recurso Límite
Colección 65,536
Conexiones/Agentes 65,536

Número de Recursos en Colecciones

Recurso Límite
Partición 4,096
Fragmento 64
Campo 64
Índice 1
Entidad Ilimitado

Longitud de Cadenas

Tipo de Dato Límite
VARCHAR 65,535

Dimensión de Vectores

Atributo Límite
Dimensión 32,768

Entrada y Salida para Cada RPC

Operación Límite
Operación de Inserción 512 MB
Operación de Búsqueda 512 MB
Operación de Consulta 512 MB

Limitación de Carga

En la versión actual, los datos a cargar deben estar dentro del 90% de los recursos de memoria totales de todos los nodos de consulta para reservar recursos de memoria para el motor de ejecución.

Limitación de búsqueda

Vector Límite
topk (número de resultados más similares a devolver) 16,384
nq (número de solicitudes de búsqueda) 16,384