分组向量检索
本文介绍如何在向量检索时将结果按照字段值进行分组返回。
背景介绍
在向量检索的实际应用中,有些场景需要将向量检索的结果分组返回。例如:
在 RAG 中,一篇文档往往需要拆分为多个段落,每个段落生成一个向量存入 DashVector。在向量检索时,为了结果的多样性,不希望所有结果都来自同一篇文档的段落,而是希望结果返回多篇文档,并且每篇文档下仅返回最相似的若干个段落。
在商品图像检索时,每个商品通常有多个商品图片,每个图片生成一个向量存入 DashVector。在向量检索时,为了结果的多样性,不希望所有结果都是同一个商品的图片,而是希望返回多样化商品,并且每个商品下仅返回最相似的若干个图片。
向量检索服务 DashVector 支持分组向量检索,对于上面的两个场景可以通过分组检索 Doc 接口分别设置group_by_field
为"文档 ID"和"商品 ID",然后执行分组向量检索。
使用示例
前提条件
已创建 Cluster
已获得 API-KEY
已安装最新版 SDK
插入带有 Field 的数据
说明
需要使用您的 api-key 替换示例中的 YOUR_API_KEY、您的 Cluster Endpoint 替换示例中的 YOUR_CLUSTER_ENDPOINT,代码才能正常运行。
执行分组向量检索
上面分组检索的示例结果如下:
限制说明
重要
group_by_field
只能指定新建 Collection 时通过fields_schema
参数定义的 Field 名称,Schema Free 字段不支持分组检索。group_count
和group_topk
均为尽力而为参数,实际返回的分组数(group_count
)和每个分组的 doc 数(group_topk
)可能少于所设置的值。DashVector 会优先保证分组数(group_count
)。过大的
group_count
和group_topk
会增加索引扫描量,从而导致接口耗时增加。当前group_count
最大值为 64,group_topk
最大值为 16。
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/23fad5be300c5ab43a8ad9f81】。文章转载请联系作者。
评论