跳到主要内容
版本:v3.0.x

Storage V3

Overview

AI 数据集通常会在 Collection 创建后继续演进。随着模型和工作流变化,团队可能需要添加文本、为现有 Entity 生成新的向量字段,或使用存储在 Milvus 之外的数据。要支持这些工作流,需要一种能够随数据集演进的存储模型。

Storage V3 在 Milvus 3.0 中提供了这种模型。它使用带版本的存储布局来纳入随时间添加或重写的数据,同时应用仍可通过相同的 Milvus API 访问 Collection。

Storage V3 默认关闭。common.storage.useLoonFFI 生效后,新的写入和 Compaction 输出会使用 Storage V3。现有数据会保持当前布局,直到符合条件的数据被后台 Compaction 重写。在此过渡期间,Milvus 可以读取两种布局。启用 Storage V3 是为了使用依赖它的功能,而不是将其作为通用性能优化手段。

Features that require Storage V3

功能说明必需配置
TEXT field存储较长的源文本,例如段落、文档、工单或日志,无需在 Collection Schema 中设置固定的最大长度。common.storage.useLoonFFI=true
Function-generated vector fields向现有 Collection 添加 BM25 或 MinHash Function,使 Milvus 基于现有 VARCHAR 字段生成新的 vector field。Milvus 会通过后台 Compaction 异步为现有 Entity 回填生成值。
External Collection查询存储在 Milvus 外部的数据,无需将其复制到托管 Collection 中。源数据变化后,需要刷新 External Collection。若要公开更多源字段,请参阅 Alter External Collection Schemacommon.storage.useLoonFFI=true

Before you enable Storage V3

一旦 Milvus 以 Storage V3 写入数据,就不支持降级到无法读取 Storage V3 的 Milvus 版本。后续禁用 Storage V3 不会立即转换所有已有的 Storage V3 数据,也不会恢复与旧版本的兼容性。

启用 Storage V3 前,请注意以下数据行为:

  • 由于 dataCoord.compaction.storageVersion.enabled 默认启用,符合条件的已有数据可以通过后台 Compaction 逐步转换为 Storage V3。
  • 禁用 Storage V3 会改变未来写入和符合条件的 Compaction 输出的目标存储版本。它不会同步转换所有已有的 Storage V3 数据,也不能保证安全降级版本。

Enable Storage V3

在 Milvus 配置中将 common.storage.useLoonFFI 设置为 true

YAML
common:
storage:
useLoonFFI: true

Milvus 会将此配置视为可刷新配置。请通过你的部署方式支持的配置更新工作流应用此变更。仅编辑静态配置文件并不能保证正在运行的部署已收到新值。

如果你计划向现有 Collection 添加 Function 及其生成的 vector field,还需要启用现有数据 backfill 所需的两个 compaction 配置:

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

现有 Entity 的 Function 输出会通过后台 compaction 异步生成。Schema 更新成功并不表示每个现有 Entity 的 backfill 都已完成。