RAG系統(tǒng)中的“守門人”:重排器的奧秘與選擇 原創(chuàng)

在信息爆炸的時代,我們每天都在與海量的數(shù)據(jù)打交道。無論是學術研究、商業(yè)決策還是日常學習,獲取準確、可靠且及時的信息至關重要。而Retrieval Augmented Generation(RAG)系統(tǒng)的出現(xiàn),就像是一場信息處理的革命,它將大型語言模型(LLMs)的強大語言生成能力與外部知識源相結合,為我們提供了更精準、更可信的回答。然而,RAG系統(tǒng)輸出的質量,從根本上依賴于它檢索到的信息的質量。這時,重排器(Reranker)就成為了關鍵的“守門人”,確保只有最優(yōu)質的信息能夠進入最終的輸出。
今天,我們就來深入探討一下RAG中的重排器,看看它們?yōu)槭裁床豢苫蛉保螘r發(fā)揮作用,可能存在的權衡,以及不同類型的重排器都有哪些。
一、什么是RAG中的重排器?
想象一下,你正在撰寫一篇詳細的學術論文。最初的信息檢索過程,就像是從一個龐大的圖書館數(shù)據(jù)庫中收集與你的主題相關的所有資料——文章、書籍、會議論文、原始數(shù)據(jù)等。這些資料中,很多可能只是與主題擦邊、過時或者質量不高。而重排器,就像是一個嚴謹?shù)难芯空撸瑢γ恳粋€來源進行評估,檢查它的相關性、可信度和影響力,優(yōu)先篩選出那些高度相關、權威的研究,以便為你的論點提供支持。只有這些經過精心挑選的資料,才會被大型語言模型(LLM)引用和整合,構建出最終有理有據(jù)的論文。它確保了只有最好的信息能夠進入最終的輸出。
從技術角度來看,重排器是信息檢索系統(tǒng)中的一個組件,它在初始檢索之后,對檢索結果進行二次過濾。初始檢索(例如基于嵌入或關鍵詞的向量相似性搜索)會返回一組可能與查詢相關的文檔。重排器的任務是對這些結果進行重新排序,這個過程不僅僅依賴于初始檢索的評分。重排器會使用匹配技術,更深入、更細致地分析查詢與每個檢索到的文檔之間的關系。它們根據(jù)對查詢相關性的更細微理解,對文檔進行優(yōu)先級排序,從而提高傳遞給LLM的文檔質量和順序。
這種兩階段的方法——快速的初始檢索,緊接著是更精確的重排——在速度和結果質量之間達到了平衡。
二、為什么要在RAG中使用重排器?

雖然基于嵌入的初始檢索方法在尋找與查詢語義相似的文檔方面既快速又有效,但它們也有局限性:
- 語義理解有限:嵌入有時會錯過復雜文檔或查詢中細微的語義差異或上下文。那些有重要但細微差別的相似句子,可能會有非常接近的向量表示。
- 維度限制:將豐富、復雜的信息表示在一個相對低維的嵌入空間中,不可避免地會導致一些信息丟失,或者出現(xiàn)不同概念被放置得太接近的情況(即碰撞)。
- 泛化問題:嵌入在與訓練數(shù)據(jù)相似的數(shù)據(jù)上表現(xiàn)最好。它們可能難以準確捕捉到熟悉領域之外的信息的相關性。
這些局限性可能導致檢索到的文檔與查詢只有松散的相關性,而將這些文檔傳遞給LLM可能會導致“幻覺”(即生成與事實不符的內容)。

而重排器正是在初始基于嵌入的檢索不足之處表現(xiàn)出色的地方:
- 超越簡單的向量相似性:重排器采用的技術不僅僅依賴于向量相似性。
- 細粒度比較:一些重排器可能會將文檔分解成更小的上下文化單元,進行更細致的比較(例如“Bag-of-Embedding”方法)。
- 結合語義理解與基于關鍵詞的技術:通過結合語義理解與基于關鍵詞的技術,重排器可以生成更強大的相關性評分。
- 通過關注查詢與文檔部分之間的核心上下文關系來提高泛化能力。
三、重排器的類型
重排器的種類繁多,而且這是一個活躍的研究領域。在本文中,我們將介紹幾種主要類型的重排器,每種類型都有其獨特的性能、計算成本和實現(xiàn)復雜性特點。

