🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Что нового в Milvus 2.1 - На пути к простоте и скорости

Что нового в Milvus 2.1 - На пути к простоте и скорости

  • News
August 05, 2022
Xiaofan Luan

What's new in Milvus 2.1 - Towards simplicity and speed Что нового в Milvus 2.1 - в сторону простоты и скорости

Мы очень рады объявить овыходе версии Milvus 2.1 после шести месяцев напряженной работы всех участников сообщества Milvus. Эта крупная итерация популярной векторной базы данных подчеркивает производительность и удобство использования, два наиболее важных ключевых слова нашего фокуса. Мы добавили поддержку строк, очереди сообщений Kafka и встроенного Milvus, а также ряд улучшений в области производительности, масштабируемости, безопасности и наблюдаемости. Milvus 2.1 - это потрясающее обновление, которое позволит преодолеть "последнюю милю" от ноутбука инженера-алгоритмиста до сервисов поиска векторного сходства на производственном уровне.

Задержка на уровне 5 мс

Milvus уже поддерживает приближенный поиск ближайших соседей (ANN), что является существенным скачком по сравнению с традиционным методом KNN. Однако проблемы пропускной способности и задержки по-прежнему стоят перед пользователями, которым приходится иметь дело со сценариями поиска векторных данных миллиардного масштаба.

В Milvus 2.1 появился новый протокол маршрутизации, который больше не полагается на очереди сообщений в канале поиска, что значительно сокращает время поиска для небольших наборов данных. Результаты наших тестов показывают, что теперь Milvus снижает уровень задержки до 5 мс, что соответствует требованиям критически важных онлайн-соединений, таких как поиск по сходству и рекомендации.

Контроль параллелизма

В Milvus 2.1 усовершенствована модель управления параллелизмом за счет внедрения новой модели оценки затрат и планировщика параллелизма. Теперь он обеспечивает контроль параллелизма, что гарантирует отсутствие большого количества одновременных запросов, конкурирующих за ресурсы процессора и кэша, а также недоиспользование процессора из-за недостаточного количества запросов. Новый интеллектуальный уровень планировщика в Milvus 2.1 также объединяет запросы с малым количеством запросов, которые имеют согласованные параметры запроса, обеспечивая удивительный прирост производительности в 3,2 раза в сценариях с малым количеством запросов и высоким параллелизмом запросов.

Реплики в памяти

В Milvus 2.1 появились реплики in-memory, которые улучшают масштабируемость и доступность для небольших наборов данных. Подобно репликам только для чтения в традиционных базах данных, реплики in-memory могут масштабироваться горизонтально путем добавления машин, когда QPS чтения высок. При векторном поиске по небольшим наборам данных рекомендательной системе часто требуется обеспечить QPS, превышающий предел производительности одной машины. В таких сценариях пропускная способность системы может быть значительно повышена за счет загрузки нескольких реплик в память. В будущем мы также внедрим механизм хеджированного чтения на основе реплик in-memory, который будет быстро запрашивать другие функциональные копии в случае необходимости восстановления системы после сбоев и будет полностью использовать избыточность памяти для повышения общей доступности системы.

In-memory replicas allow query services to be based on separate
copies of the same data. Реплики in-memory позволяют сервисам запросов основываться на отдельных копиях одних и тех же данных.

Ускоренная загрузка данных

Последний прирост производительности связан с загрузкой данных. Milvus 2.1 теперь сжимает двоичные журналы с помощью Zstandard (zstd), что значительно уменьшает размер данных в хранилищах объектов и сообщений, а также сетевые накладные расходы при загрузке данных. Кроме того, теперь внедрены пулы хороутинов, благодаря чему Milvus может загружать сегменты одновременно с контролируемым объемом памяти и минимизировать время, необходимое для восстановления после сбоев и загрузки данных.

Полные результаты бенчмарка Milvus 2.1 будут опубликованы на нашем сайте в ближайшее время. Следите за новостями.

Поддержка строковых и скалярных индексов

