パーティションの作成
Milvusでは、ベクトルデータを数個のパーティションに分割することができます。検索やその他の操作を特定のパーティションに制限することで、パフォーマンスが向上します。
コレクションは1つ以上のパーティションで構成されます。新しいコレクションを作成する際には、Milvusはデフォルトのパーティション _default
を作成します。
以下の例では、コレクション book
で novel
という名前のパーティションを確立しています。
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()