Что внутри Milvus 1.0?
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 для управления метаданными.
Участвуйте в работе нашего сообщества разработчиков с открытым исходным кодом:
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word