Что такое база данных векторов Milvus?

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

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

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

Рабочий процесс Milvus:

Рабочий процесс

Основные понятия

Если вы не знакомы с миром векторных баз данных и поиска по сходству, вам могут пригодиться следующие ключевые понятия.

Узнайте больше о терминах Milvus.

Неструктурированные данные

Неструктурированные данные, включающие в себя изображения, видео, аудио и естественный язык, относятся к информации, которая не следует заранее определенной модели или организационной структуре. Этот тип данных составляет примерно 80% глобальных данных и может быть преобразован в векторы с использованием различных моделей искусственного интеллекта (AI) и машинного обучения (ML).

Встраивающие вектора

Встраивающие вектора - это абстракции признаков неструктурированных данных (таких как электронная почта, данные сенсоров IoT, фотографии Instagram, структуры белков и т. д.). С математической точки зрения встраивающие вектора состоят из чисел с плавающей запятой или бинарных массивов. Современные техники встраивания используются для преобразования неструктурированных данных в встраивающие вектора.

Поиск по сходству векторов

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

Почему выбрать Milvus?

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

Какие индексы и стандарты метрик поддерживаются?

Индексы - это организационные единицы данных. Прежде чем осуществлять поиск или запрос вставленных сущностей, необходимо объявить тип индекса и стандарт метрики сходства. Если вы не указываете тип индекса, Milvus по умолчанию использует жесткий поиск.

Типы индексов

Milvus поддерживает большинство типов векторных индексов для приближенного поиска ближайших соседей (ANNS), включая:

  • FLAT: Подходит для сценариев, требующих полностью точных и точных результатов поиска на небольших (миллионы) наборах данных.
  • IVF_FLAT: Основанный на индексе квантования, подходит для сценариев, требующих идеального баланса между точностью и скоростью запроса. Также есть версия для GPU под названием GPU_IVF_FLAT.
  • IVF_SQ8: Основанный на индексе квантования, подходит для сценариев, требующих значительного уменьшения расхода дискового, ЦПУ и памяти GPU из-за очень ограниченных ресурсов.
  • IVF_PQ: Основанный на индексе квантования, подходит для сценариев, стремящихся к высокой скорости запроса даже в ущерб точности. Также есть версия для GPU под названием GPU_IVF_PQ.
  • HNSW: Основанный на графовом индексе, подходит для сценариев с очень высокими требованиями к эффективности поиска.

Для более подробной информации обратитесь к Векторному индексу.

Стандарты метрик сходства

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

Общие метрики, используемые для вещественных встраиваемых векторов:

  • Евклидово расстояние (L2): Эта метрика часто используется в области компьютерного зрения.
  • Внутреннее произведение (IP): Эта метрика часто используется в области обработки естественного языка.

Общие метрики, используемые для бинарных встраиваемых векторов:

  • Расстояние Хэмминга: Эта метрика часто используется в области обработки естественного языка.
  • Коэффициент Жаккарда: Эта метрика часто используется для поиска молекулярного сходства.

Примеры приложений

Milvus облегчает добавление поиска похожих объектов в ваши приложения. Примеры приложений Milvus включают:

  • Поиск похожих изображений: делает изображения доступными для поиска и мгновенно возвращает наиболее похожие изображения из большой базы данных.
  • Поиск похожих видео: путем преобразования ключевых кадров в векторы и дальнейшего ввода результатов в Milvus, поиск и рекомендации миллиардов видео в режиме близком к реальному времени.
  • Поиск похожих аудио: быстрый запрос большого объема аудиоданных, таких как речь, музыка, звуковые эффекты и аналогичные звуки.
  • Системы рекомендаций: рекомендует информацию или товары на основе поведения и потребностей пользователя.
  • Системы вопросно-ответных систем: интерактивные цифровые чат-боты для вопросно-ответного общения, способные автоматически отвечать на вопросы пользователей.
  • Классификация последовательностей ДНК: точная классификация генов в миллисекундах путем сравнения похожих последовательностей ДНК.
  • Поисковые движки текста: помогают пользователям найти нужную информацию путем сравнения ключевых слов с текстовой базой данных.

Концепция дизайна Milvus

В качестве облачной векторной базы данных Milvus разделяет хранение и вычисления в своем дизайне. Для увеличения эластичности и гибкости все компоненты в Milvus являются безсостоятельными.

Система разделена на четыре слоя:

  • Уровень доступа: включает группу безсостоятельных прокси, которые служат внешним слоем системы и точками доступа для пользователей.
  • Служба координации: эта служба назначает задачи рабочим узлам и действует как центральный хаб системы.
  • Рабочие узлы: эти узлы действуют как руки и ноги системы, следуя инструкциям от службы координации и выполняя команды DML/DDL, запущенные пользователями, бессознательным образом.
  • Хранение: это основа системы, ответственная за сохранение данных. Она включает хранение метаданных, агентов журналов и объектов .

Архитектура Milvus.

Инструменты разработчика

Milvus предоставляет богатый набор API и инструментов для разработки и функционирования.

Доступ к API

Milvus предоставляет клиентские библиотеки, обернутые вокруг API Milvus, которые могут быть использованы для программного вставления, удаления и запроса данных из прикладного кода:

  • PyMilvus
  • Node.js SDK
  • Go SDK
  • Java SDK

Инструменты экосистемы Milvus

Экосистема Milvus предлагает несколько полезных инструментов, включая:

  • Milvus CLI
  • Attu: графическая система управления для Milvus.
  • MilvusDM (Миграция данных Milvus): открытый инструмент специально для импорта и экспорта данных с Milvus.
  • Инструмент планирования емкости Milvus: помогает оценить необходимый размер сырого файла, размер памяти и стабильный размер диска через различные типы индексов.

Ограничения Milvus

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

Длина названий ресурсов

Ресурс Ограничение
Коллекция 255 символов
Поле 255 символов
Индекс 255 символов
Раздел 255 символов

Правила именования

Названия ресурсов могут состоять из цифр, букв и символов подчеркивания (_). Названия должны начинаться с буквы или символа подчеркивания.

Количество ресурсов

Ресурс Ограничение
Коллекции 65,536
Соединения/Агенты 65,536

Количество ресурсов в коллекциях

Ресурс Ограничение
Раздел 4,096
Часть 64
Поле 64
Индекс 1
Сущность Неограниченно

Длина строки

Тип данных Ограничение
VARCHAR 65,535

Размер вектора

Атрибут Ограничение
Размерность 32,768

Ввод и вывод для каждого RPC

Операция Ограничение
Операция вставки 512 МБ
Операция поиска 512 МБ
Операция запроса 512 МБ

Ограничение загрузки

В текущей версии данные для загрузки должны находиться в пределах 90% от общих ресурсов памяти всех узлов запросов для резервирования ресурсов памяти для исполнительного движка.

Ограничение поиска

Вектор Лимит
topk (количество самых похожих результатов для возврата) 16,384
nq (количество запросов на поиск) 16,384