使用阿里云向量检索服务DashVector实现关键词感知的向量检索并不只看表面做法,关键还要理解相关条件、限制和后续影响。
一.概述
本文以我个人搭建的房源检索服务为例,详细叙述了如何使用阿里云的 DashVector 产品实现“带有关键词感知的向量检索”。关于“关键词感知的向量检索”具体说明可以参见阿里云官方文档,这里仅对文档中没有详细叙述的实际操作过程进行补充。
二.操作过程
2.1 DashVector API-KEY 申请
登录 阿里云向量检索服务 DashVector 控制台 点击创建 api-key申请。注意:关闭后不可复制

2.2 创建 Cluster
创建集群(可以类比成关系型数据库里的一个数据库),阿里云会给一定的免费额度供练习使用。

2.3 创建collection
可以类比成关系型数据库的一个表



collection 名称:集合的名称。向量维度:1536 这个跟我们进行 稠密向量生成的Embedding模型有关,我使用的是qwen3.7-text-embedding 支持 1536 维度(因为有免费额度-。-)关于向量维度的更多说明,可以参考官方文档。距离度量方式:这里要注意一定要选 DotProduct只有 DotProduct 模式才支持稀疏向量和稠密向量混合检索,也就是所谓的关键词感知检索。自定义 schema :向量数据库在存储向量数据的同时,给用户一定自由度扩展一些字段来存储额外的数据。例如这里我存储了一个 id.代表我的房源主键。自定义 shcema 的作用有两个,一个是信息检索结果中会附带这些信息使用比较方便。另外,DashVector 的检索接口支持通过这些 schema做条件查询。
所以我们创建完成的 collection 的一条数据的结构如下:
我们在向 collection 中注入数据的时候,也需要按这种形式组织数据,先用 embeding 模型生成 vector ,再用对应的稀疏向量生成工具 DashText 生成稀疏向量,在拼接上我们自定义的 fields 存储到 collection.
检索时,我们将 关键词同样处理成,稠密和稀疏向量,进行匹配召回就可以了。召回的信息中,会附带我们自己的 fields.这样就召回了我们提前预定的关键信息。
2.4 生成及插入向量数据
我的原始数据格式 house_vectors.json 这里我希望通过描述信息,召回对应房源 id 即可,所以 schema 中仅定义了一个 id.
生成 稠密及稀疏向量 到 output_vectors.json
将生成的 output_vectors.json 上传到 collection(这里其实也可以直接将上一步生成的数据直接调用接口存储到 collection,我这里只是多存储了一份中间文件)
上传成功后,我们在平台的 collection 中可以看到导入的数据,至此我们的向量数据处理全部完成。可以看到存储的是向量信息。

2.5 向量检索
三.注意事项及总结
文中使用的阿里云百炼平台的 api-key和 api 地址,需要去 百炼平台 提前申请。检索及存储向量时,要使用相同的向量处理模型和工具,注意向量维度也要保持一致。稠密向量维度要与 collection 中定义的保持一致。
参考资料:https://help.aliyun.com/document_detail/2586282.html?spm=a2c4g.11174283.0.0.71af582bNPgka4