Milvus搜索中的Level参数

怎样平衡搜索的速度和准确性?

什么是Level参数?

Level参数就像是搜索时的"仔细程度"。数值越大,搜索越仔细,结果越准确,但速度会变慢。

基本知识

看看Level值如何影响搜索

拖动下面的滑块,看看不同Level值的效果:

1 25 50 75 100

当前Level值: 1

L1

第一层 · 粗略过滤

快速浏览主要候选数据,只锁定最明显的匹配项,速度最快但可能遗漏。

L2

第二层 · 精选候选

扩大搜索圈,检查更多候选集,准确率提升,耗时略有增加。

L3

第三层 · 深度匹配

对主候选执行更精细的相似度计算,找到大部分相关结果。

L4

第四层 · 全量校验

逐条验证候选,确保高准确率,同时需要更多资源与时间。

L5

第五层 · 极致精确

像专家复查一样,对所有潜在结果逐个确认,几乎不会漏掉任何相关项。

当前搜索层级:L1 · 粗略过滤

搜索速度

极快

准确度

较低

耗费资源

很少

Level值较小 (1-25)

像是快速浏览:

  • 搜索速度非常快
  • 占用电脑资源很少
  • 可能会漏掉一些本应找到的结果

适合:需要快速得到结果,不要求百分百准确的情况

Level值中等 (26-75)

像是认真查找:

  • 搜索速度和准确度平衡
  • 占用电脑资源一般
  • 能找到大部分应该找到的结果

适合:大多数日常使用场景

Level值较大 (76-100)

像是仔细搜寻:

  • 搜索速度比较慢
  • 占用电脑资源较多
  • 结果非常准确,几乎不会漏掉任何相关内容

适合:对结果准确性要求极高的情况,如医疗诊断、安全识别

找书的例子

想象你在图书馆找一本特定的书:

  • Level = 1:你只快速扫一眼书架上明显的书名,很快但可能会错过相似的书
  • Level = 50:你仔细看每本书的目录,速度中等但能找到大部分相关书
  • Level = 100:你把整个图书馆的每本书的内容都检查一遍,很慢但几乎不会漏掉相关的书

如何选择合适的Level值?

需要考虑这些因素

选择建议

从Level=1开始尝试,如果觉得结果不够准确,再慢慢增加Level值