Hoja de ruta de Milvus
Milvus 3.0 combina la recuperación multivectorial, las consultas de tipo SQL, los esquemas flexibles y el acceso a los datos almacenados en un lago de datos. Las próximas fases se basarán en esos cimientos con consultas más completas, modelos de datos más amplios y mejoras en el rendimiento y la escalabilidad. Esta hoja de ruta describe las prioridades para Milvus de código abierto.
Milvus 3.0 está disponible de forma general a partir de la versión 3.0.1. Las funcionalidades lanzadas que se indican a continuación se introdujeron en la versión 3.0.0; las funciones en fase de prueba y las capacidades opcionales se identifican donde aparecen. La serie 3.0.x amplía estas capacidades, mientras que la versión 3.1 tiene como fecha de lanzamiento diciembre de 2026. Las características previstas y las fechas objetivo pueden cambiar a medida que avanza el desarrollo.
Búsqueda y recuperación
La hoja de ruta de la recuperación se centra en combinar más señales de relevancia dentro de Milvus, desde la coincidencia de texto y las representaciones multivectoriales hasta la reclasificación y las facetas de los resultados de búsqueda.
Disponible en la versión 3.0
- Recuperación multivectorial: la búsqueda con StructArray es compatible con Muvera y Lemur, y utiliza «
element_filter» para el filtrado a nivel de elemento. Las políticas de coincidencia incluyen «MATCH_ANY», «MATCH_ALL», «MATCH_LEAST», «MATCH_MOST» y «MATCH_EXACT». - Coincidencia y similitud de texto: los diccionarios personalizados y los sinónimos adaptan la recuperación de texto a las necesidades de la aplicación. El filtrado mediante expresiones regulares admite la coincidencia de patrones, y MinHash permite la detección de casi duplicados.
- Reordenación e inferencia: Milvus 3.0 introduce un conjunto inicial de capacidades de reordenación de Function Chain, junto con el proveedor de inferencia Hugging Face. El resto de capacidades de Function Chain están previstas para la versión 3.0.x.
- Agregación de búsquedas: la agregación de búsquedas proporciona facetas sobre los resultados de búsqueda.
Previsto para la versión 3.0.x
Está previsto que la serie 3.0.x incorpore la coincidencia difusa y las estadísticas globales, y que complete la compatibilidad con Function Chain.
Previsto para la versión 3.1
Los planes incluyen la recuperación basada en Grep, una integración más estrecha de la búsqueda de vecino más cercano aproximado (ANN) y el filtrado mediante la fusión de ANN y filtro, así como mejoras en la recuperación dispersa.
Análisis y consultas de tipo SQL
Milvus está ampliando su motor de consultas para que las aplicaciones puedan ordenar y agregar datos al mismo tiempo que realizan la recuperación. En la siguiente fase se añadirán uniones, vistas materializadas y cálculos personalizados.
Disponible en la versión 3.0
Las consultas y búsquedas admiten la ordenación mediante « ORDER BY ». La agregación de consultas añade « GROUP BY » para calcular estadísticas agrupadas.
Previsto para la versión 3.1
- Consultas más completas: introducción de uniones, empezando por las semiuniones, y colecciones de vistas materializadas.
- Actualizaciones de datos e integridad: compatibilidad con actualizaciones in situ y deduplicación de claves primarias durante la ingesta.
- Iteración de consultas y semántica JSON: se añade un iterador de consultas con estado, JSON
GROUP BYy semántica NULL para SQL y JSON. - Cálculos personalizados: compatibilidad con funciones definidas por el usuario (UDF) en Python.
Esquema y tipos de datos flexibles
El trabajo sobre el esquema se centra en la evolución de las colecciones existentes y en representar una gama más amplia de datos. Abarca cambios en los campos, estructuras multivectoriales, texto largo y caducidad de entidades.
Disponible en la versión 3.0
- Cambios de esquema en línea: las colecciones existentes admiten la adición de campos en línea, incluidos campos vectoriales y de
Array<Struct>. La eliminación de campos está disponible en versión preliminar y puede tener limitaciones. - Relleno de datos existentes: el relleno externo utiliza el conector Spark. El relleno interno aplica una función BM25 o MinHash a una colección y calcula su resultado sobre los datos existentes.
- Datos de texto y multivectoriales: el tipo «
TEXT» almacena texto largo, mientras que «StructArray» admite la recuperación de interacción tardía a través deMAX_SIM. «TEXT» requiere la activación de Storage V3. - Valores NULL y caducidad: Los campos vectoriales aceptan valores NULL, y el tiempo de vida (TTL) a nivel de entidad controla la caducidad.
Previsto para la versión 3.0.x
Las mejoras previstas en el esquema amplían la compatibilidad de StructArray con tipos, valores NULL y la adición y eliminación de campos. También añaden compatibilidad con fórmulas moleculares y filtros « IS NULL » / « IS NOT NULL » para campos vectoriales.
Previsto para la versión 3.1
Las próximas ampliaciones del modelo de datos incluyen JSON y Struct anidados, claves primarias compuestas, colecciones sin campos vectoriales y vectores dispersos en StructList.
Integración con lagos de datos y control de versiones de datos
Milvus está desarrollando una integración más estrecha con el almacenamiento en «data lake» y el procesamiento por lotes. Las colecciones externas permiten acceder a los datos allí donde se encuentran, mientras que las instantáneas sirven de base para el control de versiones de los datos.
Disponible en la versión 3.0
- Acceso a datos externos: External Collection es compatible con datos en formatos Lance, Parquet e Iceberg.
- Instantáneas e integración por lotes: las instantáneas capturan una versión de los datos de la colección, y el conector Spark admite flujos de trabajo por lotes.
- Base de almacenamiento: Storage V3 (Loon) ofrece compatibilidad opcional con Vortex y Lance. Está desactivada por defecto y se habilita a través de
common.storage.useLoonFFI. Tanto las instantáneas comoTEXTdependen de ella.
Previsto para la versión 3.0.x
Las mejoras previstas permitirán que una instantánea de recopilación de Milvus sirva como recopilación externa. La compatibilidad con tablas externas también se amplía al desglose de JSON, la adición de campos de función y la eliminación de campos.
Previsto para la versión 3.1
Los planes incluyen índices dispersos y escalares basados en S3, junto con la eliminación mediante importación.
Rendimiento, indexación y escalabilidad
La hoja de ruta de rendimiento abarca los índices de recuperación, la ejecución de consultas y el crecimiento del clúster. También aborda la recuperación y las consultas que deben leer datos del almacenamiento de objetos.
Disponible en la versión 3.0
- Indexación dispersa: la revisión de los índices dispersos introduce SINDI.
- Elección de índices: el índice de paso directo «
FAISS» acepta cadenas de la fábrica de índices Faiss, con opciones que incluyen SVS, Panorama, PQ, IVFPQ y ScaNN. La indexación DiskANN también está disponible para listas incrustadas (EmbList). - Compactación: «Force Merge» proporciona un control explícito sobre la fusión de segmentos.
Previsto para la versión 3.1
- Consultas con reconocimiento del almacenamiento: Se añade el empuje de predicados para Vortex, incluyendo la poda a nivel de página y los índices de omisión.
- Crecimiento del clúster y multitenencia: compatibilidad con la división de fragmentos, claves de fragmentación personalizadas y optimizaciones de multitenencia.
- Ejecución de consultas e indexación: desarrollar QueryView, mejorar la compatibilidad con colecciones amplias, la reducción de resultados en flujo y la compatibilidad con múltiples índices.
- Fiabilidad de escritura: compatibilidad con escrituras idempotentes.
- Almacenamiento en caché de objetos: uso de Talon como caché S3 para mejorar la recuperación ante fallos y el rendimiento de las consultas inactivas.
Más allá de la versión 3.1
El trabajo a más largo plazo incluye el «viaje en el tiempo» y la reversión de instantáneas. Su alcance y fecha de lanzamiento aún están por confirmar.
Ayuda a dar forma a la hoja de ruta
Comparte las cargas de trabajo, las limitaciones y las solicitudes de funcionalidades que son importantes para tus aplicaciones en GitHub Discussions. Informa de errores a través de GitHub Issues.
Para contribuir con código o documentación, empieza por la Guía del colaborador.