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

ロードと解放

collection のロードは、その中で類似性検索やクエリを実行するための前提条件です。このページでは、collection のロードと解放の手順に焦点を当てます。

前提条件​

collection をロードする前に、次の点を確認してください。

  • 外部 collection の場合、index を作成する前に、collection とボリューム間でデータを同期するためにサブ秒リフレッシュを呼び出していることを確認してください。

  • 少なくともすべての vector フィールドに index を作成しており、必要に応じて一部の scalar フィールドにも index を作成しています。

ロード動作​

同じロードリクエストが外部 collection とマネージド collection の両方に適用されますが、外部 collection のロード戦略はターゲットアーキテクチャによって異なります。

環境メモリ動作実行の詳細
サービング cluster 内のマネージド collectionフルロード高パフォーマンスなアクセスのために、すべての index とデータ(vector および scalar フィールド)を直接メモリにロードします。
スタンドアロンデータベース内の外部 collectionindex のみロードindex のみをメモリにロードします。生データは、アクティブな検索やクエリ中に必要に応じてディスクから取得されます。

Collection のロード​

collection をロードすると、Zilliz Cloud は検索やクエリに迅速に応答するために、index ファイルとすべてのフィールドの生データをメモリにロードします。collection のロード後に挿入されたエンティティは、自動的に index 作成およびロードされます。

次のコードスニペットは、collection をロードする方法を示しています。

python
from pymilvus import MilvusClient

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

# 7. Load the collection
client.load_collection(
collection_name="my_collection"
)

res = client.get_load_state(
collection_name="my_collection"
)

print(res)

# Output
#
# {
# "state": "<LoadState: Loaded>"
# }

特定フィールドのロード​

Zilliz Cloud は、検索やクエリに関与するフィールドのみをロードできるため、メモリ使用量を削減し、検索パフォーマンスを向上させます。

次のコードスニペットは、my_collection という名前の collection を作成済みで、その collection に my_id と my_vector という 2 つのフィールドがあることを前提としています。

python
client.load_collection(
collection_name="my_collection",
load_fields=["my_id", "my_vector"] # Load only the specified fields
skip_load_dynamic_field=True # Skip loading the dynamic field
)

res = client.get_load_state(
collection_name="my_collection"
)

print(res)

# Output
#
# {
# "state": "<LoadState: Loaded>"
# }

特定のフィールドをロードすることを選択した場合、load_fields に含まれるフィールドのみを、検索やクエリのフィルターおよび出力フィールドとして使用できる点に注意してください。load_fields には、常にプライマリフィールドの名前と少なくとも 1 つの vector フィールドを含める必要があります。

また、skip_load_dynamic_field を使用して、dynamic field をロードするかどうかを決定できます。dynamic field は &#36;meta という名前の予約済み JSON フィールドであり、スキーマで定義されていないすべてのフィールドとその値をキーと値のペアで保存します。dynamic field をロードすると、フィールド内のすべてのキーがロードされ、フィルタリングと出力に使用できるようになります。dynamic field 内のすべてのキーがメタデータのフィルタリングと出力に関与しない場合は、skip_load_dynamic_field を True に設定します。

collection のロード後にさらにフィールドをロードするには、index の変更によって発生する可能性のあるエラーを避けるため、まず collection を解放する必要があります。

Collection の解放​

検索とクエリはメモリを大量に消費する操作です。コストを節約するため、現在使用していない collection を解放することをお勧めします。

次のコードスニペットは、collection を解放する方法を示しています。

python
# 8. Release the collection
client.release_collection(
collection_name="my_collection"
)

res = client.get_load_state(
collection_name="my_collection"
)

print(res)

# Output
#
# {
# "state": "<LoadState: NotLoad>"
# }