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

milvus-logo
LFAI
Главная
  • О Милвусе
  • Home
  • Docs
  • О Милвусе

  • Что такое Милвус

Что такое Milvus?

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

Milvus - это проект с открытым исходным кодом в рамках LF AI & Data Foundation, распространяемый под лицензией Apache 2.0. Большинство участников проекта - эксперты из сообщества высокопроизводительных вычислений (HPC), специализирующиеся на создании крупномасштабных систем и оптимизации кода с учетом аппаратного обеспечения. Среди основных участников - специалисты из Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba и Microsoft.

Неструктурированные данные, эмбеддинги и Milvus

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

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

Untructured data, embeddings, and Milvus Неструктурированные данные, вкрапления и Milvus

Milvus предлагает три режима развертывания, охватывающие широкий диапазон масштабов данных - от локального прототипирования в Jupyter Notebooks до массивных кластеров Kubernetes, управляющих десятками миллиардов векторов:

  • Milvus Lite - это библиотека на языке Python, которая может быть легко интегрирована в ваши приложения. Являясь облегченной версией Milvus, она идеально подходит для быстрого создания прототипов в Jupyter Notebooks или для работы на устройствах с ограниченными ресурсами. Узнайте больше.
  • Milvus Standalone - это серверное развертывание на одной машине, все компоненты которого собраны в единый образ Docker для удобного развертывания. Узнайте больше.
  • Milvus Distributed может быть развернут на кластерах Kubernetes. Это облачная нативная архитектура, предназначенная для миллиардных и даже более масштабных сценариев. Эта архитектура обеспечивает избыточность критически важных компонентов. Узнайте больше.

Что делает Milvus таким быстрым?

Milvus с самого начала разрабатывалась как высокоэффективная система векторных баз данных. В большинстве случаев Milvus превосходит другие векторные базы данных в 2-5 раз (см. результаты VectorDBBench). Такая высокая производительность является результатом нескольких ключевых конструкторских решений:

Оптимизация с учетом аппаратного обеспечения: Чтобы Milvus мог работать в различных аппаратных средах, мы оптимизировали его производительность специально для многих аппаратных архитектур и платформ, включая AVX512, SIMD, GPU и NVMe SSD.

Передовые алгоритмы поиска: Milvus поддерживает широкий спектр алгоритмов индексации/поиска в памяти и на диске, включая IVF, HNSW, DiskANN и другие, и все они были глубоко оптимизированы. По сравнению с такими популярными реализациями, как FAISS и HNSWLib, Milvus обеспечивает производительность на 30-70 % выше.

Поисковая система на C++: Более 80 % производительности векторной базы данных определяется ее поисковой системой. Milvus использует C++ для этого критически важного компонента благодаря высокой производительности, низкоуровневой оптимизации и эффективному управлению ресурсами. Что особенно важно, Milvus интегрирует многочисленные оптимизации кода с учетом аппаратного обеспечения, начиная с векторизации на уровне ассемблера и заканчивая многопоточным распараллеливанием и планированием, чтобы полностью использовать возможности оборудования.

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

Что делает Milvus таким масштабируемым

В 2022 году Milvus поддерживал миллиардные векторы, а в 2023 году - десятки миллиардов с неизменной стабильностью, обеспечивая работу масштабных сценариев для более чем 300 крупных предприятий, включая Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection и др.

Облачная нативная архитектура Milvus с высокой степенью развязки обеспечивает непрерывное расширение системы по мере роста данных:

Highly decoupled system architecture of Milvus Архитектура системы Milvus с высокой степенью разделения

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

Типы поиска, поддерживаемые Milvus

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

  • ANN Search: Находит K векторов, наиболее близких к вектору вашего запроса.
  • Фильтрующий поиск: Выполняет ANN-поиск при заданных условиях фильтрации.
  • Поиск в диапазоне: Находит векторы в заданном радиусе от вектора запроса.
  • Гибридный поиск: Проводит ANN-поиск на основе нескольких векторных полей.
  • Полнотекстовый поиск: Полнотекстовый поиск на основе BM25.
  • Реранжирование: Корректирует порядок результатов поиска на основе дополнительных критериев или вторичного алгоритма, уточняя первоначальные результаты ANN-поиска.
  • Fetch (поиск): Получение данных по их первичным ключам.
  • Запрос: Получение данных с помощью определенных выражений.

Широкий набор функций

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

API и SDK

  • RESTful API (официальный)
  • PyMilvus (Python SDK) (официальный)
  • Go SDK (официальный)
  • Java SDK (официальный)
  • Node.js (JavaScript) SDK (официальный)
  • C# (предоставлен компанией Microsoft)

Расширенные типы данных

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

