现在是北京时间23年12月10日。当前es最新版本还是es8.11版本。我们可以期待一下不久的将来,es的8.12版本看到大幅度的检索性能提升。受益于 Lucene 9.9版本,内核带来的大幅提升!
此次向量检索利用底层指令fma会性能提升5%。并且还提供了向量点积的能力。重点较大幅度提升了多关键词匹配topK的搜索场景。
核心提升两个场景
- 一次检索中。很多个检索关键词(例如(term_1 OR term_2 OR ... OR term_n)),之间and或者or操作的检索在topK召回的时候大幅提速。
- 向量线索提速。
详细提升细节
以下两点,是提升搜索性能的细节。其主要思路是,跳过更多的数据。(这里就不翻译提取来。害怕误人子弟。大家想了解为什么,一定要看下边的原文)
- 使用许多和/或高频术语(注释 FK)为 top-k 查询带来加速
- 使用 block-max MAXSCORE 进行更多跳跃(注释 FU)
以下两点,是向量检索的提升细节。
- 使用 SIMD 指令加速矢量搜索
- FMA 式向量相似度计算
基准测试结果对比
以下是基准测试在 Lucene 9.6(2023 年 5 月)和 Lucene 9.9(2023 年 12 月)之间观察到的一些加速:
- AndHighHigh:快 35%
- AndHighMed:快 15%
- OrHighHigh:快 60%
- OrHighMed:快 38%
- CountAndHighHigh:快 15%
- CountAndHighMed:快 11%
- CountOrHighHigh:快 145%
- CountOrHighMed:快 155%
- TermDTSort:快 24%
- TermTitleSort:快 290%(不是拼写错误!)
- TermMonthSort:快 7%
- DayOfYearSort:快 25%
- 矢量搜索:速度提高 5%
这里可以看到lucene所有的基准测试结果:
Lucene nightly benchmarks
参考es官方博客:Apache Lucene 9.9, the fastest Lucene release ever — Elastic Search Labs