分区 Partition
理解 Partition
向量检索服务 DashVector 的 Collection 具有分区(Partition)的能力,同一个 Collection 下的 Doc 可通过不同的 Partition 进行物理和逻辑上的分区。各种 Doc 操作(如插入 Doc、检索 Doc 等。若指定 Partition,则该操作将限定在该指定的 Paritition 内进行。通过合理的 Partition 设置,可有效提升 Doc 操作的效率。
同一个 Collection 下,可以创建若干个 Partition,具体限制见约束与限制
每个 Partition 通过唯一的名称进行标识,同一个 Collection 下的 Partition 名称不可重复;
同一个 Collection 下的所有 Partition,具有相同的 Schema,如向量维度、向量数据类型、度量方式、Fields 定义等;
每个 Collection 默认自带一个无法删除的 Partition,当各种 Doc 操作(如插入 Doc、检索 Doc 等,不指定 Partition 时,等价于使用该默认 Partition;
Partition 需通过 API 调用显示的创建和删除。
Partition 使用场景举例
在 Collection 中使用 Partition 能显著提高 Query 的性能,但并非所有场景都建议使用。当数据量较小时,使用 Partition 收益不明显。当数据量较大、但没有合适的划分字段时,同样不建议使用 Partition。例如,如果没有合适的划分字段但又设置了多个 Partition 时,检索时可能需要跨多个 Partition 进行多次 Query,检索性能将低于单个 Partition 的一次 Query。
下面列举几个典型的适合 Partition 场景供参考。
电商图搜场景
例如某跨境电商用户,有 2000w 服装商品图片,需要实现以图搜图业务场景。商品有固定多个分类(鞋子,裙子,裤子等),商品提特征后按类别入库,每个分类对应一个 Partition,查询时用户显示指定类别或用户不指定由分类模型确定类别。
视频监控场景
例如某视频监控厂商,需要对一工业园区的 1000 个摄像头采集的视频进行抽帧,识别提取车辆特征后,导入 DashVector 向量库用于后续搜索,生成车辆轨迹等业务场景,但数据只需保留 30 天,按日期每天创建 Partition,并定期删除过期的 Partition。
商标侵权检测
例如某商标代理商收集了一个 5000w 规模的商标数据库,需要快速查询相似商标判定是否侵权。按结构分为文本商标、图形商标、数字商标、字母商标等 9 个分类,每个分类数据入库 DashVector 时对应一个 Partition。查询时指定 Partition,只从特定类别中查询。
多语言问答系统
某电商国际化知识库团队,需要根据用户所使用的语言类别来查询对应语言的相似问题,比如要支持中文、英文、法文三种语言。在知识库内容经过 Embedding 后,分别导入 Chinese、English、French 三个 Partition 中,查询时,根据用户所使用的语言类别选择对应的 Partition 进行查询。
多租户
Partition 也可用来支持多租户场景。例如某电商服务商为其下小微电商提供以图搜图能力,可在一个 Collection 中创建多个 Partition 对应多个客户,实现了数据的物理隔离、保证安全的同时,又节约了成本。
Partition 使用示例
前提条件
已创建 Cluster
已获得 API-KEY
已安装最新版 SDK
代码示例
说明
需要使用您的 api-key 替换示例中的 YOUR_API_KEY、您的 Cluster Endpoint 替换示例中的 YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/5c6204d75bfc0181267ac57a1】。文章转载请联系作者。
评论