В версии 2.1 Milvus теперь поддерживает строку переменной длины (VARCHAR) в качестве скалярного типа данных. VARCHAR может использоваться в качестве первичного ключа, который возвращается при выводе, а также может выступать в качестве фильтра атрибутов. Фильтрация атрибутов - одна из самых популярных функций, необходимых пользователям Milvus. Если вы часто сталкиваетесь с необходимостью "найти наиболее похожие на пользователя товары в ценовом диапазоне 200-200-" или "найти статьи, содержащие ключевое слово "векторная база данных" и относящиеся к облачно-нативной тематике", вам понравится Milvus 2.1.

Milvus 2.1 также поддерживает скалярный инвертированный индекс для повышения скорости фильтрации на основелаконичныхMARISA-Tries в качестве структуры данных. Теперь все данные могут быть загружены в память с очень малой занимаемой площадью, что позволяет значительно ускорить сравнение, фильтрацию и сопоставление префиксов в строках. Результаты наших тестов показывают, что для загрузки всех данных в память и обеспечения возможности запросов MARISA-trie требуется всего 10 % памяти по сравнению со словарями Python.

Milvus 2.1 combines MARISA-Trie with inverted index to significantly improve filtering speed. В Milvus 2.1 MARISA-Trie сочетается с инвертированным индексом, что значительно повышает скорость фильтрации.

В будущем Milvus продолжит фокусироваться на разработках, связанных со скалярными запросами, поддерживать больше типов скалярных индексов и операторов запросов, а также предоставлять возможности скалярных запросов с использованием диска - все это является частью постоянных усилий по снижению стоимости хранения и использования скалярных данных.

Поддержка Kafka

Наше сообщество давно просило поддержать Apache Kafka в качестве хранилища сообщений в Milvus. Теперь Milvus 2.1 предлагает вам возможность использоватьPulsar или Kafka в качестве хранилища сообщений в зависимости от пользовательских конфигураций, благодаря абстракции и инкапсуляции Milvus и Go Kafka SDK, предоставленному компанией Confluent.

Готовый к производству Java SDK

Вместе с Milvus 2.1 официально выпущен наш Java SDK. Java SDK обладает теми же возможностями, что и Python SDK, с еще более высокой производительностью параллелизма. На следующем этапе наши участники сообщества будут постепенно улучшать документацию и примеры использования Java SDK, а также помогут продвинуть Go и RESTful SDK до стадии готовности к производству.

Наблюдаемость и сопровождаемость

В Milvus 2.1 добавлены важныеметрики мониторинга, такие как количество вставленных векторов, задержка/пропускная способность поиска, затраты памяти узла и затраты процессора. Кроме того, в новой версии значительно оптимизировано ведение журналов за счет настройки уровней журналов и сокращения бесполезной печати журналов.

Встраиваемый Milvus

Milvus значительно упростил развертывание крупномасштабных сервисов поиска массивных векторных данных, но для ученых, которые хотят проверить алгоритмы в меньших масштабах, Docker или K8s все еще слишком неоправданно сложны. С появлением встроенного Milvus вы можете установить Milvus с помощью pip, как и Pyrocksb и Pysqlite. Встроенный Milvus поддерживает все функциональные возможности как кластерной, так и автономной версии, позволяя вам легко переключиться с ноутбука на распределенную производственную среду, не меняя ни строчки кода. Инженеры-алгоритмисты получат гораздо больше удовольствия при создании прототипа с помощью Milvus.

Более того, в Milvus 2.1 также есть несколько значительных улучшений в стабильности и масштабируемости, и мы с нетерпением ждем ваших отзывов и комментариев.

Что дальше

  • Все изменения в Milvus 2.1 описаны в подробной информации о выпуске.
  • УстановитеMilvus 2.1 и попробуйте новые возможности
  • Присоединяйтесь к нашему Slack-сообществу и обсуждайте новые функции с тысячами пользователей Milvus по всему миру.
  • Следите за нами в Twitter иLinkedIn, чтобы получать обновления после выхода наших блогов о конкретных новых функциях.

Отредактировано Songxian Jiang

Like the article? Spread the word

Продолжить чтение