向o1看齊,Google開(kāi)源RAG推理擴(kuò)展,提升近60%
論文筆記分享, 標(biāo)題Inference Scaling for Long-Context Retrieval Augmented Generation,來(lái)自google deepmind
openai o1通過(guò)讓擴(kuò)展推理,讓模型在推理方面達(dá)到非常優(yōu)異的性能。google這篇內(nèi)容,核心想驗(yàn)證2個(gè)點(diǎn)
- RAG系統(tǒng)的性能,如何從推理計(jì)算擴(kuò)展中受益
- 通過(guò)建立RAG性能和推理參數(shù)之間的關(guān)系模型來(lái)預(yù)測(cè)給定預(yù)算下的最佳測(cè)試時(shí)計(jì)算分配
文中應(yīng)用了2種擴(kuò)展方式,DRAG,IterRAG均有效的提高了RAG系統(tǒng)的性能。并且,當(dāng)最優(yōu)分配時(shí),增加推理計(jì)算幾乎可以線性提升RAG性能,這種關(guān)系表示為RAG的推理擴(kuò)展法則。
在RAG中,與O1不同的是,用有效上下文長(zhǎng)度來(lái)衡量推理計(jì)算。有效上下文長(zhǎng)度為在LLM輸出最終答案之前,所有迭代中總的輸入token數(shù)量。
對(duì)于大多數(shù)只調(diào)用一次LLM的方法,有效上下文長(zhǎng)度相當(dāng)于prompt中的token數(shù)量,并受限于LLM的上下文窗口限制。
這里排除輸出成本和檢索成本,因?yàn)長(zhǎng)LMs通常在知識(shí)密集型任務(wù)中通常答案比較短,可能是精確的實(shí)體或數(shù)字。
2種擴(kuò)展上下文的方式
- DRAG
- D是Demo的意思,就是通過(guò)提供多個(gè)RAG的示例作為few-shot,提高LLMs的上下文能力。
- 輸入構(gòu)成有3部分,檢索到的文檔、輸入query以及相應(yīng)的問(wèn)題和答案示例。所以可以擴(kuò)展的有2部分,就是檢索的文檔數(shù)量,以及示例的數(shù)量。
- IterRAG
- Iter就是迭代的意思,通過(guò)將復(fù)雜查詢分解為多個(gè)子查詢來(lái)解決多跳的問(wèn)題
- 在每次迭代中,模型可能會(huì)生成一個(gè)子查詢、一個(gè)中間答案或最終答案。這個(gè)過(guò)程會(huì)重復(fù)迭代,直到生成最終答案或達(dá)到最大迭代次數(shù)。
總體的呈現(xiàn)線性的擴(kuò)展規(guī)律,性能跟上下文長(zhǎng)度之間。DRAG受限于1M窗口的限制,IterRAG可以通過(guò)迭代在更長(zhǎng)上下文的時(shí)候表現(xiàn)出良好的擴(kuò)展。
參數(shù)特定的縮放,總體而言,,擴(kuò)大檢索范圍、增加例子數(shù)量、增加生成步驟的數(shù)量都會(huì)提高性能,但是收益會(huì)因有效上下文長(zhǎng)度和方法的不同而不同。看下圖斜率,增加文檔數(shù)量可以得到更大的提升。并且DRAG和IterRAG的飽和程度不同。
最后給定上下文長(zhǎng)度的最大預(yù)算,一個(gè)公式如下,其中中考慮了文檔數(shù)量,示例,迭代次數(shù)等參數(shù)。但是這些參數(shù)跟特定模型相關(guān)。需要對(duì)進(jìn)行實(shí)驗(yàn),然后MSE算出a、b、c的最優(yōu)值。
