写点什么

如何使用 DashVector 的多向量检索

作者:DashVector
  • 2025-12-16
    浙江
  • 本文字数:1259 字

    阅读完需:约 4 分钟

如何使用DashVector的多向量检索

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


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


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

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


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

使用示例

前提条件

  • 已创建 Cluster

  • 已获得 API-KEY

  • 已安装最新版 SDK

创建多向量集合

说明


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


import dashvectorimport numpy as npfrom dashvector import VectorParam, Doc, WeightedRanker, VectorQuery, RrfRanker
client = 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. 检索时采用的策略为多个向量分别执行检索后融合排序。

  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 retprint(ret.output)
# 使用单个向量执行检索ret = collection.query(vector={"title": VectorQuery(vector=title_vector)})assert retprint(ret.output)
# 使用单个向量执行分组向量检索ret = collection.query_group_by(title_vector, group_by_field='author', vector_field='title')assert retprint(ret)
复制代码

限制说明

重要


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

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

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


用户头像

DashVector

关注

还未添加个人签名 2024-05-14 加入

向量检索服务DashVector基于通义实验室自研的高效向量引擎Proxima内核,提供具备水平拓展能力的云原生、全托管的向量检索服务。

评论

发布
暂无评论
如何使用DashVector的多向量检索_数据库_DashVector_InfoQ写作社区