创建分区
Milvus允许将向量数据划分为少数几个分区。搜索和其他操作可以限定在一个分区中,以提高性能。
集合由一个或多个分区组成。在创建新的集合时,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()