Представляем Milvus 2.3: знаковый выпуск, предлагающий поддержку GPU, Arm64, CDC и многие другие долгожданные функции
Захватывающие новости! После восьми месяцев согласованных усилий мы рады объявить о выпуске Milvus 2.3, знаковой версии, в которой появилось множество долгожданных функций, включая поддержку GPU, Arm64, upsert, захват данных об изменениях, индекс ScaNN и технологию MMap. Milvus 2.3 также предлагает улучшенную производительность запросов, более надежную балансировку нагрузки и планирование, а также улучшенную наблюдаемость и работоспособность.
Присоединяйтесь ко мне, чтобы рассмотреть эти новые функции и усовершенствования и узнать, как вы можете воспользоваться преимуществами этого выпуска.
Поддержка GPU-индекса, которая позволяет увеличить QPS в 3-10 раз
GPU-индекс - это долгожданная функция в сообществе Milvus. Благодаря отличному сотрудничеству с инженерами Nvidia, Milvus 2.3 поддерживает индексацию на GPU с помощью надежного алгоритма RAFT, добавленного в Knowhere, индексный движок Milvus. Благодаря поддержке GPU Milvus 2.3 работает в три раза быстрее в QPS, чем старые версии, использующие индекс CPU HNSW, и почти в десять раз быстрее для определенных наборов данных, требующих тяжелых вычислений.
Поддержка Arm64 для удовлетворения растущего спроса пользователей
Процессоры Arm становятся все более популярными среди поставщиков облачных услуг и разработчиков. Чтобы удовлетворить этот растущий спрос, Milvus теперь предоставляет образы Docker для архитектуры ARM64. Благодаря новой поддержке процессоров пользователи MacOS смогут создавать свои приложения с помощью Milvus более легко.
Поддержка Upsert для улучшения пользовательского опыта
В Milvus 2.3 появилось значительное усовершенствование - поддержка операции upsert. Эта новая функциональность позволяет пользователям беспрепятственно обновлять или вставлять данные и выполнять обе операции в одном запросе через интерфейс Upsert. Эта функция упрощает управление данными и повышает эффективность работы.
Примечание:
- Функция Upsert не применяется к автоинкрементным идентификаторам.
- Функция Upsert реализована в виде комбинации
delete
иinsert
, что может привести к некоторому снижению производительности. Мы рекомендуем использоватьinsert
, если вы используете Milvus в сценариях с интенсивной записью.
Поиск по диапазону для получения более точных результатов
Milvus 2.3 позволяет пользователям указывать расстояние между входным вектором и векторами, хранящимися в Milvus, во время запроса. После этого Milvus возвращает все совпадающие результаты в заданном диапазоне. Ниже приведен пример указания расстояния поиска с использованием функции поиска по диапазону.
// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)
В этом примере пользователь требует, чтобы Milvus возвращал векторы на расстоянии от 10 до 20 единиц от входного вектора.
Примечание: Различные метрики расстояний отличаются друг от друга способом вычисления расстояний, что приводит к появлению различных диапазонов значений и стратегий сортировки. Поэтому перед использованием функции поиска по диапазону необходимо разобраться в их особенностях.
Индекс ScaNN для повышения скорости запросов
Milvus 2.3 теперь поддерживает индекс ScaNN, индекс приближенных ближайших соседей (ANN) с открытым исходным кодом, разработанный Google. Индекс ScaNN продемонстрировал превосходную производительность в различных бенчмарках, превосходя HNSW примерно на 20 % и будучи примерно в семь раз быстрее, чем IVFFlat. Благодаря поддержке индекса ScaNN, Milvus достигает гораздо более высокой скорости выполнения запросов по сравнению со старыми версиями.
Растущий индекс для стабильной и лучшей производительности запросов
Milvus включает в себя две категории данных: индексированные данные и потоковые данные. Milvus может использовать индексы для быстрого поиска индексированных данных, но может только грубо искать потоковые данные строка за строкой, что может повлиять на производительность. В Milvus 2.3 появился растущий индекс, который автоматически создает индексы в реальном времени для потоковых данных, чтобы повысить производительность запросов.
Итератор для пакетного поиска данных
В Milvus 2.3 компания Pymilvus представила интерфейс итератора, который позволяет пользователям извлекать более 16 384 сущностей в процессе поиска или поиска по диапазону. Эта функция удобна, когда пользователям необходимо экспортировать десятки тысяч или даже больше векторов в пакетном режиме.
Поддержка MMap для увеличения емкости
MMap - это системный вызов UNIX, используемый для отображения файлов и других объектов в памяти. Milvus 2.3 поддерживает MMap, который позволяет пользователям загружать данные на локальные диски и отображать их в память, тем самым увеличивая пропускную способность одной машины.
Результаты нашего тестирования показали, что с помощью технологии MMap Milvus может удвоить емкость данных, ограничив при этом падение производительности в пределах 20 %. Такой подход значительно снижает общую стоимость, что делает его особенно выгодным для пользователей с ограниченным бюджетом, не желающих жертвовать производительностью.
Поддержка CDC для повышения доступности системы
Захват данных об изменениях (CDC) - это широко используемая функция в системах баз данных, которая фиксирует и реплицирует изменения данных в назначенное место. С помощью функции CDC Milvus 2.3 позволяет пользователям синхронизировать данные между центрами обработки данных, создавать резервные копии инкрементных данных и легко переносить данные, повышая доступность системы.
В дополнение к вышеперечисленным функциям в Milvus 2.3 появился интерфейс подсчета для точного подсчета количества строк данных, хранящихся в коллекции в режиме реального времени, поддержка метрики Cosine для измерения векторного расстояния и дополнительные операции с массивами JSON. Дополнительные возможности и подробная информация приведены в примечаниях к выпуску Milvus 2.3.
Улучшения и исправления ошибок
Помимо новых функций, Milvus 2.3 содержит множество улучшений и исправлений ошибок для старых версий.
Улучшена производительность фильтрации данных
Milvus выполняет скалярную фильтрацию перед векторным поиском в гибридных скалярных и векторных запросах данных для достижения более точных результатов. Однако производительность индексирования может снизиться, если пользователь отфильтровал слишком много данных после скалярной фильтрации. В Milvus 2.3 мы оптимизировали стратегию фильтрации HNSW для решения этой проблемы, что привело к повышению производительности запросов.
Увеличение использования многоядерных процессоров
Приблизительный поиск ближайших объектов (ANN) - это задача с интенсивными вычислениями, требующая больших ресурсов процессора. В предыдущих версиях Milvus мог использовать только около 70 % доступных ресурсов многоядерного процессора. Однако в последней версии Milvus преодолел это ограничение и может полностью использовать все доступные ресурсы многоядерного процессора, что приводит к повышению производительности запросов и снижению потерь ресурсов.
Переработанный узел QueryNode
QueryNode - важнейший компонент Milvus, отвечающий за векторный поиск. Однако в старых версиях QueryNode имел сложные состояния, дублирующиеся очереди сообщений, неорганизованную структуру кода и неинтуитивные сообщения об ошибках.
В Milvus 2.3 мы модернизировали QueryNode, внедрив структуру кода без состояний и удалив очередь сообщений для удаления данных. Эти обновления привели к уменьшению потерь ресурсов и более быстрому и стабильному поиску векторов.
Усовершенствованные очереди сообщений на основе NATS
Мы построили Milvus на основе лог-архитектуры, и в предыдущих версиях использовали Pulsar и Kafka в качестве основных лог-брокеров. Однако эта комбинация столкнулась с тремя ключевыми проблемами:
- Она была нестабильна в ситуациях с множеством тем.
- Она потребляла ресурсы, когда простаивала, и с трудом справлялась с дедупликацией сообщений.
- Pulsar и Kafka тесно связаны с экосистемой Java, поэтому их сообщество редко поддерживает и обновляет свои Go SDK.
Чтобы решить эти проблемы, мы объединили NATS и Bookeeper в качестве нового лог-брокера для Milvus, который лучше соответствует потребностям пользователей.
Оптимизированный балансировщик нагрузки
В Milvus 2.3 был применен более гибкий алгоритм балансировки нагрузки, основанный на реальных нагрузках системы. Этот оптимизированный алгоритм позволяет пользователям быстро обнаруживать сбои узлов и несбалансированную нагрузку и соответствующим образом корректировать расписание. Согласно результатам нашего тестирования, Milvus 2.3 может обнаруживать сбои, несбалансированную нагрузку, аномальное состояние узлов и другие события в течение нескольких секунд и оперативно вносить корректировки.
Более подробную информацию о Milvus 2.3 можно найти в примечаниях к выпуску Milvus 2.3.
Обновления инструментов
Вместе с Milvus 2.3 мы также обновили Birdwatcher и Attu, два ценных инструмента для работы и обслуживания Milvus.
Обновление Birdwatcher
Мы обновили Birdwatcher, отладочный инструмент Milvus, представив множество функций и улучшений, включая:
- RESTful API для беспрепятственной интеграции с другими диагностическими системами.
- Поддержка команды PProf для облегчения интеграции с инструментом Go pprof.
- Возможности анализа использования хранилища.
- Эффективная функциональность анализа журналов.
- Поддержка просмотра и изменения конфигураций в etcd.
Обновление Attu
Мы запустили совершенно новый интерфейс для Attu, универсального инструмента администрирования векторных баз данных. Новый интерфейс имеет более простой дизайн и более понятен.
Более подробную информацию можно найти в примечаниях к выпуску Milvus 2.3.
Давайте поддерживать связь!
Если у вас есть вопросы или отзывы о Milvus, пожалуйста, свяжитесь с нами через Twitter или LinkedIn. Вы также можете присоединиться к нашему каналу Slack, чтобы пообщаться с нашими инженерами и сообществом напрямую, или посетить наши офисные часы по вторникам!
- Поддержка GPU-индекса, которая позволяет увеличить QPS в 3-10 раз
- Поддержка Arm64 для удовлетворения растущего спроса пользователей
- Поддержка Upsert для улучшения пользовательского опыта
- Поиск по диапазону для получения более точных результатов
- Индекс ScaNN для повышения скорости запросов
- Растущий индекс для стабильной и лучшей производительности запросов
- Итератор для пакетного поиска данных
- Поддержка MMap для увеличения емкости
- Поддержка CDC для повышения доступности системы
- Улучшения и исправления ошибок
- Обновления инструментов
- Давайте поддерживать связь!
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word