跳到主要內容
AI News HubLIVE
站內改寫4 分鐘閱讀

無需大語言模型的弱檢索預測

文章摘要

大多數檢索系統對所有查詢使用單一管道,這種做法既不合適:單一管道對困難查詢服務不足,對簡單查詢則浪費計算資源。本文提出了無需大語言模型的廉價信號——如分數分散和檢索器一致性——來檢測弱檢索,從而實現僅在需要時進行選擇性升級。

來源Qdrant Blog作者: [email protected] (Andrey Vasnetsov)
無需大語言模型的弱檢索預測
報告錯誤

更正渠道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

大多數檢索系統對所有查詢運行單一管道,這是錯誤的默認設置:單次遍歷對困難查詢服務不足,而對每個查詢都進行重排序或重寫則在簡單查詢上浪費計算。更糟糕的是,單次遍歷會靜默失敗。當相關文檔從未到達頂部時,系統仍然從其獲取的任何內容中給出答案,沒有任何跡象表明出了問題。

昂貴的修復方法(如交叉編碼器、ColBERT晚交互、查詢重寫和解構)已廣為人知,因此真正的問題是什麼時候使用它們:理想情況下,在支付任何費用之前廉價地捕捉到弱檢索,並且只升級需要升級的查詢。但是,什麼能廉價地告訴你檢索是弱的?這取決於你的檢索如何失敗,我們在三個語料庫上進行了測量。

弱檢索的定義

檢測弱檢索始於一個可測量的定義。只有前幾個結果被使用:提供給模型的前k個塊或向用户顯示的頁面。稱之為窗口。好的檢索將查詢所需的所有證據放入窗口;檢索是弱的,即使更深的召回率看起來很好,只要缺少一個證據。

將窗口設置為你係統消耗的任何大小。在標記分割中,你知道每個查詢需要哪些文檔,弱是一個你可以預測的二元標籤。

廉價信號

信號是從結果中計算出的預測弱證據的數字。兩個標準:它在標記數據上區分好的檢索和弱的檢索;並且它足夠廉價,可以在每個查詢上運行。“廉價”排除了明顯的做法:在每個查詢上詢問LLM“這足夠嗎?”會增加一個模型調用到你正在保護的路徑。這裏的信號讀取檢索器已經返回的內容,或者最多一次額外的Qdrant查詢。熱路徑中沒有LLM。

這些信號都不是新的:預測檢索是否成功是查詢性能預測(QPP),而dense_variance接近其未歸一化的查詢承諾。貢獻不是新的預測器,而是哪些已知的預測器值得其成本,以及適用於哪種語料庫。

系列的信號包括:高度(最大分數)、分散度(稠密方差)、覆蓋率(證據覆蓋率)和一致性(稠密與稀疏或稠密模型間)。直覺是:自信的檢索器將其頂部分數分散開;迷失的檢索器將它們聚攏。覆蓋率檢查查詢中的實體是否出現在檢索到的文本中。一致性是指當兩個檢索器或兩個稠密模型返回不同的文檔時,其中一個通常是迷失的,尤其是在術語和詞彙表外術語上。

信號的計算方式

分散信號是檢索器分數的總體方差。dense_variance讀取原始稠密排序,一次額外的Qdrant查詢重用你已經嵌入的查詢向量,因此沒有額外的模型調用。兩種一致性信號都是前k集合重疊。retriever_divergence比較稠密和稀疏排序;dense_agreement平均兩個或多個獨立稠密模型的重疊。無論哪種方式,不一致意味着弱檢索。

一致性信號不是免費的:dense_agreement運行額外的稠密模型,每個查詢幾個嵌入。但仍然比LLM判斷便宜得多。

哪些信號觸發取決於失敗模式

通過AUC(0.5隨機,1.0完美)評估每個信號在標記分割上區分好與弱檢索的能力。我們在三個不同失敗方式的語料庫上運行了所有信號:MuSiQue(多跳QA)和BEIR集合中的NFCorpus(醫學術語)和SciFact(科學主張)。

沒有單一信號在所有三個上都是最好的,哪些信號值得計算取決於語料庫的失敗方式:

詞彙不匹配(NFCorpus):在這個語料庫中,術語和詞彙表外術語似乎使稠密和稀疏模型以及獨立稠密模型在弱查詢上不一致。一致性信號從接近隨機上升到0.73到0.76,與分散度持平,這是測量它們值得的唯一情況。

