Хранение 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-объектов Azureparquet, 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

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

ПереведеноDeepL

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

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

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

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