Хранение V3Compatible with Milvus 3.0.x
Обзор
Наборы данных для искусственного интеллекта часто развиваются после создания коллекции. По мере изменения моделей и рабочих процессов командам может потребоваться добавить текст, сгенерировать новые векторные поля для существующих сущностей или использовать данные, хранящиеся за пределами Milvus. Для поддержки таких рабочих процессов требуется модель хранения, способная развиваться вместе с набором данных.
Хранение V3 предоставляет такую модель в Milvus 3.0. Оно использует версионированную структуру хранения, позволяющую включать данные, добавленные или перезаписанные с течением времени, при этом приложения продолжают получать доступ к коллекциям через те же API Milvus.
Хранение V3 по умолчанию отключено. После вступления в силу команды « common.storage.useLoonFFI » новые записи и результаты уплотнения будут использовать хранение V3. Существующие данные остаются в текущей структуре до тех пор, пока подходящие данные не будут перезаписаны в ходе фонового уплотнения. Во время этого перехода Milvus может считывать данные из обеих структур. Включите хранение V3 для использования функций, которые от него зависят, а не в целях общей оптимизации производительности.
Форматы данных в Storage V3
Storage V3 использует манифесты для описания данных коллекции независимо от базового формата данных. Это позволяет одному и тому же уровню хранения работать как с данными, управляемыми Milvus, так и с данными, которые остаются во внешней системе.
Форматы файлов управляемых коллекций
Для управляемых коллекций в « dataNode.storage.format » выбирается формат файлов для новых данных Storage V3. Этот параметр поддерживает следующие значения:
| Формат | Описание |
|---|---|
parquet | Стандартный, широко используемый столбцовый формат файлов, отличающийся широкой совместимостью с экосистемой и наличием отлаженного набора инструментов. Parquet организует данные в группы строк и поддерживает кодирование и сжатие по столбцам, что позволяет Milvus считывать только необходимые столбцы и эффективно обрабатывать большие последовательные сканирования. |
vortex | Дополнительный столбцовый формат файлов нового поколения, построенный на основе расширяемых, комбинируемых кодировок и обширной статистики. В Milvus формат Vortex поддерживает проекцию столбцов, чтение по диапазонам и чтение с произвольным доступом. Эти возможности позволяют сократить количество ненужных операций чтения данных для подходящих рабочих нагрузок. |
Изменение параметра ` dataNode.storage.format ` влияет на новые записи в Storage V3. Существующие файлы сохраняют свой текущий формат до тех пор, пока уплотнение не перезапишет соответствующие сегменты. В большинстве развертываний следует сохранять формат по умолчанию ` parquet `, если только репрезентативные тесты не покажут, что формат ` vortex ` лучше подходит для их данных и моделей доступа.
Внешние коллекции и поддерживаемые форматы источников
Внешние коллекции позволяют Milvus использовать данные, хранящиеся во внешних файлах или таблицах. Storage V3 поддерживает следующие форматы внешних источников:
| Формат | Категория | Ожидаемый источник | Поддержка Storage V3 |
|---|---|---|---|
parquet | Формат файла | Каталог или префикс объектного хранилища, содержащий файлы Parquet. | Обнаруживает файлы, считывает их метаданные и группы строк, а также записывает их в манифест Storage V3. |
vortex | Формат файла | Каталог или префикс объектного хранилища, содержащий файлы Vortex. | Обнаруживает файлы и использует структуру и статистику Vortex для проекции, чтения диапазонов и чтения с произвольным доступом. |
lance-table | Формат таблицы | Каталог наборов данных Lance. | Считывает метаданные набора данных и сопоставляет его фрагменты с манифестом Storage V3. |
iceberg-table | Формат таблицы | Файл метаданных Iceberg в формате JSON и идентификатор моментального снимка. | Определяет указанный снимок, планирует его файлы данных и сохраняет метаданные удаления по позиции. Удаления по равенству не поддерживаются и должны быть преобразованы в удаления по позиции перед обновлением внешней коллекции. |
Внешние источники доступны только для чтения. Storage V3 создает и обновляет собственный манифест, не изменяя и не копируя исходные данные. Затем Milvus может создавать индексы и выполнять поиск и запросы по данным через внешнюю коллекцию.
Облачное хранилище и аутентификация между учетными записями
В приведенной ниже таблице описано только то, как внешняя коллекция получает доступ к исходным данным, хранящимся в другой облачной учетной записи. В ней не описывается объектное хранилище, используемое для данных, управляемых Milvus.
| Облачное хранилище | Поддерживаемые внешние форматы | Межаккаунтная аутентификация для внешних коллекций |
|---|---|---|
| Amazon S3 | Все четыре формата, перечисленные выше. | Укажите ARN роли IAM, принадлежащей клиенту. Storage V3 использует AWS STS AssumeRole для получения временных учетных данных и обновляет их по мере необходимости. Вы также можете предоставить внешний идентификатор, если это требуется политикой доверия роли. |
| Google Cloud Storage (GCS) | Все четыре формата, перечисленные выше. | Укажите целевую служебную учетную запись. Storage V3 действует от имени этой служебной учетной записи, использует ее кратковременные токены доступа OAuth для доступа к исходному корзине и обновляет токены до истечения их срока действия. |
| Хранилище BLOB-объектов Azure | parquet, vortex и lance-table. Формат iceberg-table не поддерживается. | Milvus запрашивает краткосрочные учетные данные SAS через частный сервис gRPC milvus-tools. Storage V3 использует учетные данные SAS для доступа к исходному контейнеру, и эти учетные данные обновляются до истечения их срока действия. |
| Azure Data Lake Storage Gen2 (ADLS Gen2) | Все четыре перечисленные выше формата. | Milvus запрашивает краткосрочные учетные данные SAS через частный сервис gRPC milvus-tools. Storage V3 использует учетные данные SAS для доступа к исходному контейнеру, и эти учетные данные обновляются до истечения срока их действия. |
| Служба объектного хранения Alibaba Cloud (OSS) | Все четыре формата, перечисленные выше. | Укажите ARN роли RAM, принадлежащей клиенту. Storage V3 принимает на себя эту роль, используя идентификатор рабочей нагрузки среды выполнения или роль RAM ECS, а затем использует временные учетные данные для доступа к исходному корзине. |
Инструкции по настройке и использованию внешней коллекции см. в разделе «Создание внешней коллекции».
Функции, требующие Storage V3
| Функция | Описание | Требуемая конфигурация |
|---|---|---|
| Формат файлов Vortex | Запись новых данных управляемой коллекции в формате Vortex. |
|
TEXT поле | Хранение длинного исходного текста, такого как отрывки, документы, заявки или журналы, без установки фиксированной максимальной длины в схеме коллекции. | common.storage.useLoonFFI=true |
| Векторные поля, сгенерированные функциями | Добавьте функцию BM25 или MinHash к существующей коллекции, чтобы Milvus сгенерировал новое векторное поле на основе существующего поля « VARCHAR ». Milvus асинхронно заполняет сгенерированные значения для существующих сущностей посредством фоновой компактизации. | |
| Внешние коллекции | Выполняйте запросы к данным, хранящимся за пределами Milvus, без их копирования в управляемую коллекцию. Обновляйте внешнюю коллекцию при изменении исходных данных. Чтобы сделать доступными дополнительные исходные поля, см. раздел «Изменение схемы внешней коллекции». | common.storage.useLoonFFI=true |
Перед включением Storage V3
После того как Milvus запишет данные в Storage V3, переход на более раннюю версию Milvus, не поддерживающую чтение данных из Storage V3, не допускается. Отключение Storage V3 впоследствии не приводит к немедленному преобразованию всех существующих данных Storage V3 или восстановлению совместимости со старой версией.
Перед включением Storage V3 учтите следующие особенности поведения данных:
- Поскольку функция «
dataCoord.compaction.storageVersion.enabled» включена по умолчанию, подходящие существующие данные могут постепенно переноситься в Storage V3 посредством фоновой уплотнения. - Отключение Storage V3 изменяет целевую версию хранилища для будущих записей и подходящих результатов уплотнения. Оно не приводит к синхронному преобразованию всех существующих данных Storage V3 и не гарантирует безопасность перехода на более раннюю версию.
Включение Storage V3
Установите для параметра « common.storage.useLoonFFI » значение « true » в конфигурации Milvus:
common:
storage:
useLoonFFI: true
Milvus рассматривает этот параметр как обновляемый. Примените изменение с помощью рабочего процесса обновления конфигурации, поддерживаемого вашим развертыванием. Простое редактирование статического файла конфигурации не гарантирует, что запущенное развертывание получило новое значение.
Если вы планируете добавить функцию и сгенерированное ею векторное поле в существующую коллекцию, также включите два параметра уплотнения, необходимых для заполнения существующих данных:
dataCoord:
compaction:
bumpSchemaVersion:
enabled: true
storageVersion:
enabled: true
Вывод функции для существующих сущностей генерируется асинхронно посредством фоновой уплотнения. Успешное обновление схемы не означает, что заполнение данных для всех существующих сущностей завершено.
Связанная документация
- Текстовое поле
- Изменение схемы коллекции
- Создание внешней коллекции
- Обзор вариантов развертывания Milvus
- Обновление автономной версии Milvus с помощью Helm Chart
- Обновление кластера Milvus с помощью диаграммы Helm
- Общие настройки
- Настройки, связанные с dataCoord
- Почему мы создали Loon: механизм хранения данных для ИИ, которые постоянно меняются — технические подробности о мотивах проектирования Storage V3.