RAG系統(tǒng)中的“守門人”:重排器的奧秘與選擇 原創(chuàng)
在信息爆炸的時(shí)代,我們每天都在與海量的數(shù)據(jù)打交道。無論是學(xué)術(shù)研究、商業(yè)決策還是日常學(xué)習(xí),獲取準(zhǔn)確、可靠且及時(shí)的信息至關(guān)重要。而Retrieval Augmented Generation(RAG)系統(tǒng)的出現(xiàn),就像是一場信息處理的革命,它將大型語言模型(LLMs)的強(qiáng)大語言生成能力與外部知識源相結(jié)合,為我們提供了更精準(zhǔn)、更可信的回答。然而,RAG系統(tǒng)輸出的質(zhì)量,從根本上依賴于它檢索到的信息的質(zhì)量。這時(shí),重排器(Reranker)就成為了關(guān)鍵的“守門人”,確保只有最優(yōu)質(zhì)的信息能夠進(jìn)入最終的輸出。
今天,我們就來深入探討一下RAG中的重排器,看看它們?yōu)槭裁床豢苫蛉?,何時(shí)發(fā)揮作用,可能存在的權(quán)衡,以及不同類型的重排器都有哪些。
一、什么是RAG中的重排器?
想象一下,你正在撰寫一篇詳細(xì)的學(xué)術(shù)論文。最初的信息檢索過程,就像是從一個(gè)龐大的圖書館數(shù)據(jù)庫中收集與你的主題相關(guān)的所有資料——文章、書籍、會議論文、原始數(shù)據(jù)等。這些資料中,很多可能只是與主題擦邊、過時(shí)或者質(zhì)量不高。而重排器,就像是一個(gè)嚴(yán)謹(jǐn)?shù)难芯空?,對每一個(gè)來源進(jìn)行評估,檢查它的相關(guān)性、可信度和影響力,優(yōu)先篩選出那些高度相關(guān)、權(quán)威的研究,以便為你的論點(diǎn)提供支持。只有這些經(jīng)過精心挑選的資料,才會被大型語言模型(LLM)引用和整合,構(gòu)建出最終有理有據(jù)的論文。它確保了只有最好的信息能夠進(jìn)入最終的輸出。
從技術(shù)角度來看,重排器是信息檢索系統(tǒng)中的一個(gè)組件,它在初始檢索之后,對檢索結(jié)果進(jìn)行二次過濾。初始檢索(例如基于嵌入或關(guān)鍵詞的向量相似性搜索)會返回一組可能與查詢相關(guān)的文檔。重排器的任務(wù)是對這些結(jié)果進(jìn)行重新排序,這個(gè)過程不僅僅依賴于初始檢索的評分。重排器會使用匹配技術(shù),更深入、更細(xì)致地分析查詢與每個(gè)檢索到的文檔之間的關(guān)系。它們根據(jù)對查詢相關(guān)性的更細(xì)微理解,對文檔進(jìn)行優(yōu)先級排序,從而提高傳遞給LLM的文檔質(zhì)量和順序。
這種兩階段的方法——快速的初始檢索,緊接著是更精確的重排——在速度和結(jié)果質(zhì)量之間達(dá)到了平衡。
二、為什么要在RAG中使用重排器?
雖然基于嵌入的初始檢索方法在尋找與查詢語義相似的文檔方面既快速又有效,但它們也有局限性:
- 語義理解有限:嵌入有時(shí)會錯過復(fù)雜文檔或查詢中細(xì)微的語義差異或上下文。那些有重要但細(xì)微差別的相似句子,可能會有非常接近的向量表示。
- 維度限制:將豐富、復(fù)雜的信息表示在一個(gè)相對低維的嵌入空間中,不可避免地會導(dǎo)致一些信息丟失,或者出現(xiàn)不同概念被放置得太接近的情況(即碰撞)。
- 泛化問題:嵌入在與訓(xùn)練數(shù)據(jù)相似的數(shù)據(jù)上表現(xiàn)最好。它們可能難以準(zhǔn)確捕捉到熟悉領(lǐng)域之外的信息的相關(guān)性。
這些局限性可能導(dǎo)致檢索到的文檔與查詢只有松散的相關(guān)性,而將這些文檔傳遞給LLM可能會導(dǎo)致“幻覺”(即生成與事實(shí)不符的內(nèi)容)。
而重排器正是在初始基于嵌入的檢索不足之處表現(xiàn)出色的地方:
- 超越簡單的向量相似性:重排器采用的技術(shù)不僅僅依賴于向量相似性。
- 細(xì)粒度比較:一些重排器可能會將文檔分解成更小的上下文化單元,進(jìn)行更細(xì)致的比較(例如“Bag-of-Embedding”方法)。
- 結(jié)合語義理解與基于關(guān)鍵詞的技術(shù):通過結(jié)合語義理解與基于關(guān)鍵詞的技術(shù),重排器可以生成更強(qiáng)大的相關(guān)性評分。
- 通過關(guān)注查詢與文檔部分之間的核心上下文關(guān)系來提高泛化能力。
三、重排器的類型
重排器的種類繁多,而且這是一個(gè)活躍的研究領(lǐng)域。在本文中,我們將介紹幾種主要類型的重排器,每種類型都有其獨(dú)特的性能、計(jì)算成本和實(shí)現(xiàn)復(fù)雜性特點(diǎn)。
(一)交叉編碼器(Cross Encoders)
交叉編碼器模型將查詢和文檔對作為輸入,輸出一個(gè)相關(guān)性評分。通過同時(shí)處理查詢和文檔,它們能夠捕捉到查詢和文檔中術(shù)語和概念之間高度細(xì)微的相互作用和依賴關(guān)系,從而做出精確的相關(guān)性判斷。然而,對于每個(gè)檢索到的文檔,交叉編碼器都需要將查詢和文檔一起處理,這使得它們在處理非常大的初始結(jié)果集或需要極低延遲的應(yīng)用場景時(shí)不太理想。
(二)多向量重排器(Multi-Vector Rerankers)
像ColBERT這樣的模型采用多向量表示法來表示文檔,并使用后期交互機(jī)制——這意味著查詢和文檔的表示是獨(dú)立編碼成一組向量的。相關(guān)性計(jì)算涉及比較這些向量集,通常使用查詢和文檔表示之間的向量相似性。多向量重排器的一個(gè)優(yōu)勢是速度。由于文檔表示是預(yù)先計(jì)算好的,檢索和初始排名過程非常快。與交叉編碼器的全交叉注意力機(jī)制相比,多向量重排器的后期交互在計(jì)算上更輕量。
(三)微調(diào)的LLM重排器(Fine-tuned LLM Rerankers)
雖然大型預(yù)訓(xùn)練的LLM對語言有很強(qiáng)的理解能力,但它們并不天生知道如何在信息檢索的上下文中根據(jù)相關(guān)性評分對文檔進(jìn)行排名。通過在排名數(shù)據(jù)上微調(diào)較小的LLM,它們可以成為高效的重排器。微調(diào)的重排器分為兩類:
- 編碼器-解碼器模型:這類模型將排名任務(wù)視為一個(gè)生成問題。例如RankT5,它被訓(xùn)練成輸出代表查詢文檔對相關(guān)性的特定標(biāo)記。
- 僅解碼器模型:像RankZephyr和RankGPT這樣的模型通過生成相關(guān)性評分或基于提示策略的排名來評估相關(guān)性。
微調(diào)的LLM重排器可以提供出色的性能,但它們計(jì)算成本高、耗時(shí)且延遲可能更高。
(四)將LLM作為重排器的裁判(LLM as a Judge for Reranking)
與其專門為排名微調(diào)一個(gè)模型,不如直接利用大型LLM的推理能力,通過提示策略讓LLM充當(dāng)裁判,評估文檔的相關(guān)性。一些提示策略包括:
- 逐點(diǎn)式(Pointwise):LLM單獨(dú)評估每個(gè)文檔相對于查詢的相關(guān)性,通常是在評分尺度上,或者通過生成相關(guān)性陳述。然后根據(jù)生成的評分或相關(guān)性判斷對結(jié)果進(jìn)行排序。
- 列表式(Listwise):LLM被給予查詢和一組文檔,并被要求返回按排名順序排列的文檔標(biāo)識符。由于LLM上下文窗口的限制,這通常需要以較小的批次或窗口處理文檔。
- 成對式(Pairwise):LLM被展示查詢和兩個(gè)文檔,并被要求識別哪一個(gè)是更相關(guān)的。然后將許多成對比較的結(jié)果聚合起來,以產(chǎn)生最終排名(例如,使用AllPairs等算法)。
(五)重排器API(Reranking APIs)
我們還可以使用Cohere、Jina或Mixedbread等提供的重排器API。這些服務(wù)通過簡單的API調(diào)用提供重排能力,方便快捷。
四、如何選擇合適的RAG重排器?
選擇最適合RAG應(yīng)用的重排器需要考慮多個(gè)因素:
(一)相關(guān)性提升
這是重排器的主要目標(biāo)??梢酝ㄟ^信息檢索指標(biāo)(如NDCG,歸一化折扣累積增益)來評估,該指標(biāo)考慮了相關(guān)文檔的位置,或者使用特定于應(yīng)用的指標(biāo)(如歸因,LLM的回答由重排文檔支持的頻率)。
(二)延遲
重排步驟會增加整個(gè)檢索過程的延遲。交叉編碼器和LLM作為裁判的重排器通常延遲較高。
(三)上下文理解
重排器如何處理不同長度和復(fù)雜性的查詢和文檔?有些重排器更適合處理較短的段落,而有些則能有效處理較長的文檔。
五、總結(jié)
選擇并有效地實(shí)現(xiàn)一個(gè)重排器是構(gòu)建高性能、可靠RAG系統(tǒng)的關(guān)鍵步驟。重排器作為重要的質(zhì)量控制環(huán)節(jié),確保傳遞給LLM的信息盡可能相關(guān)和準(zhǔn)確,從而減少幻覺,甚至可能降低成本。
通過了解不同類型的重排器——從精確的交叉編碼器、高效的多向量模型到強(qiáng)大的微調(diào)LLM和便捷的API——并根據(jù)相關(guān)性提升、延遲和成本等因素仔細(xì)評估它們,你可以顯著提高RAG應(yīng)用的準(zhǔn)確性和效率。隨著RAG領(lǐng)域的不斷發(fā)展,對包括關(guān)鍵重排步驟在內(nèi)的每個(gè)階段都有清晰的可見性和控制權(quán),是構(gòu)建可靠、有效系統(tǒng)的關(guān)鍵。
本文轉(zhuǎn)載自??Halo咯咯?? 作者:基咯咯
