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

ロードとリリース

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

事前準備​

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

  • 外部コレクションの場合は、インデックスを作成する前に、コレクションとボリュームの間でデータを同期するサブ秒リフレッシュを呼び出していること。

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

ロードの動作​

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

環境メモリの動作実行の詳細
サービングクラスター内のマネージドコレクションフルロードすべてのインデックスとデータ(ベクトルおよびスカラーフィールド)をメモリに直接ロードし、高性能なアクセスを実現します。
スタンドアロンデータベース内の外部コレクションインデックスのみのロードインデックスのみをメモリにロードします。生データは、アクティブな検索またはクエリの実行中にオンデマンドでディスクから取得されます。

コレクションをロードする​

コレクションをロードすると、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_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つのベクトルフィールドの名前を含める必要があります。

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

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

コレクションをリリースする​

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

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

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