パーティションの作成

Milvusでは、ベクトルデータを数個のパーティションに分割することができます。検索やその他の操作を特定のパーティションに制限することで、パフォーマンスが向上します。

コレクションは1つ以上のパーティションで構成されます。新しいコレクションを作成する際には、Milvusはデフォルトのパーティション _default を作成します。

以下の例では、コレクション booknovel という名前のパーティションを確立しています。

from pymilvus import Collection
collection = Collection("book")      # 既存のコレクションを取得
collection.create_partition("novel")
パラメータ 説明
partition_name 作成するパーティションの名前。
description (オプション) 作成するパーティションの説明。

制限事項

機能 最大制限
コレクション内のパーティション数 4,096

パーティションの存在を確認

指定したコレクション内に特定のパーティションが存在するかどうかを確認します。

from pymilvus import Collection
collection = Collection("book")      # 既存のコレクションを取得
collection.has_partition("novel")

すべてのパーティションをリスト

from pymilvus import Collection
collection = Collection("book")      # 既存のコレクションを取得
collection.partitions

パーティションの削除

from pymilvus import Collection
collection.drop_partition("novel")

パーティションのロード

コレクション全体をロードする代わりに、特定のパーティションをメモリにロードすることで、メモリ使用量を大幅に削減できます。Milvusのすべての検索およびクエリ操作はメモリ内で実行されます。

バージョン2.3.0以降、Milvusはパーティション操作を強化し、階層的なロードおよび解放操作をサポートしています。これにより、次の操作の任意の組み合わせを実行できます。

  • ロードされたコレクションをロード解除する。
  • コレクション内の特定のパーティションをロードする。
  • パーティションをロードした後、その所属するコレクションをロードする。
  • パーティションをロードしてから解放前に再度ロードする。

Milvusでは、ユーザーがパーティションを複数のレプリカとしてロードし、追加のクエリノードのCPUおよびメモリリソースを活用することができます。この機能は現在のバージョンでPyMilvusを介してサポートされています。

from pymilvus import Collection
collection = Collection("book")      # 既存のコレクションを取得
collection.load(["novel"], replica_number=2)

from pymilvus import Partition
partition = Partition("novel")       # 既存のパーティションを取得
partition.load(replica_number=2)

レプリカ情報の取得

ロードされたレプリカの情報を表示できます。

from pymilvus import Partition
partition = Partition("novel")       # 既存のパーティションを取得
partition.load(replica_number=2)     # 2つのレプリカを持つパーティションをロード
result = partition.get_replicas()
print(result)

パーティションの解放

検索やクエリ後にメモリ使用量を削減するために、パーティションをメモリから解放する方法。

バージョン2.3.0以降、Milvusはパーティション操作を強化し、階層的なロードおよび解放操作をサポートしています。これにより、次の操作の任意の組み合わせを実行できます。

  • ロードされたコレクションを解放する。
  • ロードされたコレクション内の特定のパーティションを解放する。
  • ロードされたパーティションを解放する。
  • コレクション内の部分的にロードされたパーティションを解放する。
from pymilvus import Partition
partition = Partition("novel")       # 既存のパーティションを取得
partition.release()