Информация о выпуске
Узнайте, что нового появилось в Milvus! На этой странице собраны новые возможности, улучшения, известные проблемы и исправления ошибок в каждом выпуске. В этом разделе вы найдете примечания к выпуску для каждой версии после v2.5.0. Мы рекомендуем вам регулярно посещать эту страницу, чтобы узнавать об обновлениях.
v2.5.4
Дата выпуска: 23 января 2025 года
Версия Milvus | Версия Python SDK | Версия Node.js SDK | Версия Java SDK |
---|---|---|---|
2.5.4 | 2.5.4 | 2.5.4 | 2.5.4 |
Мы рады сообщить о выходе Milvus 2.5.4, в котором представлены ключевые оптимизации производительности и новые возможности, такие как изоляция PartitionKey, Sparse Index с DAAT MaxScore и улучшенные механизмы блокировки. Особое место в этом выпуске занимает поддержка 10 000 коллекций и 1 миллиона разделов, что является важной вехой для многопользовательских систем. В этой версии также исправлено множество ошибок, повышающих общую стабильность и надежность, две из которых могут привести к потере данных. Мы рекомендуем вам обновить или опробовать эту последнюю версию и ждем ваших отзывов, которые помогут нам постоянно совершенствовать Milvus!
Особенности
- Поддержка изоляции PartitionKey для повышения производительности при использовании нескольких ключей разделов(#39245). Для получения дополнительной информации обратитесь к разделу Использование ключа раздела.
- Sparse Index теперь поддерживает DAAT MaxScore knowhere/#1015. Дополнительные сведения см. в разделе Sparse Vector.
- Добавлена поддержка
is_null
в выражении(#38931) - Привилегии корня могут быть настроены(#39324)
Улучшения
- Поддержка 10K коллекций и 1 млн. разделов в одном кластере(#37630)
- Кэшированная информация о дельте сегментов для ускорения работы координатора запросов(#39349)
- Одновременное чтение метаданных на уровне коллекции для ускорения восстановления после сбоев(#38900)
- Уточненная гранулярность блокировки в QueryNode(#39282),(#38907)
- Унификация стиля за счет использования CStatus для обработки вызовов CGO NewCollection(#39303)
- Пропущена генерация ограничителя разделов, если ни один из разделов не задан(#38911)
- Добавлена поддержка RESTful API(#38875)(#39425)
- Удалены ненужные Bloom-фильтры в QueryNode и DataNode для уменьшения использования памяти(#38913)
- Ускорена загрузка данных за счет ускорения генерации, планирования и выполнения задач в QueryCoord(#38905)
- Уменьшена блокировка в DataCoord для ускорения операций загрузки и вставки(#38904)
- Добавлены имена первичных полей в
SearchResult
иQueryResults
(#39222) - В качестве стандарта дросселирования дисковой квоты используется размер бинлога и размер индекса(#38844)
- Оптимизировано использование памяти для полнотекстового поиска knowhere/#1011
- Добавлен контроль версий для скалярных индексов(#39236)
- Улучшена скорость получения информации о коллекции из RootCoord за счет исключения ненужных копий(#38902)
Исправления критических ошибок
- Исправлены сбои при поиске по первичным ключам с индексами(#39390)
- Исправлена потенциальная проблема потери данных, вызванная перезапуском MixCoord и одновременной промывкой(#39422)
- Исправлена ошибка удаления, вызванная неправильным параллелизмом между задачами статистики и уплотнением L0 после перезапуска MixCoord(#39460)
- Исправлена несовместимость скалярных инвертированных индексов при обновлении с 2.4 до 2.5(#39272)
Исправления ошибок
- Исправлены проблемы с медленными запросами, вызванные грубой гранулярностью блокировки при загрузке нескольких столбцов(#39255)
- Исправлена проблема, при которой использование псевдонимов могло привести к тому, что итератор обходил не ту базу данных(#39248)
- Исправлен сбой обновления группы ресурсов при изменении базы данных(#39356)
- Исправлена проблема, из-за которой индекс tantivy не мог удалить индексные файлы во время выпуска(#39434)
- Исправлено медленное индексирование, вызванное слишком большим количеством потоков(#39341)
- Исправлена проблема, из-за которой проверка дисковой квоты не пропускалась при массовом импорте(#39319)
- Устранены проблемы с зависанием, вызванные слишком большим количеством потребителей очереди сообщений, путем ограничения параллелизма(#38915)
- Исправлены таймауты запросов, вызванные перезапуском MixCoord во время масштабных уплотнений(#38926)
- Исправлены проблемы с дисбалансом каналов, вызванные простоем узлов(#39200)
- Исправлена проблема, из-за которой баланс канала мог застрять.(#39160)
- Исправлена проблема, из-за которой проверка уровня привилегий пользовательских групп RBAC становилась неэффективной(#39224)
- Исправлен сбой при получении количества строк в пустых индексах(#39210)
- Исправлена некорректная оценка памяти для небольших сегментов(#38909)
v2.5.3
Дата выпуска: 13 января 2025 года
Версия Milvus | Версия Python SDK | Версия SDK для Node.js | Версия Java SDK |
---|---|---|---|
2.5.3 | 2.5.3 | 2.5.3 | 2.5.4 |
В Milvus 2.5.3 исправлены критические ошибки и улучшена производительность, что повышает общую стабильность, надежность и удобство использования. В этой версии улучшена обработка параллелизма, усилена индексация и поиск данных, а также обновлен ряд ключевых компонентов для более надежной работы пользователей.
Исправления ошибок
- Исправлена проблема, при которой использование фильтра
IN
по первичному ключуVARCHAR
могло возвращать пустые результаты.(#39108) - Исправлена проблема параллелизма между операциями запроса и удаления, которая могла приводить к неправильным результатам.(#39054)
- Исправлен сбой, вызванный итеративной фильтрацией, когда
expr
в запросе был пустым.(#39034) - Исправлена проблема, когда ошибка диска при обновлении конфигурации приводила к использованию настроек конфигурации по умолчанию.(#39072)
- Исправлена потенциальная потеря удаленных данных из-за уплотнения кластера.(#39133)
- Исправлена ошибка запроса на совпадение текста в растущих сегментах данных.(#39113)
- Исправлены сбои при извлечении, вызванные тем, что индекс не содержал исходных данных для разреженных векторов.(#39146)
- Исправлено возможное состояние гонки полей столбцов, вызванное одновременным выполнением запросов и загрузкой данных.(#39152)
- Исправлены ошибки массовой вставки, когда поля nullable или default_value не были включены в данные.(#39111)
Улучшения
- Добавлен API группы ресурсов для RESTful-интерфейса.(#39092)
- Оптимизирована производительность извлечения данных за счет использования SIMD-методов битового набора.(#39041)
- Используется временная метка MVCC в качестве гарантийной временной метки, если она указана.(#39019)
- Добавлены недостающие метрики удаления.(#38747)
- Обновлен Etcd до версии v3.5.16.(#38969)
- Создан новый пакет Go для управления протосами.(#39128)
v2.5.2
Дата выхода: 3 января 2025 г.
Версия Milvus | Версия Python SDK | Версия SDK для Node.js | Версия Java SDK |
---|---|---|---|
2.5.2 | 2.5.3 | 2.5.3 | 2.5.3 |
Milvus 2.5.2 поддерживает изменение максимальной длины столбцов VARCHAR и решает несколько критических проблем, связанных с параллелизмом, падениями разделов и обработкой статистики BM25 при импорте. Мы настоятельно рекомендуем обновиться до этой версии для повышения стабильности и производительности.
Улучшения
- Генерирование журналов использования диска только в том случае, если указанный путь не существует.(#38822)
- Добавлен параметр для настройки максимальной длины VARCHAR и восстановлено ограничение до 65 535.(#38883)
- Поддерживается преобразование типов параметров для выражений.(#38782)
Исправления ошибок
- Исправлены потенциальные тупики в сценариях параллелизма.(#38863)
- Генерировался файл index_null_offset только для полей, поддерживающих нулевые значения.(#38834)
- Исправлено использование плана извлечения после освобождения в фазе уменьшения.(#38841)
- Распознавание выражений с заглавными буквами AND и OR.(#38928)
- Разрешено успешное удаление разделов даже при неудачной загрузке.(#38874)
- Исправлены проблемы с регистрацией файла статистики BM25 при импорте.(#38881)
v2.5.1
Дата выхода: 26 декабря 2024 года
Версия Milvus | Версия Python SDK | Версия SDK для Node.js | Версия Java SDK |
---|---|---|---|
2.5.1 | 2.5.2 | 2.5.2 | 2.5.2 |
В Milvus 2.5.1 исправлен ряд ошибок, касающихся загрузки памяти, списков RBAC, балансировки узлов запросов и индексации сегментов с уплотнениями, а также улучшены веб-интерфейс и перехватчики. Мы настоятельно рекомендуем обновиться до версии 2.5.1 для повышения стабильности и надежности.
Улучшения
- Обновление страниц коллекции и запросов в веб-интерфейсе.(#38701)
Исправления ошибок
- Исправлены проблемы OOM путем добавления фактора памяти к оценкам загрузки.(#38722)
- Исправлено расширение групп привилегий при перечислении политик в RootCoord.(#38760)
- Исправлены проблемы со списком групп привилегий и коллекций.(#38738)
- Исправлен балансировщик, чтобы избежать повторной перегрузки одного и того же узла запроса.(#38724)
- Исправлены неожиданные задачи балансировщика, запускаемые после перезапуска QueryCoord.(#38725)
- Исправлено обновление конфигурации нагрузки, которое не применялось к загружаемым коллекциям.(#38737)
- Исправлен нулевой счетчик чтения при импорте данных.(#38695)
- Исправлено декодирование юникода для JSON-ключей в выражениях.(#38653)
- Исправлено имя БД перехватчика для alterCollectionField в 2.5. (#38663)
- Исправлены пустые параметры индекса для запечатанных сегментов при использовании перебора BM25.(#38752)
v2.5.0
Дата выхода: 23 декабря 2024 года
Версия Milvus | Версия Python SDK | Версия SDK для Node.js | Версия Java SDK |
---|---|---|---|
2.5.0 | 2.5.1 | 2.5.2 | 2.5.2 |
В Milvus 2.5.0 реализованы значительные улучшения, повышающие удобство использования, масштабируемость и производительность для пользователей, работающих с векторным поиском и управлением крупномасштабными данными. В этом выпуске Milvus интегрирует новые мощные функции, такие как поиск по терминам, уплотнение кластеров для оптимизации запросов и универсальная поддержка методов поиска по разреженным и плотным векторам. Усовершенствования в управлении кластерами, индексировании и обработке данных обеспечивают новые уровни гибкости и простоты использования, делая Milvus еще более надежной и удобной векторной базой данных.
Ключевые особенности
Полнотекстовый поиск
Milvus 2.5 поддерживает полнотекстовый поиск, реализованный с помощью Sparse-BM25! Эта функция является важным дополнением к сильным возможностям семантического поиска Milvus, особенно в сценариях, связанных с редкими словами или техническими терминами. В предыдущих версиях Milvus поддерживал разреженные векторы для помощи в сценариях поиска по ключевым словам. Эти разреженные векторы генерировались вне Milvus с помощью нейронных моделей, таких как SPLADEv2/BGE-M3, или статистических моделей, таких как алгоритм BM25.
Milvus 2.5, работающий на базе Tantivy, имеет встроенные анализаторы и извлечение разреженных векторов, расширяя API от получения только векторов в качестве входных данных до прямого приема текста. Статистическая информация BM25 обновляется в реальном времени по мере ввода данных, что повышает удобство использования и точность. Кроме того, разреженные векторы, основанные на алгоритмах приближенного поиска ближайших соседей (ANN), обеспечивают более высокую производительность по сравнению со стандартными системами поиска по ключевым словам.
Подробнее см. в разделах Обзор анализатора и Полнотекстовый поиск.
Веб-интерфейс управления кластерами (бета-версия)
Чтобы лучше поддерживать огромные данные и богатые возможности, сложная конструкция Milvus включает в себя различные зависимости, многочисленные роли узлов, сложные структуры данных и многое другое. Эти аспекты могут создавать проблемы при использовании и обслуживании.
В Milvus 2.5 появился встроенный WebUI для управления кластерами, который снижает сложность обслуживания системы за счет визуализации сложной информации о среде выполнения Milvus. Сюда входят сведения о базах данных и коллекциях, сегментах, каналах, зависимостях, состоянии здоровья узлов, информация о задачах, медленных запросах и многое другое.
Подробнее см. в разделе Milvus WebUI.
Текстовое соответствие
Milvus 2.5 использует анализаторы и индексацию от Tantivy для предварительной обработки текста и создания индекса, поддерживая точное сопоставление текстовых данных на естественном языке на основе определенных терминов. Эта функция в основном используется для фильтрации поиска по определенным условиям и может включать скалярную фильтрацию для уточнения результатов запроса, позволяя искать сходство в векторах, удовлетворяющих скалярным критериям.
Подробнее см. в разделах "Обзор анализатора " и "Подбор текста".
Индекс растровых изображений
В семействе Milvus появился новый скалярный индекс данных. Индекс BitMap использует массив битов, равный по длине количеству строк, для представления существования значений и ускорения поиска.
Битовые индексы традиционно эффективны для полей с низкой кардинальностью, которые имеют небольшое количество различных значений - например, столбец, содержащий информацию о поле, имеет только два возможных значения: male и female.
Подробнее см. в разделе Растровый индекс.
Нулевое значение и значение по умолчанию
Milvus теперь поддерживает установку нулевых свойств и значений по умолчанию для скалярных полей, отличных от поля первичного ключа. Для скалярных полей, помеченных как nullable=True
, пользователи могут опустить поле при вставке данных; система будет рассматривать его как нулевое значение или значение по умолчанию (если оно установлено) без возникновения ошибки.
Значения по умолчанию и свойства с возможностью обнуления обеспечивают большую гибкость Milvus. Пользователи могут использовать эту функцию для полей с неопределенными значениями при создании коллекций. Она также упрощает миграцию данных из других систем баз данных в Milvus, позволяя работать с наборами данных, содержащими нулевые значения, с сохранением исходных настроек значений по умолчанию.
Подробности см. в разделе "Нулевые значения и значения по умолчанию".
HNSW SQ/PQ/PRQ на основе Faiss
Благодаря тесному сотрудничеству с сообществом Faiss, алгоритм HNSW в Faiss был значительно улучшен как в плане функциональности, так и в плане производительности. Из соображений стабильности и удобства сопровождения Milvus 2.5 официально перенес поддержку HNSW из hnswlib в Faiss.
Основываясь на Faiss, Milvus 2.5 поддерживает несколько методов квантования в HNSW для удовлетворения потребностей различных сценариев: SQ (Scalar Quantizers), PQ (Product Quantizer) и PRQ (Product Residual Quantizer). SQ и PQ более распространены; SQ обеспечивает хорошую производительность запросов и скорость сборки, в то время как PQ предлагает лучший отзыв при том же коэффициенте сжатия. Во многих векторных базах данных обычно используется бинарное квантование, которое является простой формой квантования SQ.
PRQ - это объединение PQ и AQ (аддитивного квантования). По сравнению с PQ, он требует больше времени на сборку, но обеспечивает лучший отзыв, особенно при высокой степени сжатия, говоря о двоичном сжатии.
Кластерное уплотнение (бета-версия)
В Milvus 2.5 появилась функция Clustering Compaction для ускорения поиска и снижения затрат в больших коллекциях. При указании скалярного поля в качестве ключа кластеризации данные перераспределяются по диапазонам для оптимизации хранения и поиска. Действуя подобно глобальному индексу, эта функция позволяет Milvus эффективно отсеивать данные при запросах на основе метаданных кластеризации, повышая производительность поиска при применении скалярных фильтров.
Подробности см. в разделе "Компактификация кластеризации".
Другие возможности
Потоковый узел (бета-версия)
В Milvus 2.5 появился новый компонент, называемый потоковым узлом, который предоставляет услуги ведения журнала с опережением записи (WAL). Это позволяет Milvus достигать консенсуса до и после чтения и записи каналов, открывая новые возможности, функционал и оптимизации. Эта функция отключена по умолчанию в Milvus 2.5 и будет официально доступна в версии 3.0.
Поддержка IPv6
Milvus теперь поддерживает IPv6, что позволяет расширить возможности сетевого подключения и совместимость.
Массовый импорт CSV
В дополнение к форматам JSON и Parquet, Milvus теперь поддерживает прямой массовый импорт данных в формате CSV.
Шаблоны выражений для ускорения запросов
Milvus теперь поддерживает шаблоны выражений, что повышает эффективность разбора выражений, особенно в сценариях со сложными выражениями.
Подробности см. в разделе Шаблонизация фильтров.
Усовершенствования GroupBy
- Настраиваемый размер группы: Добавлена поддержка указания количества записей, возвращаемых для каждой группы.
- Гибридный поиск GroupBy: Поддерживается гибридный поиск GroupBy на основе нескольких векторных столбцов.
Усовершенствования итератора
- Поддержка MVCC: Теперь пользователи могут использовать итераторы без последствий последующих изменений данных, таких как вставки и удаления, благодаря Multi-Version Concurrency Control (MVCC).
- Постоянный курсор: Milvus теперь поддерживает постоянный курсор для QueryIterator, что позволяет пользователям возобновить итерацию с последней позиции после перезапуска Milvus без необходимости перезапускать весь процесс итерации.
Улучшения
Оптимизация удаления
Повышена скорость и снижено потребление памяти при масштабных удалениях за счет оптимизации использования блокировок и управления памятью.
Обновление зависимостей
Обновление до ETCD 3.5.16 и Pulsar 3.0.7 LTS, исправляющее существующие CVE и повышающее безопасность. Примечание: Обновление до Pulsar 3.x не совместимо с предыдущими версиями 2.x.
Для пользователей, у которых уже есть рабочее развертывание Milvus, необходимо обновить компоненты ETCD и Pulsar, прежде чем вы сможете использовать новые возможности и функции. Подробности см. в разделе Обновление Pulsar с версии 2.x до версии 3.x.
Локальное хранилище V2
В Milvus 2.5 представлен новый формат локальных файлов, что повышает эффективность загрузки и запросов для скалярных данных, снижает нагрузку на память и закладывает основу для будущих оптимизаций.
Оптимизация разбора выражений
Улучшение разбора выражений за счет внедрения кэширования повторяющихся выражений, обновления ANTLR и оптимизации производительности клаузул NOT IN
.
Улучшение производительности параллелизма DDL
Оптимизирована производительность параллелизма операций языка определения данных (DDL).
Выравнивание функций RESTful API
Согласование функциональных возможностей RESTful API с другими SDK для обеспечения согласованности.
Обновления в области безопасности и конфигурации
Поддержка TLS для защиты межузловой связи в более сложных или корпоративных средах. Подробности см. в разделе Конфигурация безопасности.
Повышение производительности уплотнения
Устранены ограничения на максимальное количество сегментов при смешанном уплотнении, теперь приоритет отдается меньшим сегментам, что повышает эффективность и ускоряет запросы к большим или фрагментированным наборам данных.
Балансировка каналов на основе баллов
Внедрена политика, которая динамически распределяет нагрузку между каналами, повышая эффективность использования ресурсов и общую стабильность в крупномасштабных развертываниях.