繞過 RAG 實時檢索瓶頸,緩存增強生成(CAG)如何助力性能突破? 原創(chuàng) 精華
編者按: 你是否曾經(jīng)遇到過這樣的困擾:在開發(fā)基于 RAG 的應(yīng)用時,實時檢索的延遲讓用戶體驗大打折扣?或者在處理復雜查詢時,檢索結(jié)果的不準確導致回答質(zhì)量不盡如人意?
在當前大語言模型應(yīng)用大規(guī)模落地的背景下,這些挑戰(zhàn)正成為制約產(chǎn)品競爭力的關(guān)鍵瓶頸。傳統(tǒng) RAG 方案中的檢索延遲、準確性波動以及系統(tǒng)復雜度,都在考驗著開發(fā)者的耐心和智慧。
緩存增強生成(CAG)技術(shù)巧妙地利用了新一代大語言模型處理長上下文的能力,通過預加載文檔和預計算 KV 緩存,消除了實時檢索的需求。實驗結(jié)果表明,在可管理的知識庫場景下,這種方案不僅能將推理時間縮短數(shù)倍,還能提供更連貫、更準確的響應(yīng)。
作者 | Vishal Rajput
編譯 | 岳揚
檢索增強生成(RAG)作為一種通過整合外部知識源來增強語言模型的強大方法而備受矚目。不過,這種方法也帶來了一些挑戰(zhàn),比如檢索過程的延遲、文檔挑選時可能出現(xiàn)的誤差,以及系統(tǒng)復雜度的增加。
隨著能夠處理更長上下文的大語言模型(LLMs)的興起,緩存增強生成(CAG)技術(shù)應(yīng)運而生,它避免了實時的信息檢索。這項技術(shù)通過將所有必要資源預先加載到模型的擴展上下文中,并在緩存其相關(guān)運行時(runtime)參數(shù),尤其在處理數(shù)量有限且易于管理的文檔或知識時更為有效。
話不多說,讓我們來深入探討這一新穎的技術(shù)。
本文將討論以下主題:
- RAG 如何擴展上下文的處理能力?
- 無限擴展的上下文窗口
- CAG 技術(shù)有何優(yōu)勢?
- 其他方面的改進
- CAG 框架的運作原理
- 總結(jié)
01 RAG 如何擴展上下文的處理能力?
RAG 是一種半?yún)?shù)化系統(tǒng),其中參數(shù)化部分由大語言模型構(gòu)成,而非參數(shù)化部分則包括其他元素。將這兩部分結(jié)合,便形成了半?yún)?shù)化系統(tǒng)。在 LLMs 中,所有信息都以編碼形式存儲在模型的權(quán)重或參數(shù)中,而系統(tǒng)的其他部分則沒有用參數(shù)來定義這些知識。
那么,這種設(shè)計是如何解決問題的呢?
- 通過在 LLMs 中靈活地替換索引(即特定的信息),能夠?qū)崿F(xiàn)信息的個性化定制,這意味著我們不會因為信息過時而受限,同時也能夠更新索引的內(nèi)容。
- 將 LLMs 與這些索引相結(jié)合,可以減少錯誤信息的產(chǎn)生,并且我們能夠通過指向信息原始來源來進行引用和歸屬描述。
因此,從理論上講,RAG 提升了我們?yōu)?LLMs 創(chuàng)建更佳上下文的能力,使其表現(xiàn)更加出色。
但這個過程真的這么簡單嗎?答案是否定的。
現(xiàn)有的 RAG 系統(tǒng)并不夠智能,它們相對簡單,無法應(yīng)對那些需要大量自定義上下文的復雜任務(wù)。
因此,簡而言之,正是由于上下文窗口對 LLMs 的限制,RAG 才得以發(fā)展起來。
02 無限擴展的上下文窗口
相關(guān)論文在此:《Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention》。
這篇論文提出了一種高效的方法,可以在有限的內(nèi)存和計算資源約束下,將基于 Transformer 的大語言模型(LLMs)擴展到處理無限長的輸入。該方法中的一個關(guān)鍵創(chuàng)新是一種名為 Infini-attention 的全新注意力機制。
Infini-attention 的核心思想是將局部注意力和全局注意力相結(jié)合。具體來說,首先將整篇文章分割成多個片段,在其中一個片段上應(yīng)用標準的注意力機制,而為了獲取前一個片段的上下文,我們采用了一種線性注意力機制。以下是對這篇論文的簡要概述:
- 混合注意力機制:局部注意力集中于單詞周圍的即時上下文,而長距離注意力則通過參考迄今為止所見的整個序列的壓縮摘要來保持全局視野。
- 壓縮記憶:利用線性注意力來記憶之前的文本片段。
- 高效更新:為了避免冗余和節(jié)省計算量,Infini-attention 不會直接將新信息添加到記憶中。相反,它會首先檢查已知信息,然后只更新記憶中的新信息或不同信息,這與 ResNet 中的跳躍連接(skip connections)類似。
- 權(quán)衡控制:通過一個超參數(shù)來調(diào)節(jié)局部信息和壓縮記憶的混合比例。
03 CAG 技術(shù)有何優(yōu)勢?
無檢索長上下文范式:提出了一種創(chuàng)新方法,通過利用預加載文檔和預計算 KV 緩存的長上下文 LLMs,消除了檢索延遲、錯誤和系統(tǒng)復雜性。
性能比較:實驗表明,長上下文 LLMs 的性能優(yōu)于傳統(tǒng)的 RAG 系統(tǒng),特別是在可管理的知識庫中。
實用見解:提出可操作的優(yōu)化策略以提升知識密集型工作流效率,通過實證驗證無檢索方法在特定應(yīng)用場景下的可行性。
CAG 相較于傳統(tǒng) RAG 系統(tǒng)具有以下顯著優(yōu)勢:
- 縮短推理時間:由于無需實時檢索,推理過程變得更快、更高效,能夠更快地響應(yīng)用戶查詢。
- 統(tǒng)一上下文:將整個知識集合預加載到 LLM 中,可提供對文檔的整體和連貫理解,從而在各種任務(wù)中提高響應(yīng)質(zhì)量和響應(yīng)一致性。
- 簡化架構(gòu):通過移除整合檢索器和生成器的需求,系統(tǒng)變得更加簡潔,降低了系統(tǒng)復雜性,提高了可維護性,并減少了開發(fā)成本。
04 其他方面的改進
對于知識密集型任務(wù)而言,增加的計算資源通常被用來融入更多的外部知識。然而,如果沒有有效地利用這些知識,單純地擴展上下文并不總是能提升性能。
兩種推理擴展策略:上下文學習(In-context learning)和迭代式提示技術(shù)(iterative prompting)。
這些策略為擴展測試時計算(test-time computation)提供了額外的靈活性(例如,通過增加檢索的文檔數(shù)量或生成步驟),從而增強 LLMs 獲取和利用上下文信息的能力。
我們需要回答兩個關(guān)鍵問題:
(1) 在進行最優(yōu)配置時,RAG 性能如何通過推理計算規(guī)模的擴展獲得提升?
(2) 能否通過建模 RAG 性能與推理參數(shù)之間的量化關(guān)系,預測給定預算約束下的最優(yōu)測試時計算資源分配?
在最優(yōu)推理參數(shù)配置下,RAG性能隨著測試時計算量級的提升呈現(xiàn)近似線性增長。基于實驗觀測,我們推導出RAG的推理擴展規(guī)律及其配套計算資源分配模型,該模型可預測不同超參數(shù)配置下的系統(tǒng)性能表現(xiàn)。
欲了解更多信息請閱讀此論文:??https://arxiv.org/pdf/2410.04343??
另一項工作則更多地從硬件(優(yōu)化)設(shè)計的角度出發(fā):
研究團隊開發(fā)了智能知識存儲系統(tǒng)(Intelligent Knowledge Store, IKS),這是一種基于 CXL 2.0 協(xié)議的設(shè)備,采用橫向擴展的近內(nèi)存加速架構(gòu),通過在主機 CPU 與近內(nèi)存加速器之間構(gòu)建新型緩存一致性接口實現(xiàn)性能突破。
在 512GB 向量數(shù)據(jù)庫上,IKS 執(zhí)行精確最近鄰搜索的速度相比 Intel Sapphire Rapids CPU 提升 13.4-27.9 倍。這種搜索性能優(yōu)勢使典型 RAG 應(yīng)用的端到端推理時間縮短 1.7-26.3 倍。作為內(nèi)存擴展器,IKS 的內(nèi)部 DRAM 可解耦供服務(wù)器其他應(yīng)用使用,有效避免當今服務(wù)器中最昂貴的 DRAM 資源閑置浪費。
欲了解更多信息,請閱讀這里:??https://arxiv.org/pdf/2412.15246??
另一篇論文系統(tǒng)性地研究了長上下文對 20 種主流開源和商業(yè)大語言模型(LLM)的檢索增強生成(RAG)性能影響。研究團隊通過在三個專有領(lǐng)域數(shù)據(jù)集上改變總上下文長度(從 2,000 到 128,000 tokens,并在可能情況下擴展至 200 萬 tokens)運行 RAG 工作流,揭示了長上下文在 RAG 應(yīng)用中的優(yōu)勢與局限性。
他們的研究發(fā)現(xiàn),雖然檢索更多文檔可以提高性能,但只有少數(shù)最新一代的最先進 LLMs 能夠在超過 64k tokens 的長上下文中保持穩(wěn)定的準確性。 他們還確定了長上下文場景中的不同故障模式,為未來的研究提出了方向。
欲了解更多信息,請閱讀此論文:??https://arxiv.org/pdf/2411.03538??
05 CAG 框架的運作原理
CAG 框架利用長上下文 LLMs 的擴展上下文能力,消除了實時檢索的需求。通過預加載外部知識源(例如,文檔集合 D={d1,d2,…} )并預計算鍵值(KV)緩存(C_KV),它克服了傳統(tǒng) RAG 系統(tǒng)的效率低下問題。該框架主要分三個階段運行:
1. 外部知識預加載
- 對精選的文檔集合 D 進行預處理,使其適配模型的擴展上下文窗口。
- LLM 處理這些文檔,將它們轉(zhuǎn)換為預計算的鍵值(KV)緩存,該緩存封裝了 LLM 的推理狀態(tài)。LLM(M)將文檔集合 D 編碼成預計算的 KV 緩存:
- 該預計算緩存被存儲以供復用,確保無論后續(xù)執(zhí)行多少次查詢,處理文檔集合D的計算成本僅需支付一次。
2. 推理階段
- 在推理階段,KV 緩存(C_KV)與用戶查詢 Q 一起加載。
- LLM 利用這個緩存中的上下文來生成響應(yīng),從而消除了檢索延遲,并減少了由于動態(tài)檢索引起的錯誤或遺漏的風險。LLM 通過利用緩存中的上下文來生成響應(yīng):
這種方法消除了檢索延遲,將檢索錯誤的風險降至最低。組合提示詞 P=Concat(D,Q) 確保了對外部知識和查詢的統(tǒng)一理解。
3. 緩存重置
- 為維持性能,需對 KV 緩存進行高效重置。在推理過程中,隨著新 token(t1,t2,…,tk)被添加至上下文窗口,重置過程會截斷這些 tokens:
- 隨著新 token 的連續(xù)添加,KV 緩存逐漸增長,重置時僅需截斷這些新增 token,即可實現(xiàn)快速重新初始化,無需從磁盤重新加載整個緩存。這種設(shè)計避免了全量緩存加載的 I/O 瓶頸,確保了系統(tǒng)響應(yīng)速度的持續(xù)穩(wěn)定。
06 Conclusion
緩存增強生成(CAG)在實時檢索不可行或需要極低延遲響應(yīng)的場景中優(yōu)勢顯著。通過將海量外部知識嵌入模型的上下文窗口,CAG 能夠生成信息豐富且上下文相關(guān)的回答,避免了傳統(tǒng)檢索增強生成(RAG)系統(tǒng)的檢索延遲。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
About the author
Vishal Rajput
3x??Top writer in AI |
AI Book ??: ??https://rb.gy/xc8m46?? |
LinkedIn +: ??https://www.linkedin.com/in/vishal-rajput-999164122/??
END
本期互動內(nèi)容 ??
?你認為隨著大模型上下文窗口持續(xù)擴大,RAG和CAG的技術(shù)路線會如何演進?哪些場景仍然更適合使用RAG?
原文鏈接:
??https://medium.com/aiguys/dont-do-rag-it-s-time-for-cag-fb24ff87932b??
