欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 如何使用DashVector的多向量检索

如何使用DashVector的多向量检索

2025/2/25 0:06:39 来源:https://blog.csdn.net/qq_41362382/article/details/143769382  浏览:    关键词:如何使用DashVector的多向量检索

本文介绍如何使用DashVector的多向量检索功能。

在某些AI检索的场景,会涉及一个实体对应多个向量,在检索时希望通过多个向量检索来找到最可能的实体,例如:

  • 在自然语言处理中,标题和文档分别抽取为不同的向量特征,需要根据标题向量和文档向量同时做检索。

  • 在商品检索时,商品的图片和文字分别抽取为不同的向量特征,需要根据图片向量和文字向量同时做检索。

为了满足这些需求,DashVector支持了多向量检索。

使用示例

前提条件

  • 已创建Cluster:创建Cluster。

  • 已获得API-KEY:API-KEY管理。

  • 已安装最新版SDK:安装DashVector SDK。

创建多向量集合

说明

需要使用您的api-key替换示例中的 YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

import dashvector
import numpy as np
from dashvector import VectorParam, Doc, WeightedRanker, VectorQuery, RrfRankerclient = dashvector.Client(api_key='YOUR_API_KEY',endpoint='YOUR_CLUSTER_ENDPOINT'
)
ret = client.create('multi_vector_demo',vectors={"title": VectorParam(4),"content": VectorParam(6, metric="euclidean"),},fields_schema={'author': str,}
)
assert ret

插入数据

说明

insert/upsert要求至少一个向量字段有值。

collection = client.get(name='multi_vector_demo')
docs = []
for i in range(10):docs.append(Doc(id=str(i),vectors={"title": np.random.random(4),"content": np.random.random(6)},))
ret = collection.insert(docs)
print(ret)

执行检索

说明

  1. 检索时采用的策略为多个向量分别执行检索后融合排序。当前融合排序支持两种策略:RrfRanker和 WeightedRanker。不指定时,默认为RrfRanker(rank_constant=100)

  2. VectorQuery 支持的其他参数见 向量检索高级参数 。

title_vector = [0.1, 0.2, 0.3, 0.4]
content_vector = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
vectors = {"title": VectorQuery(vector=title_vector, num_candidates=10),"content": VectorQuery(vector=content_vector),
}
ret = collection.query(vector=vectors,include_vector=False,# 使用RRF融合排序# rerank=RrfRanker(rank_constant=100)# 使用加权融合排序rerank=WeightedRanker(weights={"title": 1.0, "content": 1.0}),topk=20
)
assert ret
print(ret.output)# 使用单个向量执行检索
ret = collection.query(vector={"title": VectorQuery(vector=title_vector)})
assert ret
print(ret.output)# 使用单个向量执行分组向量检索
ret = collection.query_group_by(title_vector, group_by_field='author', vector_field='title')
assert ret
print(ret)

限制说明

重要

  1. 当前单个集合最多支持4个向量字段。

  2. 多向量集合暂不支持插入sparse特征。

  3. 随向量字段的个数增加,Cluster中可插入的Doc条数会减少,插入和检索的性能会下降。

  4. 检索时允许只对部分向量做检索,集合中包含n个向量字段时,允许使用1-n个向量字段做向量检索,允许使用其中的任意一个向量字段做分组向量检索。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词