Терминология
AutoID
AutoID — это атрибут первичного поля, который определяет, следует ли включить функцию AutoIncrement для данного поля. Значение AutoID определяется на основе временной метки. Дополнительную информацию см. в разделе create_schema.
Автоматический индекс
Milvus автоматически выбирает наиболее подходящий тип индекса и параметры для конкретного поля на основе эмпирических данных. Это идеально подходит для ситуаций, когда вам не нужно контролировать конкретные параметры индекса. Для получения дополнительной информации см. add_index.
Attu
Attu — это универсальный инструмент администрирования для Milvus, который значительно снижает сложность и затраты на управление системой.
Birdwatcher
Birdwatcher — это инструмент отладки для Milvus, который подключается к etcd, позволяя отслеживать состояние сервера Milvus и вносить корректировки в режиме реального времени. Он также поддерживает резервное копирование файлов etcd, что помогает разработчикам в устранении неполадок.
Bulk Writer
Bulk Writer — это инструмент обработки данных, предоставляемый SDK Milvus (например, PyMilvus, Java SDK), предназначенный для преобразования необработанных наборов данных в формат, совместимый с Milvus, для эффективного импорта.
Bulk Insert
Bulk Insert — это API, повышающий производительность записи за счёт возможности импорта нескольких файлов в рамках одного запроса, что оптимизирует работу с большими наборами данных.
Cardinal
Cardinal, разработанный Zilliz Cloud, представляет собой передовой алгоритм векторного поиска, обеспечивающий непревзойденное качество и производительность поиска. Благодаря инновационной архитектуре и обширным оптимизациям Cardinal превосходит Knowhere в несколько раз — от нескольких раз до целого порядка величины — при этом адаптивно справляясь с разнообразными производственными сценариями, такими как изменяющиеся размеры K, высокая степень фильтрации, различные распределения данных и т. д.
Channel
Milvus использует два типа каналов — PChannel и VChannel — в рамках архитектуры своего потокового сервиса. Каждый PChannel соответствует потоку WAL, управляемому Woodpecker, а каждый VChannel — шарду в коллекции. Потоковый сервис управляет этими каналами для обеспечения согласованности данных и восстановления после сбоев.
Коллекция
В Milvus коллекция эквивалентна таблице в системе управления реляционными базами данных (RDBMS). Коллекции являются основными логическими объектами, используемыми для хранения и управления сущностями. Дополнительную информацию см. в разделе «Управление коллекциями».
Зависимость
Зависимость — это программа, на которой основана работа другой программы. Зависимости Milvus включают etcd (хранение метаданных), MinIO или S3 (объектное хранилище) и очередь сообщений, такую как Woodpecker (управление журналами моментальных снимков). Дополнительную информацию см. в разделе «Инфраструктура данных».
Динамическая схема
Динамическая схема позволяет вставлять сущности с новыми полями в коллекцию без изменения существующей схемы. Это означает, что вы можете вставлять данные, не зная полной схемы коллекции, и можете включать поля, которые ещё не определены. Вы можете включить эту возможность работы без схемы, активировав динамическое поле при создании коллекции. Для получения дополнительной информации см. раздел «Включение динамического поля».
Встраивание
Milvus предлагает встроенные функции встраивания, которые работают с популярными поставщиками решений для встраивания. Перед созданием коллекции в Milvus вы можете использовать эти функции для генерации встраиваний для ваших наборов данных, что упрощает процесс подготовки данных и векторного поиска. Чтобы увидеть пример создания встраиваний в действии, см. раздел «Использование модели PyMilvus для генерации текстовых встраиваний».
Сущность
Энтитета состоит из группы полей, представляющих объекты реального мира. Каждая энтитета в Milvus представлена уникальным первичным ключом.
Вы можете настраивать первичные ключи. Если вы не настроите их вручную, Milvus автоматически присвоит первичные ключи сущностям. Если вы решите настроить первичный ключ самостоятельно, обратите внимание, что на данный момент Milvus не поддерживает удаление дубликатов первичных ключей. Поэтому в одной коллекции могут присутствовать дубликаты первичных ключей. Для получения дополнительной информации см. раздел «Вставка сущностей».
Поле
Поле в коллекции Milvus соответствует столбцу таблицы в СУБД. Поля могут быть либо скалярными полями для структурированных данных (например, чисел, строк), либо векторными полями для векторов вложения.
Фильтр
Milvus поддерживает скалярную фильтрацию посредством поиска с использованием предикатов, что позволяет определять условия фильтрации в запросах и поисковых операциях для уточнения результатов.
Поиск с фильтрацией
Фильтрованный поиск применяет скалярные фильтры к векторному поиску, что позволяет уточнять результаты поиска на основе определенных критериев. Дополнительную информацию см. в разделе «Фильтрованный поиск».
Гибридный поиск
Гибридный поиск — это API для гибридного поиска, доступное начиная с версии Milvus 2.4.0. Вы можете выполнять поиск по нескольким векторным полям и объединять их результаты. В случае векторного поиска в сочетании с фильтрацией по скалярным полям он называется «фильтрованным поиском». Дополнительную информацию см. в разделе «Гибридный поиск».
Индекс
Векторный индекс — это реорганизованная структура данных, полученная из исходных данных, которая может значительно ускорить процесс векторного поиска по схожести. Milvus поддерживает широкий спектр типов индексов как для векторных, так и для скалярных полей. Дополнительную информацию см. в разделе «Типы векторных индексов».
Коннектор Kafka-Milvus
Коннектор Kafka-Milvus — это коннектор-приемник Kafka для Milvus. Он позволяет передавать векторные данные из Kafka в Milvus в режиме потоковой передачи.
Knowhere
Knowhere — это основной движок векторного выполнения Milvus, который включает в себя несколько библиотек векторного поиска по сходству, в том числе Faiss, Hnswlib и Annoy. Knowhere также разработан для поддержки гетерогенных вычислений. Он управляет тем, на каком оборудовании (CPU или GPU) выполняться построение индекса и запросы на поиск. Именно отсюда и происходит название Knowhere — «знать, где выполнять операции».
Снимок журнала
Снимок журнала — это двоичный журнал, представляющий собой небольшую единицу в сегменте, которая записывает и обрабатывает обновления и изменения, внесённые в данные в Milvus. Данные из сегмента сохраняются в нескольких бинарных журналах. В Milvus существует три типа бинарных журналов: InsertBinlog, DeleteBinlog и DDLBinlog. Дополнительную информацию см. в разделе «Хранение метаданных».
Типы метрик
Типы метрик сходства используются для измерения сходства между векторами. В настоящее время Milvus поддерживает евклидово расстояние (L2), внутреннее произведение (IP), косинусное сходство (COSINE) и бинарные типы метрик. Вы можете выбрать наиболее подходящий тип метрики в зависимости от вашего сценария. Дополнительную информацию см. в разделе «Метрики сходства».
MemoryBuffer
MemoryBuffer — это облегчённый режим развёртки Woodpecker, который временно буферизует входящие записи в памяти и периодически сбрасывает их в облачное объектное хранилище. Этот режим лучше всего подходит для рабочих нагрузок с большим количеством пакетных операций в небольших развёрточных средах или в производственных средах, где простота важнее производительности. Дополнительную информацию см. в разделе «Архитектура Woodpecker».
Mmap
Файлы с отображением в память обеспечивают эффективную обработку данных за счет прямого отображения содержимого файлов в память. Это особенно полезно, когда объем памяти ограничен и загрузка всех данных невозможна. Данная техника позволяет увеличить объем данных и до определенной степени сохранить производительность. Однако, если объем данных значительно превышает емкость памяти, скорость поиска и выполнения запросов может существенно снизиться. Дополнительную информацию см. в разделе «Хранение данных с поддержкой MMap».
Milvus Backup
Milvus Backup — это инструмент для создания копий данных, которые можно использовать для восстановления исходных данных после их потери.
Milvus CDC
Milvus CDC (отслеживание изменений данных) — это инструмент, используемый для репликации изменений данных из одного кластера Milvus в другой в целях аварийного восстановления по схеме «основной-резервный».
Командная строка Milvus
Интерфейс командной строки Milvus (CLI) — это инструмент командной строки, поддерживающий подключение к базе данных, операции с данными, а также импорт и экспорт данных. Основанный на Python SDK Milvus, он позволяет выполнять команды через терминал с помощью интерактивных подсказок командной строки.
Milvus Migration
Milvus Migration — это инструмент с открытым исходным кодом, разработанный для упрощения миграции данных из различных источников в Milvus 2.x.
Кластер Milvus
При кластерном развертывании Milvus услуги предоставляются группой узлов для обеспечения высокой доступности и простой масштабируемости.
Автономная версия Milvus
При автономном развертывании Milvus все операции, включая вставку данных, построение индексов и поиск векторного сходства, выполняются в рамках одного процесса.
Поддержка нескольких векторных полей
Начиная с версии 2.4.0 Milvus поддерживает несколько векторных полей в одной коллекции. Дополнительную информацию см. в разделе «Гибридный поиск».
Партиция
Партиция — это разбиение коллекции. Milvus поддерживает разбиение данных коллекции на несколько частей в физическом хранилище. Этот процесс называется партиционированием, и каждая партиция может содержать несколько сегментов. Дополнительную информацию см. в разделе «Управление партициями».
Ключ раздела
Атрибут «ключ раздела» поля позволяет разделять сущности на отдельные разделы на основе значений их ключей разделов. Такая группировка гарантирует, что сущности с одинаковым значением ключа хранятся вместе, что может ускорить операции поиска, позволяя системе пропускать нерелевантные разделы при выполнении запросов, отфильтрованных по полю ключа раздела. Дополнительную информацию см. в разделе «Использование ключа раздела».
PChannel
PChannel означает «физический канал». Каждый PChannel соответствует потоку WAL, управляемому Woodpecker. По умолчанию при запуске кластера Milvus назначается группа PChannels для хранения журналов, в которых регистрируются операции вставки, удаления и обновления данных. Дополнительную информацию см. в разделе «Служба потоковой передачи».
PyMilvus
PyMilvus — это SDK Milvus на языке Python. Его исходный код является открытым и размещен на GitHub. Вы можете выбрать MilvusClient (новую версию SDK для Python) или исходный модуль ORM для взаимодействия с Milvus.
Запрос
Query — это API, которое выполняет скалярную фильтрацию с использованием заданного булева выражения в качестве фильтра. Дополнительную информацию см. в разделе «Get & Scalar Query».
QuorumBuffer
QuorumBuffer — это режим развертывания Woodpecker, предназначенный для чувствительных к задержкам высокочастотных рабочих нагрузок чтения/записи, требующих как отклика в реальном времени, так и высокой отказоустойчивости. Он функционирует как высокоскоростной буфер записи с записью по кворуму из трех реплик, обеспечивая сильную согласованность и высокую доступность. Для получения дополнительной информации см. раздел «Архитектура Woodpecker».
Поиск по диапазону
Поиск по диапазону позволяет находить векторы, расположенные на заданном расстоянии от вектора поиска. Дополнительные сведения см. в разделе «Поиск по диапазону».
Схема
Схема — это метаинформация, определяющая тип данных и свойства данных. Каждая коллекция имеет собственную схему, которая определяет все поля коллекции, возможность автоматического присвоения идентификаторов (первичных ключей) и описание коллекции. В схему коллекции также входят схемы полей, которые определяют имя, тип данных и другие свойства поля. Дополнительные сведения см. в разделе «Управление схемой».
Поиск
Поиск — это API, выполняющий операцию векторного поиска по схожести, для выполнения которой требуются векторные данные. Дополнительную информацию см. в разделе «Поиск по одному вектору».
Сегмент
Сегмент — это автоматически создаваемый файл данных, в котором хранятся вставленные данные. Коллекция может содержать несколько сегментов, и каждый сегмент может хранить множество сущностей. Во время векторного поиска по схожести Milvus анализирует каждый сегмент для формирования результатов поиска.
Существует два типа сегментов: растущие и запечатанные. Растущий сегмент продолжает собирать новые данные до тех пор, пока не достигнет определенного порогового значения или временного ограничения, после чего он становится запечатанным. После запечатывания сегмент больше не принимает новые данные и переносится в объектное хранилище. При этом поступающие данные направляются в новый растущий сегмент. Переход из растущего сегмента в запечатанный происходит либо при достижении заранее заданного предела количества сущностей, либо при превышении максимально допустимой продолжительности пребывания в растущем состоянии. Дополнительные сведения см. в разделе «Детали проектирования».
Коннектор Spark-Milvus
Коннектор Spark-Milvus обеспечивает бесшовную интеграцию между Apache Spark и Milvus, сочетая возможности Apache Spark по обработке данных и машинному обучению (ML) с возможностями Milvus по хранению векторных данных и поиску.
Шард
Milvus повышает производительность записи данных за счет распределения операций записи по нескольким узлам с помощью шардов, которые организованы на основе хеширования первичных ключей. Это позволяет использовать возможности кластера в области параллельных вычислений.
Разбиение на партиции позволяет снизить нагрузку при чтении за счет указания имени партиции, тогда как шардирование распределяет нагрузку при записи между несколькими серверами.
Редкий вектор
Редкие векторы представляют слова или фразы с помощью векторных вложений, в которых большинство элементов равны нулю, а лишь один ненулевой элемент указывает на наличие конкретного слова. Модели редких векторов, такие как SPLADEv2, превосходят плотные модели по эффективности поиска знаний за пределами домена, распознаванию ключевых слов и интерпретируемости. Дополнительную информацию см. в разделе «Редкие векторы».
Служба потоковой обработки
Служба потоковой обработки — это концепция модуля внутренней системы потоковой обработки Milvus, построенная на основе журнала предварительной записи (WAL) для поддержки различных функций, связанных с потоковой обработкой. К ним относятся прием/подписка на потоковые данные, восстановление состояния кластера после сбоев, преобразование потоковых данных в исторические данные и запросы по растущим наборам данных. Служба состоит из компонентов: «Координатор потоковой обработки», «Кластер узлов потоковой обработки» и «Клиент потоковой обработки». Дополнительную информацию см. в разделе «Служба потоковой обработки».
Неструктурированные данные
Неструктурированные данные, включая изображения, видео, аудио и естественный язык, представляют собой информацию, которая не соответствует заранее определённой модели или способу организации. На этот тип данных приходится около 80 % всех данных в мире, и их можно преобразовать в векторы с помощью различных моделей искусственного интеллекта (ИИ) и машинного обучения (ML).
VChannel
VChannel — это сокращение от «виртуальный канал». Каждый VChannel представляет собой шард в коллекции. Каждой коллекции назначается группа VChannels для регистрации вставки, удаления и обновления данных. VChannels логически разделены, но физически совместно используют ресурсы через службу потоковой передачи. Дополнительные сведения см. в разделе «Служба потоковой передачи».
Вектор
Вектор вложения — это абстракция признаков неструктурированных данных, таких как электронные письма, данные датчиков IoT, фотографии из Instagram, структуры белков и т. д. С математической точки зрения вектор вложения представляет собой массив чисел с плавающей запятой или двоичных значений. Для преобразования неструктурированных данных в векторы вложения используются современные методы вложения. Начиная с версии 2.4.0, Milvus поддерживает как плотные, так и разреженные векторы.
Хранение WAL
Хранилище журнала предварительной записи (WAL) является основой обеспечения стойкости и согласованности данных в распределенных системах. Перед фиксацией любого изменения оно сначала записывается в журнал, что гарантирует возможность восстановления именно с того места, на котором процесс был прерван, в случае сбоя. Milvus использует Woodpecker в качестве системы хранения WAL, которая поддерживает как режим MemoryBuffer, так и режим QuorumBuffer. Дополнительную информацию см. в разделе «Архитектура Woodpecker».
Woodpecker
Woodpecker — это облачная система WAL в Milvus 2.6, заменяющая Kafka и Pulsar. Благодаря архитектуре без дисков и двум режимам развертывания (MemoryBuffer и QuorumBuffer) она обеспечивает высокую пропускную способность, низкие эксплуатационные затраты и плавную масштабируемость в объектном хранилище. Дополнительную информацию см. в разделе «Архитектура Woodpecker».
Zilliz Cloud
Полностью управляемый Milvus в Zilliz Cloud с расширенным набором корпоративных функций и высокооптимизированной производительностью.