儲存 V3Compatible with Milvus 3.0.x

概述

AI 資料集在建立後往往會持續演進。隨著模型和工作流程的變更,團隊可能需要新增文字、為現有實體產生新的向量場,或使用儲存於 Milvus 外部的資料。要支援這些工作流程,需要一種能隨資料集演進而調整的儲存模型。

Storage V3 在 Milvus 3.0 中提供了此模型。它採用版本化儲存佈局,以整合隨時間新增或重寫的資料,同時應用程式仍可透過相同的 Milvus API 存取集合。

Storage V3 預設為停用狀態。當「common.storage.useLoonFFI 」生效後,新的寫入操作及壓縮輸出將採用 Storage V3。現有資料將維持在當前佈局中,直到符合條件的資料被背景壓縮程序重寫為止。在此過渡期間,Milvus 可讀取兩種佈局。啟用 Storage V3 是為了使用依賴此功能的特性,而非作為一般的效能優化措施。

Storage V3 中的資料格式

Storage V3 採用清單(manifests)來描述集合資料,使其獨立於底層資料格式。這使得同一個儲存層既能處理由 Milvus 管理的資料,也能處理仍存於外部系統的資料。

受管集合的檔案格式

對於受管集合,dataNode.storage.format 會為新的 Storage V3 資料選取檔案格式。此設定支援以下值:

格式說明
parquet預設值,一種廣泛採用的欄位式檔案格式,具備廣泛的生態系統相容性與成熟的工具集。Parquet 將資料組織為列群組,並支援按欄位編碼與壓縮,使 Milvus 能僅讀取所需的欄位,並高效處理大型順序掃描。
vortex一種可選的次世代列式檔案格式,建基於可擴展、可組合的編碼方式及豐富的統計資訊。在 Milvus 中,Vortex 支援欄位投影、範圍讀取及隨機存取讀取。這些功能可針對合適的工作負載,減少不必要的数据讀取。

變更「dataNode.storage.format 」設定將影響新的 Storage V3 寫入作業。現有檔案將維持其現行格式,直至壓縮作業重寫對應的區段為止。除非具代表性的基準測試顯示vortex 更適合其資料與存取模式,否則多數部署應維持預設的parquet 格式。

外部集合與支援的來源格式

外部集合可讓 Milvus 使用儲存於外部檔案或資料表中的資料。Storage V3 支援以下外部來源格式:

格式類別預期來源Storage V3 支援狀況
parquet檔案格式包含 Parquet 檔案的目錄或物件儲存前綴。偵測檔案、讀取其元資料與列群組,並將其記錄於 Storage V3 清單中。
vortex檔案格式包含 Vortex 檔案的目錄或物件儲存前綴。偵測檔案,並利用 Vortex 佈局和統計資料進行投影、範圍讀取和隨機存取讀取。
lance-table表格格式一個 Lance 資料集目錄。讀取資料集的元資料,並將其片段映射至 Storage V3 清單。
iceberg-table表格格式一個 Iceberg 元資料 JSON 檔案及其快照 ID。解析指定的快照、規劃其資料檔案,並保留位置刪除元資料。不支援等值刪除,必須在刷新外部集合之前將其轉換為位置刪除。

外部來源為唯讀。Storage V3 會自行建立並更新其清單,而不會修改或複製原始資料。隨後,Milvus 即可透過外部集合建立索引,並針對該資料執行搜尋與查詢。

雲端儲存與跨帳戶驗證

下表僅說明外部集合如何存取儲存於其他雲端帳戶中的來源資料,並不說明用於 Milvus 管理資料的物件儲存。

雲端儲存支援的外部格式外部集合的跨帳戶驗證
Amazon S3上述四種格式皆支援。請指定客戶自有的 IAM 角色 ARN。Storage V3 會使用 AWS STSAssumeRole 取得臨時憑證,並視需要進行更新。若角色的信任政策有此要求,您亦可提供外部識別碼。
Google Cloud Storage (GCS)上述四種格式皆可。請指定目標服務帳戶。Storage V3 會以該服務帳戶身分行事,使用其短效 OAuth 存取憑證存取來源儲存桶,並在憑證過期前進行更新。
Azure Blob Storageparquetvortex 以及lance-tableiceberg-table 目前不支援。Milvus 會透過milvus-tools 私有 gRPC 服務請求短期有效的 SAS 憑證。Storage V3 會使用這些 SAS 憑證存取來源容器,並在憑證過期前進行更新。
Azure Data Lake Storage Gen2 (ADLS Gen2)上述四種格式皆支援。Milvus 會透過milvus-tools 私人 gRPC 服務請求短期有效的 SAS 憑證。Storage V3 會使用這些 SAS 憑證存取來源容器,且憑證會在過期前自動更新。
阿里雲物件儲存服務 (OSS)上述四種格式皆支援。請指定客戶自有的 RAM 角色 ARN。Storage V3 會透過執行階段的工作負載身分或 ECS RAM 角色來承接該角色,然後使用臨時憑證存取來源儲存桶。

有關外部收集的設定與使用說明,請參閱《建立外部收集》

需要 Storage V3 的功能

功能說明所需設定
Vortex 檔案格式以 Vortex 檔案格式寫入新的受管集合資料。
TEXT 欄位儲存長篇來源文字(例如段落、文件、票證或日誌),無需在集合架構中設定固定的最大長度。common.storage.useLoonFFI=true
函式生成的向量欄位將 BM25 或 MinHash 函數新增至現有集合,以便 Milvus 能從現有的VARCHAR 欄位生成新的向量欄位。Milvus 會透過背景壓縮,以非同步方式將生成的值填入現有實體中。
外部集合無需將資料複製到受管集合中,即可查詢儲存於 Milvus 外部的資料。當來源資料變更時,請刷新外部集合。若要公開額外的來源欄位,請參閱「變更外部集合架構」。common.storage.useLoonFFI=true

啟用 Storage V3 之前

一旦 Milvus 將資料寫入 Storage V3,便不支援降級至無法讀取 Storage V3 的 Milvus 版本。日後停用 Storage V3 並不會立即轉換所有現有的 Storage V3 資料,也不會恢復與舊版本的相容性。

在啟用 Storage V3 之前,請考慮以下資料行為:

  • 由於「dataCoord.compaction.storageVersion.enabled 」預設為啟用狀態,符合條件的現有資料可透過背景壓縮逐步遷移至 Storage V3。
  • 停用 Storage V3 會變更未來寫入操作及符合條件的壓縮輸出之目標儲存版本。此操作不會同步轉換所有現有的 Storage V3 資料,亦無法確保版本降級的安全性。

啟用 Storage V3

請在您的 Milvus 配置中將 `common.storage.useLoonFFI ` 設定為 `true `:

common:
  storage:
    useLoonFFI: true

Milvus 將此設定視為可刷新設定。請透過您的部署所支援的 configuration-update 工作流程套用此變更。僅編輯靜態設定檔並不能保證正在運行的部署已收到新值。

若您計劃將一個函數及其生成的向量場新增至現有集合中,也請啟用現有資料回填所需的兩項壓縮設定:

dataCoord:
  compaction:
    bumpSchemaVersion:
      enabled: true
    storageVersion:
      enabled: true

針對現有實體的函式輸出,是透過背景壓縮以非同步方式生成的。即使模式更新成功,也不代表所有現有實體的資料回填都已完成。

翻譯者DeepL

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?