做過 RAG 系統的朋友,十之八九都體驗過這種糾結:
用向量檢索速度是快,但召回效果常常差強人意。
換上交叉重排精確度上去了,但那可憐的推理速度,尤其是遇到長文件時,用戶等到直想重新整理頁面。
針對這個痛點,哈爾濱工業大學深圳校區與深圳灣區物聯網路研究院最近開源了一個非常有意思的重排模型系列:KaLM-Reranker-V1,在保證極高精確度的同時,把長文件重排效率拉高了數倍甚至上百倍。
01 / 它是如何實現「又快又準」的?
傳統的 Cross-Encoder 之所以慢,是因為每次有新查詢進來,模型都要把「查詢」和「整個文件」拼在一起重新做一次完整的 Self-Attention 計算。文件越長,算力消耗呈指數級上升。
KaLM-Reranker 引入了一種叫作「快速非後期互動」(FBNL)的架構,簡單來說,它做到了「解耦」:
文件提前存好:編碼器可以離線把文件提前預編碼,生成一份可重複使用的表示。
只算查詢部分:線上推理時,解碼器只需要一邊處理輸入的 Query,一邊去和已經壓縮好的文件表示做交叉注意力。
如此一來,每次查詢時就不用重新去啃幾千字的長文本了,計算量直接暴跌。
02 / 像「俄羅斯套娃」一樣的壓縮技術
光是解耦還不夠,如果文件表示佔用的空間太大,記憶體和傳輸也是個問題。在這裡引入了一個很妙的設計:Matryoshka 套娃嵌入池化。
它允許我們在訓練時,把文件在序列維度上按照不同的比例進行均值池化壓縮。這意味著,同一個模型在實際部署時,你可以根據手頭的硬體資源和延遲要求,靈活調整壓縮比:
追求極致速度:把文件壓得更狠,算力開銷降到最低。
追求極致精確度:減少壓縮比例,保留更多細節。
這種靈活的「效率-效果」折衷,給實際工程落地留出了極大的調校空間。
03 / 實測數據:到底有多快?
技術說得再好,終究要看跑分。在檢索領域公認的 BEIR 基準測試上,KaLM-Reranker 展現出了極高的性價比:
輕量版 Nano(0.27B):平均 nDCG@10 達到 57.41,在保持優秀精確度的前提下,效率比我們熟知的 gte-reranker-base 提升了約 10 倍。
旗艦版 Large(4B):平均 nDCG@10 達到 62.87,與同級別的 bge-reranker-v2-gemma 相比,效率提升了近 2 倍。
特別是在長文件情境下,由於避免了重複計算全文,其線上解碼的 FLOPs 大幅降低。論文裡的模擬數據顯示,長文本下的理論效率提升最高可達 203.4 倍。
此外,模型還採用了多階段訓練策略,包括無指令通用學習、任務特定指令微調,以及利用教師模型進行知識蒸餾。這讓它在面對「難負例」長得很像但其實無關的干擾文件時,依然有極強的辨識能力。
寫在最後
在 RAG 的落地應用中,效能往往是決定用戶體驗的最後一哩路。KaLM-Reranker-V1 的開源,為我們在 Cross-Encoder 的高精確度和 Bi-Encoder 的低延遲之間,提供了一個非常實用的平衡點。尤其是它對長文件處理效率的提升,對於文件庫問答、知識庫檢索等情境非常具有實用價值。
你目前在 RAG 業務中用的是哪款 Reranker?在長文本檢索時遇到過哪些效能瓶頸?歡迎在留言區聊聊你的看法。
引用:
KaLM-Reranker-V1: Fast but Not Late Interaction for Compressed Document Reranking:https://arxiv.org/pdf/2606.22807
往期精選: