LongRAG:利用長上下文LLMs增強(qiáng)檢索增強(qiáng)生成
前言
現(xiàn)有的RAG框架通常使用100詞的短段落作為檢索單元,這種設(shè)計(jì)使得檢索器需要在大量語料庫中搜索,增加了工作負(fù)擔(dān),并且容易引入難負(fù)樣本,影響性能。LongRAG框架為了解決這一問題,該框架使用長檢索單元(最多4K詞),顯著減少了語料庫的大小(從22M減少到600K),從而減輕了檢索器的負(fù)擔(dān),并提高了檢索性能。
圖片
一、方法
LongRAG框架由兩個(gè)主要組件構(gòu)成:長檢索器(Long Retriever)和長閱讀器(Long Reader)。LongRAG框架的目標(biāo)是通過使用長檢索單元來平衡檢索器和閱讀器之間的工作負(fù)載,并利用長上下文語言模型的能力。
圖片
- 長檢索單元:LongRAG框架通過組合整個(gè)文檔或相關(guān)文檔組來形成長檢索單元,這些單元的長度超過4K個(gè)token。如果原始文檔已經(jīng)很長(例如超過4K個(gè)令牌),則將其視為一個(gè)單一的檢索單元。對(duì)于較短的文檔,則通過相關(guān)文檔分組來形成單個(gè)檢索單元。下面是一種用于將多個(gè)短文檔分組以形成長檢索單元的算法:
圖片
- 算法的核心思想是根據(jù)文檔之間的相關(guān)性將它們分組,以便在長檢索單元中保留更多的上下文信息。
- 長檢索器:長檢索器的任務(wù)是在整個(gè)語料庫中搜索相關(guān)的上下文信息,而不是尋找精確的細(xì)粒度短上下文。檢索過程分為三個(gè)步驟:形成長檢索單元、相似性搜索和聚合檢索結(jié)果。相似性搜索使用編碼器將查詢和檢索單元映射到向量空間,并通過點(diǎn)積計(jì)算它們之間的相似性。聚合檢索結(jié)果時(shí),將前K個(gè)最相似的檢索單元連接起來作為長上下文。
相似性搜索:使用編碼器EQ(·)將輸入問題映射到d維向量,使用另一個(gè)編碼器EC(·)將檢索單元映射到d維向量。定義問題和檢索單元之間的相似性為向量的點(diǎn)積:
圖片
由于g的長度較長,采用近似方法(通過最大化檢索單元內(nèi)所有片段的得分來近似):
圖片
聚合檢索結(jié)果:將前k個(gè)檢索單元連接成長上下文作為檢索結(jié)果:
圖片
- 長閱讀器:長閱讀器將檢索到的結(jié)果(約30K詞)輸入現(xiàn)有的長上下文LLM中進(jìn)行零樣本答案生成。不需要任何訓(xùn)練,流程如下:提示設(shè)計(jì):為了有效地從長上下文中提取答案,長閱讀器采用了兩步提示法:
圖片
- 提示詞模版
第一步提示:將問題和長檢索結(jié)果拼接后輸入到長語言模型中,不使用任何上下文示例。長語言模型生成一個(gè)較長的初步答案。
第二步提示:使用8個(gè)上下文示例來引導(dǎo)長語言模型從長答案中提取最終的簡(jiǎn)短答案。
輸入:將相關(guān)指令、問題和長檢索結(jié)果輸入到長語言模型中。
初始答案生成:長語言模型首先生成一個(gè)較長的答案,這個(gè)答案通常包含幾句話。
答案精煉:通過進(jìn)一步的提示,長語言模型從初始的長答案中提取出最終的簡(jiǎn)短答案。
二、實(shí)驗(yàn)
在基于維基百科的數(shù)據(jù)集上,LongRAG框架在不進(jìn)行任何訓(xùn)練的情況下,達(dá)到了與最先進(jìn)的全訓(xùn)練RAG模型相當(dāng)?shù)男阅?。在非基于維基百科的數(shù)據(jù)集上,LongRAG框架也表現(xiàn)出色,顯著優(yōu)于傳統(tǒng)的RAG框架。
圖片
圖片
消融實(shí)驗(yàn),驗(yàn)證了長檢索單元和長閱讀器在提高性能方面的有效性。發(fā)現(xiàn)檢索單元大小和閱讀器變體對(duì)性能有顯著影響。
圖片
總結(jié)
LongRAG框架通過引入長檢索器和長閱讀器,減輕了檢索器的負(fù)擔(dān),提高了檢索質(zhì)量和全文問答性能。該框架在不進(jìn)行任何訓(xùn)練的情況下,達(dá)到了與最先進(jìn)的全訓(xùn)練RAG模型相當(dāng)?shù)男阅???偟膩碚f,LongRAG是一種檢索和生成平衡的方法,供參考。


2024-09-30 14:10:00




