План развития 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.

Чтобы внести свой вклад в разработку кода или документации, начните с Руководства для участников.