向量检索高级参数
本文介绍如何设置向量检索高级参数。
设置 多向量检索时每个向量的候选个数
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)))
重要
-
生产环境不建议开启线性检索,检索性能会显著下降。
-
开启线性检索后,不一定保证召回达到100%.
2.1 对于开启量化的集合,会使用量化后的数据做计算,召回可能小于100%.
2.2 对于未开启量化的集合,召回为100%.
调整HNSW检索的ef参数
print(collection.query(vector=VectorQuery(np.random.rand(768), ef=100)))
通过调整ef值,可以在检索性能和召回之间获得一定的权衡:增大ef值,会提升召回但可能降低检索性能;减小ef值,会提高检索性能但可能降低召回。
ef 的取值范围为[0, 4294967295],其中0表示使用默认ef值。
说明
-
ef 取值超过一定值之后可能性能/召回结果达到稳定,取更大的值也不再变化。
-
建议生产环境不要使用过大的ef,以免影响检索效率。
RNN 检索
RNN(Radius nearest neighbour)在一般的向量检索基础上增加了限制条件,只返回距离query向量的距离不超过阈值radius的文档。
print(collection.query(vector=VectorQuery(np.random.rand(768), radius=1.0)))
对于不同的距离类型,radius含义不同
-
对于欧式距离和余弦距离,返回 score <= radius 的doc。
-
对于内积距离,返回 score >= radius 的doc。
说明
RNN 检索返回的结果条数仍然受topk限制。
阿里云向量检索服务 DashVector 免费试用进行中,玩转大模型搜索,快来试试吧~
了解更多信息,请点击:https://www.aliyun.com/product/ai/dashvector
了解更多阿里云向量检索服务DashVector的使用方法,请点击:
https://help.aliyun.com/product/2510217.html?spm=a2c4g.2510217.0.0.54fe155eLs1wkT
浙公网安备 33010602011771号