Обзор вариантов развертывания Milvus
Milvus - это высокопроизводительная, масштабируемая векторная база данных. Она поддерживает различные варианты использования, от демо-версий, выполняемых локально в Jupyter Notebooks, до масштабных кластеров Kubernetes, обрабатывающих десятки миллиардов векторов. В настоящее время существует три варианта развертывания Milvus: Milvus Lite, Milvus Standalone и Milvus Distributed.
Milvus Lite
Milvus Lite - это библиотека Python, которая может быть импортирована в ваши приложения. Являясь облегченной версией Milvus, она идеально подходит для быстрого создания прототипов в Jupyter Notebooks или для работы на смарт-устройствах с ограниченными ресурсами. Milvus Lite поддерживает те же API, что и другие версии Milvus. Код на стороне клиента, взаимодействующий с Milvus Lite, может также работать с экземплярами Milvus в других режимах развертывания.
Чтобы интегрировать Milvus Lite в свои приложения, запустите pip install pymilvus
для его установки и используйте оператор MilvusClient("./demo.db")
для инстанцирования векторной базы данных с локальным файлом, в котором хранятся все данные. Более подробную информацию см. в разделе Запуск Milvus Lite.
Milvus Standalone
Milvus Standalone - это серверное развертывание на одной машине. Все компоненты Milvus Standalone упакованы в один образ Docker, что делает развертывание удобным. Если у вас есть производственная рабочая нагрузка, но вы предпочитаете не использовать Kubernetes, запуск Milvus Standalone на одной машине с достаточным количеством памяти будет хорошим вариантом. Кроме того, Milvus Standalone поддерживает высокую доступность за счет репликации master-slave.
Milvus Distributed
Milvus Distributed может быть развернут на кластерах Kubernetes. Это развертывание имеет облачную нативную архитектуру, в которой загрузка и поисковые запросы обрабатываются отдельно на изолированных узлах, что обеспечивает резервирование критически важных компонентов. Она обеспечивает высочайшую масштабируемость и доступность, а также гибкость в настройке выделенных ресурсов для каждого компонента. Milvus Distributed - лучший выбор для корпоративных пользователей, использующих крупные системы векторного поиска в производстве.
Выберите правильный способ развертывания для вашего случая использования
Выбор режима развертывания обычно зависит от стадии разработки вашего приложения:
Для быстрого прототипирования
Если вы хотите быстро создать что-то в качестве прототипа или в целях обучения, например, демонстрационные версии Retrieval Augmented Generation (RAG), чат-боты AI, мультимодальный поиск, вам подойдет Milvus Lite или комбинация Milvus Lite и Milvus Standalone. Вы можете использовать Milvus Lite в блокнотах для быстрого создания прототипов и изучения различных подходов, например, различных стратегий разбиения на части в RAG. Возможно, вы захотите развернуть приложение, созданное с помощью Milvus Lite, в небольшом производстве для обслуживания реальных пользователей или проверить идею на больших наборах данных, скажем, более чем на нескольких миллионах векторов. В этом случае подойдет Milvus Standalone. Логика приложения для Milvus Lite может быть общей, поскольку все развертывания Milvus имеют один и тот же API на стороне клиента. Данные, хранящиеся в Milvus Lite, также можно перенести в Milvus Standalone с помощью инструмента командной строки.
Развертывание на малых производствах
Для производства на ранних стадиях, когда проект все еще ищет соответствие продукта рынку и гибкость важнее масштабируемости, Milvus Standalone - лучший выбор. При достаточном количестве машинных ресурсов он может масштабироваться до 100 млн векторов и при этом требует гораздо меньше DevOps, чем поддержка кластера K8s.
Крупномасштабное производственное развертывание
Когда ваш бизнес быстро растет, а объем данных превышает возможности одного сервера, пора задуматься о Milvus Distributed. Вы можете продолжать использовать Milvus Standalone для dev- или staging-среды для удобства, а также управлять кластером K8s, на котором работает Milvus Distributed. Это позволит вам работать с десятками миллиардов векторов, а также обеспечит гибкость в настройке размера узла для конкретной рабочей нагрузки, например, для случаев с высоким уровнем чтения и редкой записи или с высоким уровнем записи и низким уровнем чтения.
Локальный поиск на граничных устройствах
Для поиска в частных или конфиденциальных данных на граничных устройствах вы можете развернуть Milvus Lite на устройстве, не прибегая к облачной службе для поиска текста или изображений. Это подходит для таких случаев, как поиск по собственным документам или обнаружение объектов на устройстве.
Выбор способа развертывания Milvus зависит от стадии и масштаба вашего проекта. Milvus представляет собой гибкое и мощное решение для различных потребностей, от быстрого создания прототипа до развертывания на крупном предприятии.
- Milvus Lite рекомендуется для небольших наборов данных, до нескольких миллионов векторов.
- Milvus Standalone подходит для средних наборов данных, масштабируемых до 100 миллионов векторов.
- Milvus Distributed предназначен для крупномасштабных развертываний и способен обрабатывать наборы данных от 100 миллионов до десятков миллиардов векторов.
Выберите вариант развертывания для вашего случая использования
Сравнение по функциональным возможностям
Функциональность | Milvus Lite | Milvus Standalone | Milvus Distributed |
---|---|---|---|
SDK / Клиентский лирари | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
Типы данных | Плотный вектор Разрозненный вектор Двоичный вектор Булево Целое число Плавающая точка ВарЧар Массив JSON | Плотный вектор Разрозненный вектор Двоичный вектор Булево Целое число Плавающая точка VarChar Массив JSON | Плотный вектор Разреженный вектор Двоичный вектор Булево Целое число Плавающая точка VarChar Массив JSON |
Возможности поиска | Векторный поиск (ANN Search) Фильтрация метаданных Поиск по диапазону Скалярный запрос Получение сущностей по первичному ключу Гибридный поиск | Векторный поиск (ANN Search) Фильтрация метаданных Поиск по диапазону Скалярный запрос Получение сущностей по первичному ключу Гибридный поиск | Векторный поиск (ANN Search) Фильтрация метаданных Поиск по диапазону Скалярный запрос Получение сущностей по первичному ключу Гибридный поиск |
CRUD-операции | ✔️ | ✔️ | ✔️ |
Расширенное управление данными | N/A | Контроль доступа Раздел Ключ раздела | Контроль доступа Раздел Ключ раздела Группировка физических ресурсов |
Уровни согласованности | Сильный | Сильный Ограниченная стабильность Сессия Эвентуальный | Сильный Ограниченная стабильность Сессия Эвентуальный |