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

milvus-logo
LFAI

Что внутри Milvus 1.0?

  • Engineering
April 29, 2021
milvus

Milvus.jpeg Milvus.jpeg

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

В марте 2021 года компания Zilliz, создавшая Milvus, выпустила первую версию платформы с долгосрочной поддержкой - Milvus v1.0. После нескольких месяцев всестороннего тестирования стабильная, готовая к производству версия самой популярной в мире базы данных векторов готова к работе в прайм-тайм. В этой статье блога рассматриваются некоторые основы Milvus, а также ключевые особенности версии 1.0.


Дистрибутивы Milvus

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

Оба дистрибутива Milvus доступны в Docker. Вы можете либо скомпилировать Milvus из Docker (если ваша операционная система это поддерживает), либо скомпилировать Milvus из исходного кода на Linux (другие операционные системы не поддерживаются).


Встраивание векторов

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


Разделы

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


Оптимизация индексных алгоритмов

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

  • Оптимизация производительности индексов IVF с использованием алгоритма k-means Элькана.
  • Оптимизация FLAT-поиска.
  • Поддержка гибридного индекса IVF_SQ8H, который позволяет уменьшить размер индексного файла до 75 % без потери точности данных. IVF_SQ8H построен на базе IVF_SQ8, имеет идентичный отзыв, но гораздо более высокую скорость запросов. Он был разработан специально для Milvus, чтобы использовать возможности параллельной обработки данных на графических процессорах и потенциал синергии между совместной обработкой данных на CPU и GPU.
  • Динамическая совместимость наборов инструкций.


Поиск, создание индексов и другие оптимизации Milvus

Для повышения производительности поиска и создания индексов в Milvus были внесены следующие оптимизации.

  • Производительность поиска оптимизирована в ситуациях, когда количество запросов (nq) меньше количества потоков процессора.
  • Milvus объединяет поисковые запросы от клиента, которые имеют одинаковые topK и параметры поиска.
  • Формирование индекса приостанавливается при поступлении поисковых запросов.
  • При запуске Milvus автоматически предварительно загружает коллекции в память.
  • Для ускорения поиска векторного сходства может быть назначено несколько GPU-устройств.


Метрики расстояний

Milvus - это векторная база данных, созданная для ускорения поиска векторного сходства. Платформа была создана с учетом потребностей MLOps и приложений ИИ производственного уровня. Milvus поддерживает широкий спектр метрик расстояний для расчета сходства, таких как евклидово расстояние (L2), внутреннее произведение (IP), расстояние Жаккара, Танимото, расстояние Хэмминга, надстройка и подструктура. Последние две метрики широко используются в молекулярном поиске и поиске новых лекарств с помощью искусственного интеллекта.


Поворот журнала

Milvus поддерживает ротацию журналов. В файле конфигурации системы milvus.yaml можно задать размер одного файла журнала, количество файлов журнала и вывод журнала в stdout.


Распределенное решение

Mishards, промежуточное ПО для шардинга Milvus, является распределенным решением для Milvus. Имея один узел записи и неограниченное количество узлов чтения, Mishards раскрывает вычислительный потенциал серверного кластера. Его возможности включают перенаправление запросов, разделение чтения/записи, динамическое/горизонтальное масштабирование и многое другое.


Мониторинг

Milvus совместим с Prometheus, набором инструментов для мониторинга и оповещения систем с открытым исходным кодом. Milvus добавляет поддержку Pushgateway в Prometheus, что позволяет Prometheus получать недолговечные пакетные метрики. Система мониторинга и оповещений работает следующим образом:

  • Сервер Milvus отправляет настраиваемые данные метрик на Pushgateway.
  • Pushgateway обеспечивает безопасную отправку эфемерных метрических данных в Prometheus.
  • Prometheus продолжает получать данные из Pushgateway.
  • Alertmanager используется для установки порога оповещения для различных показателей и отправки оповещений по электронной почте или сообщениями.


Управление метаданными

По умолчанию Milvus использует SQLite для управления метаданными. SQLite реализован в Milvus и не требует настройки. В производственной среде рекомендуется использовать MySQL для управления метаданными.


Участвуйте в работе нашего сообщества разработчиков с открытым исходным кодом:

  • Найдите Milvus на GitHub и внесите в него свой вклад.
  • Взаимодействуйте с сообществом через Slack.
  • Общайтесь с нами в Twitter.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

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