排序精度(SciFact):正確文檔被檢索但排名太低。分散度和高度捕捉到它(0.75到0.76);一致性信號沒有貢獻。

可達性(MuSiQue):答案需要一個查詢無法表達的跳轉,因此第一次檢索看起來自信即使錯誤。最佳廉價信號僅達到0.73,一致性信號下降到接近隨機:沒有廉價信號能可靠地捕捉到缺失的跳轉,因此修復方法是解構(到達下一跳的新查詢),而不是更好的門控。

三個基準無法產生通用信號,因此可交付的是方法,而不是默認值:在自有數據上測量分離度並保留有效的信號。一個可能泛化的模式是上限:當失敗是可達性而非嵌入混淆時,結果看起來健康,沒有廉價信號能察覺到。

找到你的信號

獲勝的信號不可遷移,但方法可以。在校準分割上,通過分離度評分每個候選信號:使用roc_auc_score,並取max(auc, 1-auc)作為分離度,無論方向如何。兩條規則:保留分離度高於閾值(0.65是合理的起點)的信號,並刪除任何與更強信號冗餘的信號(絕對相關性高於0.85),因為冗餘信號增加成本而非信息。在校準分割上設置閾值;保留測試分割用於最終數字。讓失敗模式首先指引你:一致性信號適用於術語或標識符密集的語料庫,分散度和高度適用於精度缺失,然後用數字確認,因為獲勝者是語料庫特定的。

將信號轉化為門控

閾值將信號轉化為決策。將所選信號定向為越低表示越弱,對在弱檢索上觸發高值的信號(如retriever_divergence)取負,因此單個閾值決定:低於它,將檢索視為弱並升級:

function retrieval_is_weak(result) { return signal(result) < FLOOR; // signal oriented so lower means weaker }

閾值是一個權衡:提高它以捕捉更多弱檢索並升級更多,降低它以減少升級並遺漏更多。一個良好的默認是最大化校準集上的捕捉率減去誤報率(Youden點);當遺漏成本高於額外升級時,以召回率為目標,例如90%。如果兩個信號分離良好且幾乎不相關,則任一觸發時門控。

對弱檢索採取行動

升級到什麼是容易的選擇:重排序、重寫、解構、放寬過濾器或交給人工。門控不在乎哪個;昂貴的是是否決定,而它在每個查詢上免費做出決定。升級不能做的事是發明語料庫中不存在的證據:當沒有東西可找時,勝利是檢測到弱檢索並避免從薄弱的證據中回答。可運行的示例將門控連接到完整的自我糾正循環。

將此法應用於你的語料庫

這裏的勝者不可移植,但配方是:

定義窗口和每個查詢所需的證據。 在校準分割上標記弱檢索。 基準測試廉價信號;保留分離的,刪除冗餘的。 將勝出信號閾值化為門控,僅在其觸發時升級。

檢索質量可以從結果的廉價統計中觀察到,但只有當失敗是這些統計能看到的類型時。在自有數據上測量哪個信號是那樣的。

相關工作

這項工作與糾正性和適應性檢索並列。區別在於決策來源:已檢索內容的廉價統計,沒有額外的模型調用,沒有需要訓練的內容。查詢性能預測有許多檢索後預測器;最便宜的預測器能遷移多遠以及其上限在哪裏是這裏的問題。CRAG訓練檢索評估器,Self-RAG微調生成器以批評自身上下文;兩者都將訓練好的模型放在本工作使用免費統計的位置。Adaptive-RAG在檢索前根據查詢複雜度路由,本文反對這種查詢形狀方法:根據獲得的證據進行門控,而不是問題形狀。充分上下文工作使用LLM判斷而不是免費信號來詢問同樣的問題。完整的循環、糾正措施和評估框架在自我糾正檢索循環工作坊中。對於升級到的構建塊,參見晚交互模型、混合搜索和查詢解構。

展開要點與分析

文章情報

投資人進階

要點

  • 弱檢索發生在所需證據未出現在前k個結果中,即使更深層次召回率很高。
  • 廉價信號如稠密方差(分散度)、稠密與稀疏檢索器的一致性以及最高分數,可預測弱檢索,AUC最高達0.76。
  • 沒有通用的最佳信號;最佳信號取決於失敗模式(詞彙不匹配、排序精度或可達性)。
  • 該方法與語料庫無關:在自有數據上校準,選擇最佳信號,設定閾值構建門控,僅在觸發時升級。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。