Как выбрать правильный режим развертывания Milvus для приложений искусственного интеллекта
Milvus - это база данных векторов с открытым исходным кодом [https://zilliz.com/learn/what-is-vector-database], которая хранит, индексирует и извлекает векторные вкрапления миллиардного масштаба. Она также является неотъемлемым компонентом дополненной генерации (RAG), популярной и эффективной техники для смягчения проблем галлюцинаций в больших языковых моделях (LLMs).
В отличие от других проектов векторного поиска с открытым исходным кодом, таких как Qdrant, Weaviate и Chroma, Milvus предлагает разработчикам три основных варианта развертывания, рассчитанных на разные размеры наборов данных, случаи использования и требования бизнеса. Хотя наличие множества вариантов является преимуществом, оно также может быть немного подавляющим. Многие разработчики не знают, как выбрать оптимальный режим развертывания для своих конкретных приложений ИИ. В этой статье мы предоставим четкое и подробное руководство, которое поможет вам выбрать правильную версию Milvus для ваших проектов.
Milvus Lite vs. Standalone vs. Distributed
Milvus предлагает три варианта развертывания: Milvus Lite, Standalone и Distributed..
Milvus Lite
Milvus Lite - это библиотека Python и сверхлегкая версия Milvus. Она идеально подходит для быстрого создания прототипов в среде Python или ноутбуков, а также для небольших локальных экспериментов. Вы можете установить ее напрямую через пакет pymilvus простой строкой pip install pymilvus. Нет необходимости запускать отдельный сервер, а для сохранения данных используются локальные файлы, что упрощает настройку и использование.
Milvus Standalone
Milvus Standalone - это одноузловой вариант развертывания Milvus, использующий модель клиент-сервер. Его можно рассматривать как Milvus-эквивалент MySQL, а Milvus Lite - как SQLite. Все компоненты Milvus Standalone поставляются в виде образа Docker, что упрощает развертывание сервера. Запуск одного экземпляра Milvus Standalone на машине с достаточным количеством памяти подойдет для большинства проектов, не требующих масштабного масштабирования. Кроме того, Milvus Standalone обеспечивает высокую доступность с режимом основного резервного копирования, что делает его надежным выбором для производственных сред.
Milvus Distributed
Milvus Distributed - это распределенный режим Milvus, который идеально подходит для корпоративных пользователей, создающих крупномасштабные системы векторных баз данных или платформы векторных данных. В нем используется облачная архитектура с разделением чтения и записи для оптимизации производительности. Ключевые компоненты Milvus Distributed оснащены встроенными резервными копиями и дополнительными экземплярами, поэтому при отказе одной части другие могут беспрепятственно взять на себя ее функции, обеспечивая бесперебойную работу системы. Такой уровень избыточности повышает надежность и гарантирует непрерывную доступность. Из трех вариантов развертывания Milvus Distributed предлагает самую высокую масштабируемость и доступность. Он также обеспечивает эластичность на уровне компонентов, позволяя независимо масштабировать Proxy, узлы запросов и узлы индексов в зависимости от конкретных требований к нагрузке.
В таблице ниже приведены краткое описание и сравнение ключевых возможностей Milvus Lite, Milvus Standalone и Milvus Distributed.
| Возможности | Milvus Lite | Milvus Standalone | Milvus Distributed | Milvus Distributed. |
| SDK | Python | Python, Go, Java, Node.js, C#, RESTful | Python, Go, Java, Node.js, C#, RESTful | |
| Типы данных | Плотные векторыРазностные векторыБинарные векторы Булевы скаляры Integer скаляры Float скаляры Strings Arrays JSON | Плотные векторы Разностные векторы Бинарные векторы Булевы скаляры Integer скаляры Float скаляры Strings Arrays JSON | Плотные векторы Разностные векторы Бинарные векторы Булевы скаляры Integer скаляры Float скаляры Strings Arrays JSON | |
| Поиск | Векторный поиск (ANN-поиск)Фильтрованный векторный поиск Диапазон поискаГибридный поиск Запрос скалярного выражения Первичный ключевой запрос (получить) | Векторный поиск (ANN-поиск)Фильтрованный векторный поиск Диапазон поискаГибридный поиск Запрос скалярного выражения Первичный ключевой запрос (получить) | Векторный поиск (ANN-поиск)Фильтрованный векторный поиск Диапазон поискаГибридный поиск Запрос скалярного выражения Первичный ключевой запрос (получить) | |
| Базовые возможности CRUD | ✔️ | ✔️ | ✔️ | ✔️ |
| Дополнительные возможности | - | RBAC (контроль доступа на основе ролей) | RBAC (контроль доступа на основе ролей) Sharding Partition Partition Key Физическая группировка ресурсов | |
| Согласованность | Сильная | Сильно ограниченная стабильность сессии в конечном итоге | Сильно ограниченная стабильность сессии в конечном итоге |
Таблица: Сравнение Milvus Lite, Milvus Standalone и Milvus Distributed
Как выбрать правильное развертывание Milvus для каждого этапа разработки
Выбор подходящего варианта развертывания Milvus зависит от стадии разработки приложения. Эти этапы включают Быстрое прототипирование, Раннее производственное развертывание и Крупномасштабное производственное развертывание. Давайте подробно рассмотрим каждый этап.
Milvus Lite для быстрого прототипирования приложений искусственного интеллекта
При разработке и создании прототипов приложений искусственного интеллекта, таких как персональный помощник, движок семантического поиска или сквозной RAG, скорость и гибкость приложения обычно приоритетнее производительности и стабильности. Поэтому Milvus Lite - идеальный выбор на данном этапе. Он позволяет быстро создавать сквозную функциональность в среде ноутбука и проводить легкие эксперименты, направленные на проверку эффективности.
Переход на Milvus Standalone для проверки на больших массивах данных
Milvus Standalone - это следующий логический шаг, если вам нужно проверить результаты на большом наборе данных. Milvus Lite и Standalone разработаны для совместной работы, обеспечивая легкий переход от локального прототипирования к проверке на сервере. Поскольку Milvus Lite, Standalone и Distributed имеют один и тот же клиентский интерфейс, вы можете повторно использовать одну и ту же бизнес-логику как для локальной, так и для масштабной проверки данных. Кроме того, Milvus Standalone поддерживает работу с несколькими пользователями, что упрощает сотрудничество и обмен данными между командами разработчиков, работающими в режиме agile, с помощью одного экземпляра.
Milvus Standalone для развертывания на ранних стадиях производства
На ранних стадиях производства приложений, когда ваш проект только запущен и все еще находит свое соответствие продукту и рынку, объем бизнес-запросов и данных относительно невелик. Основное внимание должно быть уделено эффективности и конкурентоспособности бизнеса, а не инфраструктуре. Milvus Standalone хорошо подходит для этого этапа. Для онлайн-сервисов развертывание Milvus в режиме основного резервного копирования с высокой доступностью обеспечивает надежность. Для тестовых сред обычно достаточно развертывания одного узла.
Примечание: Milvus Standalone не обеспечивает изоляцию физических ресурсов между таблицами. Если у вас есть два критически важных, чувствительных к производительности приложения, лучше изолировать их данные с помощью отдельных экземпляров Milvus Standalone. Хотя это может привести к некоторой неэффективности использования ресурсов, на данном этапе это более экономично, чем управление распределенной системой Milvus Distributed.
Вы можете продолжать использовать Milvus Lite для специфических задач отладки, но не делать этого в производственной среде, где развернут Milvus Standalone, так как это может привести к риску производительности и стабильности.
Milvus Distributed для крупномасштабного производственного развертывания
Когда ваши данные превышают возможности одного сервера или быстро расширяются, пора подготовиться к будущему масштабированию. Milvus Distributed становится незаменимым на этом этапе.
Эта лучшая практика предполагает одновременный запуск экземпляров Milvus Standalone и Milvus Distributed на начальном этапе и постепенное переключение трафика данных с Standalone на Distributed. Обязательно наблюдайте за системой в течение как минимум месяца, пока Milvus Distributed не будет работать стабильно.
На этом этапе вам также потребуется улучшить управление операциями. Milvus Distributed поддерживает Prometheus и предлагает такие инструменты управления, как Attu. Хотя Milvus предоставляет широкий спектр специализированных операционных инструментов и интеграций в экосистему, управление большой распределенной системой может быть сложным. Мы призываем вас присоединиться к открытому и активному сообществу Milvus, чтобы обратиться за поддержкой, внести свой код, посетить мероприятия и сделать много других ценных вкладов.
Как выбрать правильное развертывание для ваших векторных наборов данных
Milvus разработан для масштабирования вместе с вашим проектом и предлагает различные режимы развертывания, чтобы соответствовать изменяющимся требованиям ваших наборов данных. Чтобы прояснить их различия, мы рассмотрим, как Milvus Lite, Standalone и Distributed сравниваются друг с другом и, что более важно, с другими векторными базами данных с открытым исходным кодом, представленными на рынке, такими как Chroma, Weaviate и Qdrant.
Chroma набирает обороты среди разработчиков с прошлого года, особенно для небольших проектов. Как и Milvus Lite, Chroma представляет собой легковесную векторную базу данных. Она лучше всего подходит для приложений, обрабатывающих не более сотен тысяч векторов. Chroma предлагает базовые функции, такие как вставка векторных данных и поиск сходства, что делает ее легким вариантом для быстрого создания прототипов. Однако ее ограниченный набор функций и недостаточная готовность к производству означают, что даже Milvus Lite предоставляет более надежные возможности.
Для готовых к производству решений лучше выбрать Milvus Standalone и Distributed, а также Weaviate и Qdrant. Weaviate хорошо известна своей интеграцией с приложениями искусственного интеллекта, обеспечивая встроенную поддержку различных моделей восходящего потока. С другой стороны, Qdrant фокусируется на основных функциях векторных баз данных с акцентом на производительность векторного поиска. Однако, согласно VectorDBBench, бенчмарку векторных баз данных с открытым исходным кодом, Milvus все еще превосходит Qdrant по производительности поиска, что делает его главным претендентом в этом пространстве.
Вот разбивка подходящих масштабов данных для каждой векторной базы данных:
Рисунок 2- Milvus vs. Chroma vs Qdrant vs. Weaviate для хранения и поиска векторов
Milvus Lite и Chroma идеально подходят для масштабирования данных до одного миллиона векторов. Они разработаны для простоты использования, жертвуя некоторыми возможностями системы ради простоты.
Milvus Standalone, Weaviate и Qdrant: Лучше всего подходят для данных масштаба от одного миллиона до десятков миллионов векторов. В этих базах данных соблюден баланс между мощными системными возможностями и простотой использования, что делает их подходящими для производства на ранних стадиях.
Milvus Distributed: Разработана для работы с данными масштаба десятки миллионов и более_. Сообщество Milvus подтвердило поддержку миллиардных масштабов, и теперь она реализуется для ситуаций с десятками миллиардов векторов.
Хотя у других векторных баз данных, таких как Chroma, Weaviate и Qdrant, есть свои сильные стороны, они часто не могут предложить такой же уровень гибкости, масштабируемости и долгосрочной поддержки, как Milvus. По мере роста проекта переключение векторных баз данных может стать дорогостоящим и сложным. Milvus с его универсальными вариантами развертывания поддерживает смешанные рабочие процессы с различными масштабами данных, гарантируя, что вы не перерастете свое решение базы данных.
Основные компоненты Milvus Lite, Standalone и Distributed
Благодаря общим базовым компонентам Milvus обеспечивает единообразный пользовательский опыт и единую эволюцию во всех трех режимах развертывания. Такая конструкция обеспечивает одинаковый базовый функционал, независимо от того, используете ли вы Milvus Lite для легких задач или Milvus Distributed для крупномасштабных операций.
На диаграмме ниже показаны функциональные компоненты, охватываемые каждым из этих режимов развертывания Milvus:
Рисунок 2- Milvus Lite vs. Standalone vs. Distributed по базовым компонентам
Milvus Lite в первую очередь инкапсулирует поисковую систему, предлагая при этом локальные реализации для таких важных задач, как вставка данных, сохранение, создание индекса и управление метаданными. Рассматривайте Milvus Lite как мощную библиотеку, а не как простой инструмент. По сравнению с более базовыми библиотеками, такими как Chroma, поисковая система Milvus Lite обеспечивает более высокую производительность и возможности запросов, что делает ее идеальной для векторных вкраплений. Если вы ищете альтернативу FAISS или HNSWLib, Milvus Lite является сильным кандидатом, поскольку в нее встроены основные библиотеки алгоритмов vector search и она прошла обширную оптимизацию как по производительности, так и по функциональности.
Milvus Standalone включает в себя все функциональные компоненты системы Milvus, за исключением балансировки нагрузки и управления несколькими узлами (координаторами). Эти компоненты работают в одной среде Docker, обеспечивая эффективное локальное взаимодействие и минимизируя задержки сервера.
Milvus Distributed может похвастаться полным набором функциональных компонентов. Хотя и автономный, и распределенный режимы содержат прокси-сервер, узел запросов, узел данных и индексный узел с идентичными функциональными возможностями, Milvus Distributed предлагает большую гибкость развертывания. Каждый функциональный компонент может быть развернут несколько раз, чтобы справиться с повышенной нагрузкой, а несколько компонентов могут быть развернуты на одном физическом узле для совместного использования ресурсов или на разных узлах для обеспечения изоляции ресурсов. Кроме того, в режиме Distributed возможно независимое масштабирование каждого компонента, что позволяет адаптироваться к изменяющимся характеристикам нагрузки и эффективно повысить эффективность использования ресурсов.
Резюме
В этом посте мы рассмотрели три варианта развертывания, которые предлагает Milvus: Milvus Lite, Standalone и Distributed. Каждый режим развертывания приспособлен к различным этапам разработки, объемам данных и сценариям использования, что гарантирует, что Milvus сможет масштабироваться вместе с вашим проектом.
Milvus Lite идеально подходит для быстрого создания прототипов и проведения небольших экспериментов в среде Python. Он прост в настройке и использовании, что делает его идеальным для разработчиков, которым нужно легкое, но мощное решение для тестирования и разработки.
Milvus Standalone - это следующий шаг для тех, кто готов перейти от прототипирования к производству. Этот вариант развертывания с одним узлом предоставляет все необходимые компоненты для ранних производственных сред, обеспечивая баланс между производительностью и эффективностью использования ресурсов. Он хорошо подходит для проектов с умеренным объемом данных и растущими требованиями пользователей.
Milvus Distributed предназначен для крупномасштабных производственных развертываний, требующих высокой доступности, масштабируемости и гибкости. Это оптимальный выбор для предприятий и приложений, работающих с огромными объемами данных, гарантирующий, что ваша векторная база данных сможет расти вместе с потребностями вашего бизнеса.
Дополнительные ресурсы
Читать далее

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.
