?
? ?現在是北京時間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