写点什么

向量检索高级参数

作者:DashVector
  • 2025-12-23
    陕西
  • 本文字数:828 字

    阅读完需:约 3 分钟

向量检索高级参数

本文介绍如何设置向量检索高级参数。

设置 多向量检索时每个向量的候选个数

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,    topk=20,)
复制代码


上面的代码中,设置 title 向量召回 10 条结果,content 向量没有设置 num_candidates,召回 topk=20 条结果。

开启线性(暴力)检索

print(collection.query(vector=VectorQuery(np.random.rand(768), is_linear=True)))
复制代码


重要


  1. 生产环境不建议开启线性检索,检索性能会显著下降。

  2. 开启线性检索后,不一定保证召回达到 100%.

  3. 2.1 对于开启量化的集合,会使用量化后的数据做计算,召回可能小于 100%.

  4. 2.2 对于未开启量化的集合,召回为 100%.

调整 HNSW 检索的 ef 参数

print(collection.query(vector=VectorQuery(np.random.rand(768), ef=100)))
复制代码


通过调整 ef 值,可以在检索性能和召回之间获得一定的权衡:增大 ef 值,会提升召回但可能降低检索性能;减小 ef 值,会提高检索性能但可能降低召回。


ef 的取值范围为[0, 4294967295],其中 0 表示使用默认 ef 值。


说明


  1. ef 取值超过一定值之后可能性能/召回结果达到稳定,取更大的值也不再变化。

  2. 建议生产环境不要使用过大的 ef,以免影响检索效率。

RNN 检索

RNN(Radius nearest neighbour)在一般的向量检索基础上增加了限制条件,只返回距离 query 向量的距离不超过阈值 radius 的文档。


print(collection.query(vector=VectorQuery(np.random.rand(768), radius=1.0)))
复制代码


对于不同的距离类型,radius 含义不同


  1. 对于欧式距离和余弦距离,返回 score <= radius 的 doc。

  2. 对于内积距离,返回 score >= radius 的 doc。


说明

RNN 检索返回的结果条数仍然受 topk 限制。



阿里云向量检索服务 DashVector 免费试用进行中,玩转大模型搜索,快来试试吧~了解更多信息,请点击

了解更多阿里云向量检索服务DashVector的使用方法,请点击

用户头像

DashVector

关注

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

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

评论

发布
暂无评论
向量检索高级参数_人工智能_DashVector_InfoQ写作社区