メインコンテンツまでスキップ

スナップショットをデータソースとして使用する

スナップショットのメタデータ JSON パスを external_source として使用し、external_spec.format"milvus-table" に設定することで、Milvus スナップショットから外部コレクションを作成できます。

外部コレクションをリフレッシュすると、Milvus はソースセグメントのマニフェストをターゲットの外部セグメントにマッピングします。主要なカラムデータはスナップショットソースから参照されたまま維持され、生成された関数出力や変換された削除ログなどターゲットが所有するデータはターゲットコレクション配下に書き込まれます。

開始前に

外部コレクションを作成する前に、以下の点を確認してください。

  • ソーススナップショットが、Milvus v3.0.x サーバーと互換性のある Zilliz Cloud クラスター内のコレクションから作成されていること。

  • ソースコレクション自体が外部コレクションではないこと。

  • external_source が具体的なスナップショットメタデータ JSON ファイル(例: s3://bucket/snapshots/{source_collection_id}/metadata/{snapshot_id}.json)を指していること。

  • 各ターゲットデータフィールドの external_field が対応するソースフィールド名に設定されていること。

  • ターゲットスキーマが、マッピング対象のデータフィールドについてソーススナップショットのスキーマと一致していること。

ソーススナップショットが v3.0.x リリースの Milvus インスタンスと互換性のある Zilliz Cloud クラスター上のコレクションから作成されていない場合、ソーススキーマがターゲットスキーマと一致しない場合、スナップショットメタデータ JSON にマニフェスト情報がない場合、またはソースが別の外部コレクションである場合は、作成またはリフレッシュに失敗します。

Milvus スナップショットから外部コレクションを作成する

以下の例では、既存のスナップショットから milvus-table 外部コレクションを作成し、それをリフレッシュします。

ステップ 1: スナップショットメタデータのパスを取得する

通常の Milvus コレクションからスナップショットを作成または選択し、describe コマンドを実行してオブジェクトストレージ上の場所を取得します。

python
from pymilvus import DataType, MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

snapshot_info = client.describe_snapshot(
snapshot_name="analytics_snapshot_20260321",
include_collection_info=True
)

external_source = f"s3://bucket/{snapshot_info.s3_location}"

ステップ 2: milvus-table 外部コレクションの作成とリフレッシュ

スナップショットのソースコレクションと一致するスキーマを持つ外部コレクションを作成します。external_spec.format"milvus-table" に設定し、各ターゲットデータフィールドの external_field を対応するソースフィールド名に設定します。

python
schema = client.create_schema(
external_source=external_source,
external_spec="""{
"format": "milvus-table",
"extfs": {
"cloud_provider": "aws",
"region": "us-west-2",
"access_key_id": "YOUR_ACCESS_KEY",
"access_key_value": "YOUR_SECRET_KEY"
}
}""",
)

schema.add_field(
field_name="id",
datatype=DataType.INT64,
is_primary=True,
external_field="id",
)
schema.add_field(
field_name="embedding",
datatype=DataType.FLOAT_VECTOR,
dim=768,
external_field="embedding",
)

client.create_collection(
collection_name="snapshot_external_collection",
schema=schema,
)

データをリフレッシュする

コレクションの準備ができたら、リフレッシュを実行してデータのメタデータとインデックスを作成します。詳細については、「外部コレクションの作成」を参照してください。

Ctrl I