ストレージ 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 を必要とする機能
| 機能 | 説明 | 必要な設定 |
|---|---|---|
TEXT field | コレクションスキーマに固定の最大長を設定することなく、文章、文書、チケット、ログなどの長いソーステキストを保存します。 | 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 ワークフローを通じて変更を適用してください。静的な設定ファイルを編集するだけでは、実行中のデプロイメントが新しい値を受け取ったことが保証されません。
既存のコレクションにFunctionとその生成されたベクトルフィールドを追加する予定の場合は、既存データのバックフィルに必要な2つのコンパクション設定も有効にしてください:
dataCoord:
compaction:
bumpSchemaVersion:
enabled: true
storageVersion:
enabled: true
既存エンティティに対する関数の出力は、バックグラウンドでのコンパクションを通じて非同期に生成されます。スキーマの更新が成功したからといって、すべての既存エンティティに対するバックフィルが完了したとは限りません。