すべてのプロダクト
Search
ドキュメントセンター

Vector Retrieval Service for Milvus:コレクションの管理

最終更新日:Sep 24, 2025

Milvus のコレクションは、リレーショナルデータベースのテーブルに似ています。これらは、ベクトルデータとそれに関連するスカラーメタデータを整理および管理するための基本的な単位です。インデックス、パーティション、およびシャードを設定することで、データ処理フローをカスタマイズできます。これにより、データインジェスチョン、ストレージ、クエリ、および分析のためのエンドツーエンドのソリューションを作成できます。

前提条件

  • ローカルクライアントに PyMilvus ライブラリをインストールし、最新バージョンに更新していること。

    PyMilvus ライブラリをインストールしていない場合、または更新する必要がある場合は、次のコマンドを実行します。

    pip install --upgrade pymilvus
  • Milvus インスタンスを作成していること。詳細については、「Milvus インスタンスの作成」をご参照ください。

コレクションの作成

コレクションのクイック作成

名前とベクトルディメンションを指定することで、コレクションをクイック作成できます。

from pymilvus import MilvusClient

# Milvus クライアントを作成します。
client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus インスタンスのパブリックエンドポイント。
    token="<yourUsername>:<yourPassword>",  # Milvus インスタンスのユーザー名とパスワード。
    db_name="default"  # 接続するデータベースの名前。この例では、デフォルトのデータベースを使用します。
)

# milvus_collection という名前のコレクションを作成します。
client.create_collection(
    collection_name="milvus_collection",
    dimension=5
)

res = client.get_load_state(
    collection_name="milvus_collection"
)
# コレクションの現在の読み込みステータスを返します。
print(res)

このコードは、`id` (プライマリキー) と `vector` (ベクトルフィールド) の 2 つのフィールドのみを持つコレクションを作成します。`auto_id` と `enable_dynamic_field` プロパティはデフォルトで有効になっています。

  • auto_id: このプロパティを有効にすると、Milvus は各レコードに自動インクリメントのプライマリキーを自動的に割り当てます。プライマリキーの値を設定する必要はありません。

  • enable_dynamic_field: このプロパティを有効にすると、事前定義された `id` および `vector` フィールド以外のフィールドは動的フィールドとして扱われます。これらは、$meta という名前の特別なフィールドにキーと値のペアとして格納されます。このプロパティを使用すると、スキーマで定義されていないフィールドのデータを挿入できます。

これらの設定により、すべてのフィールドを事前に定義することなく、データを柔軟に挿入および管理できます。

カスタムコレクションの作成

カスタムコレクションを作成する際に、スキーマとインデックスパラメーターを指定できます。

from pymilvus import MilvusClient, DataType, time

# Milvus クライアントを作成します。
client = MilvusClient(
    uri="http://c-xxxx.milvus.aliyuncs.com:19530",  # Milvus インスタンスのインターネットアクセス可能なアドレス。
    token="<yourUsername>:<yourPassword>",  # Milvus インスタンスにログインするためのユーザー名とパスワード。
    db_name="default"  # 接続するデータベースの名前。この例では、デフォルトのデータベースを使用します。
)

# スキーマを作成します。
schema = MilvusClient.create_schema(
    auto_id=False,  # 自動 ID 生成を無効にします。
    enable_dynamic_field=True,  # 動的フィールドを有効にします。
)

# スキーマフィールドを追加します。
# test_id という名前の INT64 フィールドをプライマリキーとして追加します。
schema.add_field(field_name="test_id", datatype=DataType.INT64, is_primary=True)
# test_vector という名前の 768 次元の浮動小数点ベクトルフィールドを追加します。
schema.add_field(field_name="test_vector", datatype=DataType.FLOAT_VECTOR, dim=768)

# インデックスパラメーターを定義します。
index_params = client.prepare_index_params()

# インデックスを追加します。
index_params.add_index(
    field_name="test_id",  
    index_type="STL_SORT"  # インデックスタイプを設定します。
)


index_params.add_index(
    field_name="test_vector",  
    index_type="IVF_SQ8",      # インデックスタイプを設定します。
    metric_type="L2",          # L2 などのメトリックタイプを設定します。
    params={"nlist": 128}
)
# 指定されたスキーマとインデックスでコレクションを作成します。
client.create_collection(
    collection_name="milvus_collection",  # milvus_collection という名前のコレクションを作成します。
    schema=schema,
    index_params=index_params
)

time.sleep(5)

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

print(res)

コレクションとインデックスを別々に作成することもできます。次のコードは一例です。

# milvus_collection1 という名前のコレクションを作成します。
client.create_collection(
    collection_name="milvus_collection1",
    schema=schema,
)
# milvus_collection1 の読み込みステータスをクエリします。
res = client.get_load_state(
    collection_name="milvus_collection1"
)

print(res)
# milvus_collection1 のインデックスを作成します。
client.create_index(
    collection_name="milvus_collection1",
    index_params=index_params
)
# インデックス作成後の milvus_collection1 の読み込みステータスをクエリします。
res = client.get_load_state(
    collection_name="milvus_collection1"
)

print(res)

コレクションの表示

  • コレクションの詳細を表示できます。

    res = client.describe_collection(collection_name="milvus_collection")
    
    print(res)
    
  • 現在のデータベース内のすべてのコレクションを表示できます。

    res = client.list_collections()
    
    print(res)
    

コレクションの読み込みと解放

コレクションを読み込むと、Milvus は関連するインデックスファイルをメモリに読み込みます。コレクションを解放すると、Milvus はインデックスファイルをメモリからアンロードします。検索を実行する前に、コレクションをメモリに読み込む必要があります。

コレクションの読み込み

client.load_collection(
    collection_name="milvus_collection"
)

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

print(res)

コレクションの解放

client.release_collection(
    collection_name="milvus_collection"
)

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

print(res)

コレクションの削除

client.drop_collection(
    collection_name="milvus_collection"
)

client.drop_collection(
    collection_name="milvus_collection1"
)