План развития Milvus
В версии Milvus 3.0 объединены многовекторный поиск, запросы в стиле SQL, гибкие схемы и доступ к данным в хранилище типа «озеро». Следующие этапы будут основываться на этой основе и предусматривать более разнообразные запросы, более широкие модели данных, а также улучшение производительности и масштабируемости. В данной дорожной карте изложены приоритетные направления развития открытого проекта Milvus.
Milvus 3.0 доступен для общего пользования, начиная с версии v3.0.1. Перечисленные ниже выпущенные функции были представлены в версии v3.0.0; функции, доступные в предварительной версии, и функции, доступные по желанию пользователя, обозначены там, где они упоминаются. Серия 3.0.x расширяет эти возможности, а выпуск версии 3.1 запланирован на декабрь 2026 года. Планируемые функции и целевые даты могут измениться по мере развития проекта.
Поиск и извлечение
Дорожная карта по извлечению информации сосредоточена на объединении большего количества сигналов релевантности в рамках Milvus — от сопоставления текста и многовекторных представлений до переранжирования и фасетов результатов поиска.
Доступно в версии 3.0
- Поиск с использованием мультивекторных представлений: поиск по StructArray поддерживает Muvera и Lemur, а также использование выражений регулярного выражения (
element_filter) для фильтрации на уровне элементов. Политики сопоставления включают: «MATCH_ANY», «MATCH_ALL», «MATCH_LEAST», «MATCH_MOST» и «MATCH_EXACT». - Сопоставление и сходство текстов: пользовательские словари и синонимы позволяют адаптировать поиск текста к потребностям приложения. Фильтрация с помощью регулярных выражений поддерживает сопоставление по шаблонам, а MinHash — обнаружение почти-дубликатов.
- Переранжирование и инференция: В Milvus 3.0 представлен начальный набор возможностей переранжирования с помощью цепочки функций (Function Chain), а также провайдер инференции Hugging Face. Остальные возможности цепочки функций планируется реализовать в версии 3.0.x.
- Агрегация результатов поиска: агрегация результатов поиска обеспечивает фасетную фильтрацию результатов поиска.
Планируется к выпуску в версии 3.0.x
В версиях серии 3.0.x планируется добавить неточное сопоставление и глобальную статистику, а также полную поддержку Function Chain.
Планируется к выпуску в версии 3.1
В планах — поиск на основе Grep, более тесная интеграция поиска по приближенным ближайшим соседям (ANN) и фильтрации посредством объединения ANN-поиска и ANN-фильтра, а также улучшения в области поиска по разреженным данным.
Аналитика и запросы в стиле SQL
Milvus расширяет возможности своего механизма запросов, чтобы приложения могли сортировать и агрегировать данные одновременно с поиском. На следующем этапе будут добавлены соединения, материализованные представления и пользовательские вычисления.
Доступно в версии 3.0
Запросы и поиск поддерживают сортировку с помощью ORDER BY. Функция «Агрегация запросов» (Query Aggregation) добавляет функцию «Агрегация по группам» ( GROUP BY ) для вычисления сгруппированных статистических данных.
Планируется в версии 3.1
- Более разнообразные запросы: введение соединений, начиная с полусоединений, и коллекций материализованных представлений.
- Обновление данных и целостность: поддержка обновлений на месте и удаления дубликатов по первичному ключу во время загрузки.
- Итерация запросов и семантика JSON: добавление итератора запросов с сохранением состояния, JSON-
GROUP BYи семантики NULL в SQL и JSON. - Пользовательские вычисления: поддержка пользовательских функций (UDF) на языке Python.
Гибкая схема и типы данных
Работа над схемой сосредоточена на развитии существующих коллекций и представлении более широкого спектра данных. Она охватывает изменения полей, многовекторные структуры, длинный текст и срок действия сущностей.
Доступно в версии 3.0
- Онлайн-изменения схемы: существующие коллекции поддерживают добавление полей в режиме онлайн, включая векторные поля и поля
Array<Struct>. Удаление полей доступно в предварительной версии и может иметь ограничения. - Заполнение существующих данных: внешнее заполнение использует Spark Connector. Внутреннее заполнение привязывает функцию BM25 или MinHash к коллекции и вычисляет её результат по существующим данным.
- Текстовые и мультивекторные данные: тип «
TEXT» хранит длинный текст, а StructArray поддерживает извлечение с поздним взаимодействием через `MAX_SIM`. Для использования `TEXT` требуется включение Storage V3. - Значения NULL и срок действия: векторные поля допускают значения NULL, а срок действия (TTL) на уровне сущности контролирует истечение срока хранения.
Планируется в версии 3.0.x
Планируемые усовершенствования схемы расширяют поддержку StructArray для типов, значений NULL, а также добавления и удаления полей. Кроме того, они добавляют поддержку молекулярных формул и фильтров IS NULL / IS NOT NULL для векторных полей.
Планируется в версии 3.1
Следующие расширения модели данных включают вложенные JSON и Struct, составные первичные ключи, коллекции без векторных полей и разреженные векторы в StructList.
Интеграция с озерами данных и управление версиями данных
Milvus разрабатывает более тесную интеграцию с хранилищами типа «озеро» и пакетной обработкой. Внешние коллекции обеспечивают доступ к данным там, где они находятся, а моментальные снимки служат основой для управления версиями данных.
Доступно в версии 3.0
- Доступ к внешним данным: External Collection поддерживает данные в форматах Lance, Parquet и Iceberg.
- Снимки и интеграция с пакетной обработкой: снимок фиксирует версию данных коллекции, а Spark Connector поддерживает пакетные рабочие процессы.
- Основа хранения: Storage V3 (Loon) обеспечивает поддержку Vortex и Lance по выбору. По умолчанию она отключена и включается с помощью
common.storage.useLoonFFI. От неё зависят как «Snapshot», так и «TEXT».
Планируется в версии 3.0.x
Планируемые усовершенствования позволят использовать моментальный снимок коллекции Milvus в качестве внешней коллекции. Поддержка внешних таблиц также будет расширена за счёт фрагментации JSON, добавления функциональных полей и удаления полей.
Планируется в версии 3.1
В планах — реализация разреженных и скалярных индексов на базе S3, а также удаление данных посредством импорта.
Производительность, индексирование и масштабируемость
План развития производительности охватывает индексы поиска, выполнение запросов и рост кластера. Он также затрагивает восстановление и запросы, требующие чтения данных из объектного хранилища.
Доступно в версии 3.0
- Индексирование разреженных данных: в рамках полной переработки индексации разреженных данных вводится SINDI.
- Выбор индекса: индекс пропускания «
FAISS» принимает строки фабрики индексов Faiss с такими вариантами, как SVS, Panorama, PQ, IVFPQ и ScaNN. Индексирование DiskANN также доступно для встраиваемых списков (EmbList). - Уплотнение: функция Force Merge обеспечивает явный контроль над слиянием сегментов.
Планируется к реализации в версии 3.1
- Запросы с учетом особенностей хранилища: добавление спуска предикатов для Vortex, включая обрезку на уровне страниц и индексы пропуска.
- Расширение кластера и многопользовательская среда: поддержка разделения шардов, настраиваемых ключей шардирования и оптимизаций для многопользовательской среды.
- Выполнение запросов и индексирование: разработка QueryView, улучшение поддержки широких коллекций, редукция результатов потока и поддержка нескольких индексов.
- Надежность записи: поддержка идемпотентных записей.
- Кэширование в объектном хранилище: использование Talon в качестве кэша S3 для улучшения восстановления после сбоев и производительности «холодных» запросов.
После версии 3.1
В долгосрочные планы входят функции «путешествия во времени» и отката моментальных снимков. Их объем и сроки выпуска пока не подтверждены.
Помогите сформировать план развития
Поделитесь информацией о рабочих нагрузках, ограничениях и запросах на добавление функций, важных для ваших приложений, в GitHub Discussions. Сообщайте об ошибках через GitHub Issues.
Чтобы внести свой вклад в разработку кода или документации, начните с Руководства для участников.