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

ロードと解放

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

前提条件

コレクションをロードする前に、以下を確認してください。

  • 外部コレクションの場合は、インデックスを作成する前に、sub-second refresh を呼び出してコレクションとボリュームの間でデータを同期していることを確認してください。

  • 少なくともすべてのベクトルフィールドにインデックスを作成しており、必要に応じて一部のスカラーフィールドにも作成していること。

ロードの挙動

同じロードリクエストが外部コレクションとマネージドコレクションの両方に適用されますが、外部コレクションのロード戦略は対象アーキテクチャによって異なります。

環境メモリの挙動実行の詳細
サービングクラスター内のマネージドコレクション完全ロード高パフォーマンスでアクセスできるように、すべてのインデックスとデータ(ベクトルフィールドとスカラーフィールド)を直接メモリにロードします。
スタンドアロンデータベース内の外部コレクションインデックスのみロードインデックスのみをメモリにロードします。生データは、実際の検索やクエリ時に必要に応じてディスクから取得されます。

コレクションのロード

コレクションをロードすると、Zilliz Cloud は検索およびクエリに迅速に応答できるよう、インデックスファイルとすべてのフィールドの生データをメモリにロードします。コレクションのロード後に挿入されたエンティティは、自動的にインデックス化され、ロードされます。

以下のコードスニペットは、コレクションをロードする方法を示しています。

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 という名前のコレクションをすでに作成しており、そのコレクションに my_idmy_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 つのベクトルフィールドの名前を必ず含める必要があります。

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

コレクションのロード後にさらに多くのフィールドをロードするには、インデックス変更によって発生する可能性のあるエラーを避けるため、まずコレクションを解放する必要があります。

コレクションの解放

検索とクエリはメモリ集約型の操作です。コストを節約するため、現在使用していないコレクションは解放することをお勧めします。

以下のコードスニペットは、コレクションを解放する方法を示しています。

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>"
# }
Ctrl I