長(zhǎng)上下文能取代RAG嗎?
曾幾何時(shí),LLM還是憨憨的。
腦子里的知識(shí)比較混亂,同時(shí)上下文窗口長(zhǎng)度也有限。
檢索增強(qiáng)生成(RAG)的出現(xiàn)在很大程度上提升了模型的性能。
然而,LLM很快變得強(qiáng)大,上下文窗口長(zhǎng)度也迅速膨脹。
現(xiàn)役的主流大模型,比如GPT-4o、Claude-3.5、Llama3.1、Phi-3和 Mistral-Large2等,都支持128K長(zhǎng)的上下文,Gemini-1.5-pro甚至達(dá)到了1M的長(zhǎng)度。
于是人們不禁要問:在長(zhǎng)上下文LLM時(shí)代,RAG還有存在的必要嗎?
這樣的疑問是有根據(jù)的,之前的一項(xiàng)研究就證明了,長(zhǎng)上下文(LC)在答案質(zhì)量方面始終優(yōu)于RAG:
論文地址:https://www.arxiv.org/pdf/2407.16833
在這勃勃生機(jī)、萬物競(jìng)發(fā)的春天里,RAG當(dāng)真要失寵了么?
近日,來自英偉達(dá)的研究人員重新審視了這個(gè)問題,他們發(fā)現(xiàn), LLM上下文中檢索塊的順序?qū)τ诖鸢纲|(zhì)量至關(guān)重要。
傳統(tǒng)的RAG會(huì)將檢索到的塊按照相關(guān)性降序排列,但這篇工作表明,保留原始文本中檢索塊的順序,能夠顯著提高RAG的答案質(zhì)量。
論文地址:https://arxiv.org/pdf/2409.01666
由此,研究人員提出了保序機(jī)制——Order-Preserve RAG(OP-RAG)。
在En.QA數(shù)據(jù)集上的實(shí)驗(yàn)中,OP-RAG方法(Llama3.1-70B)僅使用16K檢索到的token,就實(shí)現(xiàn)了44.43的F1-score。
相比之下,沒有RAG的Llama3.1-70B,在充分利用128K上下文的情況下,只達(dá)到了34.32的F1-score。
而GPT-4o和Gemini-1.5-Pro則分別為32.36分和43.08分。
上圖顯示了每組實(shí)驗(yàn)平均輸入的token數(shù)量,可以認(rèn)為OP-RAG以很少的資源量達(dá)到了超越長(zhǎng)上下文的效果。
——這也再次證明了RAG的獨(dú)特價(jià)值。
Make RAG Great Again
RAG曾幫助早期的LLM克服了有限上下文的限制,通過訪問最新的信息,顯著減少LLM的幻覺,提高了事實(shí)準(zhǔn)確性。
盡管目前長(zhǎng)上下文的研究逐漸獲得偏愛,但作者認(rèn)為超長(zhǎng)的語境會(huì)導(dǎo)致LLM對(duì)相關(guān)信息的關(guān)注度降低,最終使答案質(zhì)量下降,而本文提出的OP-RAG則能夠用更少的token換來更高的答案質(zhì)量。
OP-RAG
首先通過以下方式表示長(zhǎng)上下文:將長(zhǎng)文本d切成N個(gè)連續(xù)且均勻的塊c,ci表示第i塊 。給定一個(gè)查詢q,可以得到ci塊的相關(guān)性得分(通過計(jì)算嵌入之間的余弦相似度):
檢索出相似度得分最高的前k個(gè)塊,但保留這些塊在原始長(zhǎng)上下文d中的順序。
上圖直觀展示了普通RAG與OP-RAG之間的差異:一個(gè)長(zhǎng)文檔被切分為13塊并計(jì)算了相似度分?jǐn)?shù)。
同樣是檢索相似度得分最高的前4個(gè)塊,Vanilla RAG按分?jǐn)?shù)降序重排了,而OP-RAG保留了塊之間的相對(duì)順序。
實(shí)驗(yàn)設(shè)置
研究人員選擇了專為長(zhǎng)上下文QA評(píng)估而設(shè)計(jì)的EN.QA和EN.MC數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。
En.QA由351個(gè)人工注釋的問答對(duì)組成,數(shù)據(jù)集中的長(zhǎng)上下文平均包含150,374個(gè)單詞,這里使用F1-score作為En.QA的評(píng)估指標(biāo)。
EN.MC由224個(gè)問答對(duì)組成,其注釋與En.QA類似,但每個(gè)問題提供四個(gè)答案供選擇。
En.MC中的長(zhǎng)上下文平均包含142,622個(gè)單詞,這里使用準(zhǔn)確性作為En.QA評(píng)估的指標(biāo)。
所有數(shù)據(jù)集上的塊大小都設(shè)置為128個(gè)token,塊之間不重疊,使用BGE-large-en-v1.5的默認(rèn)設(shè)置來獲得查詢和塊的嵌入。
消融研究
上下文長(zhǎng)度的影響
作者評(píng)估了上下文長(zhǎng)度對(duì)OP-RAG性能的影響。實(shí)驗(yàn)中每個(gè)塊包含128個(gè)token,生成答案時(shí)檢索塊數(shù)為128。
如下圖所示,隨著上下文長(zhǎng)度的增加,性能最初會(huì)提高。這是因?yàn)楦嗟纳舷挛目赡苡懈蟮臋C(jī)會(huì)覆蓋相關(guān)的塊。
然而,隨著上下文長(zhǎng)度進(jìn)一步增加,答案質(zhì)量會(huì)下降,因?yàn)楦嗖幌嚓P(guān)的塊產(chǎn)生了干擾。
實(shí)驗(yàn)中的Llama3.1-8B模型,在EN.QA數(shù)據(jù)集和EN.MC數(shù)據(jù)集上,上下文長(zhǎng)度為16K時(shí)達(dá)到性能峰值,而Llama3.1-70B模型在EN.QA上的最佳性能點(diǎn)為16K,在EN.MC上為32K。
Llama3.1-70B的峰值點(diǎn)晚于Llama3.1-8B,可能是因?yàn)檩^大規(guī)模的模型具有更強(qiáng)的區(qū)分相關(guān)塊和不相關(guān)干擾的能力。
這里有兩方面的啟示,首先是需要在檢索更多上下文來提高召回率,和限制干擾來保持準(zhǔn)確性之間進(jìn)行權(quán)衡;
其次,引入過多的不相關(guān)信息會(huì)降低模型的性能,這也是當(dāng)前長(zhǎng)上下文LLM所面臨的問題。
OP-RAG和檢索塊數(shù)
如下圖所示,當(dāng)檢索到的塊的數(shù)量較小(比如8)時(shí),本文提出的保留順序RAG相對(duì)于普通RAG的優(yōu)勢(shì)并不明顯。
而當(dāng)檢索到的塊數(shù)量很大時(shí),OP-RAG的性能顯著優(yōu)于普通RAG。
在EN.QA數(shù)據(jù)集上,當(dāng)檢索到的塊數(shù)為128時(shí), 普通RAG只能實(shí)現(xiàn)38.40的F1-score,而OP-RAG獲得了44.43分。
在EN.MC數(shù)據(jù)集上,檢索塊數(shù)為192時(shí),普通RAG的Accuracy為81.22,而OP-RAG達(dá)到了88.65。
實(shí)驗(yàn)結(jié)果
研究人員將OP-RAG與兩種類型的基線進(jìn)行比較。
第一類方法使用沒有RAG的長(zhǎng)上下文LLM。如下表所示,在沒有RAG的情況下,LLM需要大量token作為輸入,效率低且成本高。
相比之下,本文的保序RAG不僅顯著減少了所需token數(shù)量,而且提高了答案質(zhì)量。
對(duì)于Llama3.1-70B模型,沒有RAG的方法在EN.QA數(shù)據(jù)集上,只能實(shí)現(xiàn)34.26的F1-score,且平均需要117K個(gè)token作為輸入。相比之下,OP-RAG以48K個(gè)token的輸入獲得了47.25的分?jǐn)?shù)。
第二類基線采用SELF-ROUTE機(jī)制 ,它根據(jù)模型自我反思將查詢路由到RAG或長(zhǎng)上下文LLM 。如上表所示,OP-RAG方法明顯優(yōu)于在LLM的輸入中使用更少token的方法。