分享
本文介绍如何设置向量检索高级参数。
**设置** 多向量检索时每个向量的候选个数
----------------------------------------------------------------------------
```python
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条结果。
**开启线性(暴力)检索**
-------------------------------
```python
print(collection.query(vector=VectorQuery(np.random.rand(768), is_linear=True)))
```
**重要**
1. 生产环境不建议开启线性检索,检索性能会显著下降。
2. 开启线性检索后,不一定保证召回达到100%.
2.1 对于开启量化的集合,会使用量化后的数据做计算,召回可能小于100%.
2.2 对于未开启量化的集合,召回为100%.
**调整HNSW检索的ef参数**
----------------------------------
```python
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的文档。
```python
print(collection.query(vector=VectorQuery(np.random.rand(768), radius=1.0)))
```
对于不同的距离类型,radius含义不同
1. 对于欧式距离和余弦距离,返回 score \<= radius 的doc。
2. 对于内积距离,返回 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
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信43 次点击
上一篇:2023前哨科技特训营(第三季)
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传