Ускорение

  • Алгоритмы поиска Milvus поддерживает набор настраиваемых алгоритмов индексирования и поиска. Подробнее см. в разделах Индекс в памяти, Индекс на диске и Индекс на GPU.

  • Разделы и ключи разделов Разделы - это подразделы коллекции Milvus. Для повышения производительности поиска можно выбрать скалярное поле в качестве ключа раздела. Подробнее см. в разделах Управление разделами и Использование ключа раздела.

  • Настраиваемая модель согласованности Согласованность обеспечивает одинаковое представление данных на каждом узле или реплике Milvus при записи или чтении данных в определенный момент времени. Вы можете легко настроить уровень согласованности при выполнении поиска ANN в Milvus. Подробнее см. в разделе Согласованность.

  • Импорт данных с высокой производительностью Чтобы импортировать в Milvus большой объем данных вместо того, чтобы вставлять их один за другим, воспользуйтесь нашими инструментами импорта данных с высокой производительностью. Подробности см. в разделах Подготовка исходных данных и Импорт данных.

  • Поддержка многопользовательской работы В Milvus реализовано множество функций, ориентированных на сценарии многопользовательской работы, включая Partition Key, Clustering Key и другие. Подробнее см. в разделе Стратегии многопользовательской работы.

Безопасность и авторизация

  • Настраиваемая модель согласованности Согласованность обеспечивает одинаковое представление данных на каждом узле или реплике Milvus при записи или чтении данных в определенный момент времени. Вы можете легко настроить уровень согласованности при выполнении поиска ANN в Milvus. Подробнее см. в разделе Согласованность.

  • Изоляция данных и контроль ресурсов Для сценариев с несколькими арендаторами изоляция данных является основным требованием безопасности. В Milvus реализовано несколько функций для решения ваших проблем с безопасностью. Подробнее см. в разделе Управление группами ресурсов и уплотнение кластеризации.

Интеграции искусственного интеллекта

  • Интеграции моделей встраивания Модели встраивания преобразуют неструктурированные данные в их числовое представление в высокоразмерном пространстве данных, чтобы вы могли хранить их в Milvus. В настоящее время PyMilvus, SDK для Python, интегрирует несколько моделей встраивания, чтобы вы могли быстро подготовить свои данные к векторным встраиваниям. Подробнее см. в разделе Обзор встраивания.

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

  • LangChain и другие интеграции с инструментами искусственного интеллекта В эпоху GenAI такие инструменты, как LangChain, привлекают большое внимание разработчиков приложений. Как основной компонент, Milvus обычно служит хранилищем векторов в таких инструментах. Чтобы узнать, как интегрировать Milvus в ваши любимые инструменты искусственного интеллекта, обратитесь к нашим разделам "Интеграции" и "Учебники".

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

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

  • Birdwatcher Birdwatcher - это отладочный инструмент для Milvus. Используя его для подключения к etcd, вы можете проверять состояние системы Milvus или настраивать ее на лету. Для получения подробной информации обратитесь к разделу BirdWatcher.

  • Интеграции Promethus и Grafana Prometheus - это набор инструментов для мониторинга и оповещения систем Kubernetes с открытым исходным кодом. Grafana - это стек визуализации с открытым исходным кодом, который может подключаться ко всем источникам данных. Вы можете использовать Promethus и Grafana в качестве поставщика услуг мониторинга для визуального контроля производительности распределенного Milvus. Подробнее см. в разделе Развертывание служб мониторинга.

  • Milvus Backup Milvus Backup - это инструмент, позволяющий пользователям создавать резервные копии и восстанавливать данные Milvus. Он предоставляет как CLI, так и API, чтобы вписаться в различные сценарии применения. Более подробную информацию см. в разделе Milvus Backup.

  • Milvus Capture Data Change (CDC) Milvus-CDC может захватывать и синхронизировать инкрементные данные в экземплярах Milvus и обеспечивает надежность бизнес-данных, беспрепятственно перенося их между исходным и целевым экземплярами, что позволяет легко выполнять инкрементное резервное копирование и аварийное восстановление. Подробную информацию см. в разделе Milvus CDC.

  • Коннекторы Milvus Компания Milvus разработала набор коннекторов, позволяющих легко интегрировать Milvus со сторонними инструментами, такими как Apache Spark. В настоящее время вы можете использовать наш коннектор Spark для передачи данных Milvus в Apache Spark для машинного обучения. Подробности см. в разделе Spark-Milvus Connector.

  • Vector Transmission Services (VTS) Milvus предоставляет набор инструментов для передачи данных между экземпляром Milvus и множеством источников данных, включая кластеры Zilliz, Elasticsearch, Postgres (PgVector) и другой экземпляр Milvus. Подробности см. в разделе VTS.

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?