¿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:
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.
.
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 |