(一)交叉編碼器(Cross Encoders)
交叉編碼器模型將查詢和文檔對作為輸入,輸出一個相關性評分。通過同時處理查詢和文檔,它們能夠捕捉到查詢和文檔中術語和概念之間高度細微的相互作用和依賴關系,從而做出精確的相關性判斷。然而,對于每個檢索到的文檔,交叉編碼器都需要將查詢和文檔一起處理,這使得它們在處理非常大的初始結果集或需要極低延遲的應用場景時不太理想。
(二)多向量重排器(Multi-Vector Rerankers)
像ColBERT這樣的模型采用多向量表示法來表示文檔,并使用后期交互機制——這意味著查詢和文檔的表示是獨立編碼成一組向量的。相關性計算涉及比較這些向量集,通常使用查詢和文檔表示之間的向量相似性。多向量重排器的一個優(yōu)勢是速度。由于文檔表示是預先計算好的,檢索和初始排名過程非常快。與交叉編碼器的全交叉注意力機制相比,多向量重排器的后期交互在計算上更輕量。
(三)微調的LLM重排器(Fine-tuned LLM Rerankers)
雖然大型預訓練的LLM對語言有很強的理解能力,但它們并不天生知道如何在信息檢索的上下文中根據(jù)相關性評分對文檔進行排名。通過在排名數(shù)據(jù)上微調較小的LLM,它們可以成為高效的重排器。微調的重排器分為兩類:
- 編碼器-解碼器模型:這類模型將排名任務視為一個生成問題。例如RankT5,它被訓練成輸出代表查詢文檔對相關性的特定標記。
- 僅解碼器模型:像RankZephyr和RankGPT這樣的模型通過生成相關性評分或基于提示策略的排名來評估相關性。
微調的LLM重排器可以提供出色的性能,但它們計算成本高、耗時且延遲可能更高。
(四)將LLM作為重排器的裁判(LLM as a Judge for Reranking)
與其專門為排名微調一個模型,不如直接利用大型LLM的推理能力,通過提示策略讓LLM充當裁判,評估文檔的相關性。一些提示策略包括:
- 逐點式(Pointwise):LLM單獨評估每個文檔相對于查詢的相關性,通常是在評分尺度上,或者通過生成相關性陳述。然后根據(jù)生成的評分或相關性判斷對結果進行排序。
- 列表式(Listwise):LLM被給予查詢和一組文檔,并被要求返回按排名順序排列的文檔標識符。由于LLM上下文窗口的限制,這通常需要以較小的批次或窗口處理文檔。
- 成對式(Pairwise):LLM被展示查詢和兩個文檔,并被要求識別哪一個是更相關的。然后將許多成對比較的結果聚合起來,以產生最終排名(例如,使用AllPairs等算法)。
(五)重排器API(Reranking APIs)
我們還可以使用Cohere、Jina或Mixedbread等提供的重排器API。這些服務通過簡單的API調用提供重排能力,方便快捷。
四、如何選擇合適的RAG重排器?
選擇最適合RAG應用的重排器需要考慮多個因素:
(一)相關性提升
這是重排器的主要目標。可以通過信息檢索指標(如NDCG,歸一化折扣累積增益)來評估,該指標考慮了相關文檔的位置,或者使用特定于應用的指標(如歸因,LLM的回答由重排文檔支持的頻率)。
(二)延遲
重排步驟會增加整個檢索過程的延遲。交叉編碼器和LLM作為裁判的重排器通常延遲較高。
(三)上下文理解
重排器如何處理不同長度和復雜性的查詢和文檔?有些重排器更適合處理較短的段落,而有些則能有效處理較長的文檔。
五、總結
選擇并有效地實現(xiàn)一個重排器是構建高性能、可靠RAG系統(tǒng)的關鍵步驟。重排器作為重要的質量控制環(huán)節(jié),確保傳遞給LLM的信息盡可能相關和準確,從而減少幻覺,甚至可能降低成本。
通過了解不同類型的重排器——從精確的交叉編碼器、高效的多向量模型到強大的微調LLM和便捷的API——并根據(jù)相關性提升、延遲和成本等因素仔細評估它們,你可以顯著提高RAG應用的準確性和效率。隨著RAG領域的不斷發(fā)展,對包括關鍵重排步驟在內的每個階段都有清晰的可見性和控制權,是構建可靠、有效系統(tǒng)的關鍵。
本文轉載自??Halo咯咯?? 作者:基咯咯

















