0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是RAG,RAG學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn)

深度學(xué)習(xí)自然語言處理 ? 來源:CS的陋室 ? 2024-04-24 09:17 ? 次閱讀

最近寫的RAG內(nèi)容已經(jīng)挺多了,然而內(nèi)容逐漸變得零散,我今天給大家總結(jié)一下RAG的有關(guān)內(nèi)容,同時(shí)給大家把有關(guān)內(nèi)容串起來。當(dāng)然,串起來的更多是概述和摘記,讓大家對RAG的基礎(chǔ)有更整體的了解,詳情大家可以根據(jù)需要再展開了解,我也會在合適的位置加上原文鏈接。

之前的文章算下來是三萬多字,加上這篇應(yīng)該能超過4萬了,也特此記錄一下自己在RAG這塊的學(xué)習(xí)和實(shí)踐經(jīng)驗(yàn)。

內(nèi)容目錄:

概念。

從baseline到技術(shù)拓展。(basleine和高級RAG升級)

調(diào)優(yōu)方案。(論文視角和實(shí)踐視角)

效果評估。

微調(diào)和RAG的權(quán)衡。

RAG是否會消亡。(本文私貨)

概念

首先還是得介紹什么是RAG(Retrieval-Augmented Generation)指的是通過將檢索模型和生成模型結(jié)合在一起,從而提高了生成內(nèi)容的相關(guān)性和質(zhì)量。說到概念,嚴(yán)謹(jǐn)?shù)?,我照舊摘錄來自一篇綜述的解釋:

In the era of Large Language Models, the specific definition of RAG refers to the model, when answering questions or generating text, first retrieving relevant information from a vast corpus of documents. Subsequently, it utilizes this retrieved information to generate responses or text, thereby enhancing the quality of predictions.

說白了就是有檢索和對檢索的使用,基本都可以說是RAG了(極端的,某種程度上,詞典匹配,也算是一種RAG)。

正因?yàn)樾枰瑱z索以及后續(xù)大模型的使用,所以RAG和原來常規(guī)的深度學(xué)習(xí)研究不太一樣,他不是一個深度模型,更像是一個系統(tǒng),系統(tǒng)里面可以有多個組件,一般的結(jié)構(gòu)可用下面這張圖來表示。

8f16de06-f198-11ee-a297-92fbcf53809c.png

但概念解釋我不想止步于此,在這里我想進(jìn)一步挖掘,RAG這個概念的起源。早在2020年就已經(jīng)有人提及RAG的概念(Retrieval-augmented generation for knowledge-intensive nlp tasks,他的首版發(fā)布在arxiv于2020年5月,如果有更早的歡迎大家再提出)(這篇論文后面有時(shí)間,我也想拿出來詳細(xì)講講),當(dāng)年還是seq2seq的時(shí)代,但實(shí)驗(yàn)就已經(jīng)發(fā)現(xiàn),通過檢索,能快速從海量知識中找到和原本問題相關(guān)的知識,借助知識帶來的信息能讓最終的生成效果能夠得以提升。

從baseline到技術(shù)拓展

baseline

最基礎(chǔ)的RAG,就是上圖左邊的Naive RAG,基本只包含兩個部分,即檢索和生成,為了讓大家更好地理解RAG整體結(jié)構(gòu),我自己寫了一版基礎(chǔ)RAG項(xiàng)目,這里最大程度還原最基礎(chǔ)RAG的結(jié)構(gòu),同時(shí)也給了一定的調(diào)優(yōu)空間,github地址:https://github.com/ZBayes/basic_rag,講解我分成了兩篇文章:

心法利器[104] | 基礎(chǔ)RAG-向量檢索模塊(含代碼)

心法利器[105] 基礎(chǔ)RAG-大模型和中控模塊代碼(含代碼)

里面有幾個比較關(guān)鍵的點(diǎn),著重拿出來講一下。

這個項(xiàng)目是奔著大型RAG項(xiàng)目去寫的。所以里面會劃分服務(wù)而不是一個流程全部寫完,注意看服務(wù)和代碼文件的拆分,還有具體服務(wù)是怎么串起來的。

服務(wù)是用tornado寫的簡單版,當(dāng)然換成別的服務(wù)組件也可以,例如flask、fastapi等。

里面有幾個部分:離線的灌數(shù)據(jù)模塊,一般就是腳本;檢索模塊是在線的檢索,目前使用的是最簡單的向量召回;大模型模塊用的是一個chatglm,直接封裝服務(wù)就好了。

很多位置我都為后續(xù)的迭代留了空間,例如向量檢索這里,我切分了很多層,searcher、vec_searcher、vec_index,就是給了很多空間,一個searcher可以有很多不同的索引和索引類型,vec_searcher是向量檢索,下面可以有多個vec_index,對應(yīng)不同的向量模型。

技術(shù)拓展

有關(guān)RAG的拓展,往往會在naive基礎(chǔ)上分為兩個階段,高級RAG和模塊化RAG。

高級的RAG能很大程度優(yōu)化原始RAG的問題,在索引、檢索和生成上都有更多精細(xì)的優(yōu)化,主要的優(yōu)化點(diǎn)會集中在索引、向量模型優(yōu)化、檢索后處理等模塊進(jìn)行優(yōu)化,模塊化RAG是對高級RAG的一種升級,這里面集成了大量優(yōu)化策略,并將這些策略進(jìn)行重組,形成完整的模塊獨(dú)立完成特定功能,很多內(nèi)容和前面的高級RAG提及的內(nèi)容很接近,只是更加模塊化,如搜索模塊、記憶模塊、額外生成模塊、任務(wù)適配模塊、對齊模塊、驗(yàn)證模塊等,因?yàn)镽AG本身是一個高度組織性的項(xiàng)目,因此在迭代過程中,是允許且需要對這些模塊進(jìn)行優(yōu)化和調(diào)整的,可以增減、調(diào)整各個模塊。

具體有什么調(diào)優(yōu)方案,我在下一個章節(jié)展開說。

調(diào)優(yōu)方案

說到調(diào)優(yōu),無論是學(xué)術(shù)界還是工業(yè)界,可謂是八仙過海各顯神通,但是科研和工業(yè)界各自會呈現(xiàn)不同的傾向性,所以這里我分兩個大塊來講,分別是學(xué)術(shù)界和工業(yè)界的思路。

學(xué)術(shù)界

學(xué)術(shù)界自然離不開綜述,1月份我對綜述(Retrieval-Augmented Generation for Large Language Models: A Survey)進(jìn)行了詳細(xì)的講解,字?jǐn)?shù)有7千多(前沿重器[41] | 綜述-面向大模型的檢索增強(qiáng)生成(RAG)),文章里對RAG的升級路徑進(jìn)行了詳細(xì)解釋,其中重點(diǎn)從檢索模塊、生成模塊、整體等角度對RAG目前的關(guān)鍵技術(shù)進(jìn)行了講解,為RAG的調(diào)優(yōu)提供了大量思路。簡單摘錄一下:

檢索模塊重在關(guān)注向量模型的合理表征(領(lǐng)域微調(diào)和下游任務(wù)微調(diào))、query和文檔語義空間的匹配(query改寫、實(shí)體mask等策略)、大模型和檢索模塊協(xié)同的優(yōu)化。

生成模塊關(guān)注檢索的后處理(重點(diǎn)信息提取、檢索結(jié)果重排)、生成結(jié)果的處理等角度。

整體調(diào)優(yōu)從調(diào)優(yōu)階段(入手點(diǎn))、數(shù)據(jù)來源和調(diào)優(yōu)思路三個角度來分析具體的調(diào)優(yōu)方法。

里面的內(nèi)容過多,不好展開,詳情大家可以看我的講解(前沿重器[41] | 綜述-面向大模型的檢索增強(qiáng)生成(RAG))或者是綜述原文(Retrieval-Augmented Generation for Large Language Models: A Survey)。

另外值得提起的是兩篇RAG比較有代表性的文章,這里給出我的解讀以及思考,分別是self-RAG(前沿重器[42] | self-RAG-大模型決策的典型案例探究)和CRAG(前沿重器[43] | 谷歌中科院新文:CRAG-可矯正的檢索增強(qiáng)生成),具體他們是怎么做的以及我是怎么分析和看待的,都在這里了。

工業(yè)界

工業(yè)界也有一篇綜述,不過里面體提到的方案和思路更加偏向應(yīng)用,所以我想把這篇放在工業(yè)界(https://pub.towardsai.net/advanced-rag-techniques-an-illustrated-overview-04d193d8fec6),我也寫了解讀文章(前沿重器[40] | 高級RAG技術(shù)——博客閱讀)。

和前面的綜述類似,這里也提到了基礎(chǔ)RAG、高級RAG和區(qū)別,然后就展開解釋各個模塊的優(yōu)化了:

離線文檔處理。

文檔內(nèi)容增強(qiáng)。

索引構(gòu)建和選擇。

檢索策略多樣性和合并。

查詢后處理。

多輪和聊天引擎。

查詢路由和智能體。

響應(yīng)合成。

模型微調(diào)。

這些結(jié)構(gòu)里,能看到很多現(xiàn)實(shí)應(yīng)用才會遇到的特定問題,例如檢索策略多樣性和合并,工業(yè)界和學(xué)術(shù)界的視角差異還是很大的,工業(yè)界更傾向于拆分分別處理,既能更方便特異化處理提升上限,也方便進(jìn)行分工推進(jìn)工作,而學(xué)術(shù)界其實(shí)并沒有那么擅長尤其是這種橫向的拆分,確實(shí)是不夠?qū)W術(shù)優(yōu)雅。

而且,我自己也根據(jù)自己的經(jīng)驗(yàn)提供了很多優(yōu)化思路,專門有寫文章(心法利器[106] 基礎(chǔ)RAG-調(diào)優(yōu)方案),盡管現(xiàn)在來看還有很多可以聊的部分(后面有機(jī)會我再寫!),但這篇也很實(shí)用了,希望對大家有多幫助,里面提了很多實(shí)踐和分析數(shù)據(jù)才會發(fā)現(xiàn)的優(yōu)化點(diǎn)。我是分為檢索調(diào)優(yōu)、prompt、后處理、微調(diào)這幾個方面去談的。

除此之外,知識的處理也是一個非常重要的一環(huán),尤其現(xiàn)在大模型出來后,文檔處理能力提升還挺明顯的,我正好寫了一篇文章,主要是串講知識的處理和使用流程,同時(shí)介紹了里面的常用方案,大家可以在有個大框架的基礎(chǔ)上進(jìn)一步深入學(xué)習(xí)(心法利器[110] | 知識文檔處理和使用流程)。

有一篇比較取巧地query拓展的文章(前沿重器[38] | 微軟新文query2doc:用大模型做query檢索拓展),屬于對搜索有用,現(xiàn)在視角看對RAG領(lǐng)域也有很大的優(yōu)化收益,所以在這里也重提,非常推薦大家在早期項(xiàng)目上使用這個方案,雖然多了一次大模型調(diào)用的代價(jià),但是效果提升還挺明顯,值得推薦。趁此機(jī)會也補(bǔ)充說明一下,在之前已經(jīng)有一篇類似的論文,HyDE(Precise Zero-Shot Dense Retrieval without Relevance Labels),這篇我沒出解讀,感覺重復(fù)不少,我就不重寫了,但仍很推薦大家也讀讀看。

效果評估

效果評估是算法的重要一環(huán),我也對這塊內(nèi)容進(jìn)行了詳細(xì)調(diào)研和經(jīng)驗(yàn)總結(jié)(心法利器[109] | RAG效果評估經(jīng)驗(yàn))。類似的,我也是從學(xué)術(shù)界和實(shí)際場景應(yīng)用兩個角度分別闡述兩者的評估方案,并從快速驗(yàn)證、穩(wěn)定評估和問題定位三個角度,給出實(shí)踐場景下的建議。

方案選擇和權(quán)衡

RAG只是大模型的一種使用方法,檢索技術(shù)能快速從海量知識中找到和原本問題相關(guān)的知識,借助知識帶來的信息能讓最終的生成效果能夠得以提升,因此RAG本質(zhì)上并非大模型的專屬,從而可以發(fā)現(xiàn)大模型不是非RAG不可,RAG也不是非大模型不可,RAG只是大模型的一種打開方式,他所解決的,是對知識的依賴,這可以是知識的可見性(能懂大模型之前沒見過或者沒學(xué)好的東西)、及時(shí)性(新知識)、存在性(不會的能拒絕)等問題。

而它的使用時(shí)機(jī),以及和微調(diào)之間的權(quán)衡,詳細(xì)地討論可以參考這篇文章(心法利器[108] | 微調(diào)與RAG的優(yōu)缺點(diǎn)分析),在這里我有通過論文、社區(qū)等角度匯總了多方觀點(diǎn),并通過案例分析的方式給出了我的答案。

RAG(檢索增強(qiáng)生成)會不會消亡呢

另外,我想在這里駁斥一個社區(qū)經(jīng)常談及的問題:“RAG(檢索增強(qiáng)生成)會不會消亡呢?”(https://www.zhihu.com/question/637421964),這個問題的背景是目前的大模型Context Length變大,RAG就可能會消失。這個問題我本想專門寫文章,但又感覺不夠長,寫一半成了廢案,于是就放在這里吧,還挺合適的。

第一,這個問題能問出來,說明對RAG背后所希望解決的問題理解不足吧,RAG所要解決的是知識依賴的問題,知識依賴這個事和大模型Context Length的關(guān)系并不緊密。

第二,知識依賴這不只是大模型的問題,而是整個領(lǐng)域都要面對的問題。在很早之前(都是21年那會的文章了),我就寫過一篇文章(心法利器[45] | 模型需要的信息提供夠了嗎),從一個更高角度來聊信息傳遞給模型的重要性,模型要是不知道,那讓他干的事就很可能會辦不好,而向模型傳遞信息,一般有兩個方法,一個是訓(xùn)練,一個是特征,對應(yīng)到現(xiàn)在大模型的場景,那就是微調(diào)和prompt,前者通過大量相似相關(guān)的數(shù)據(jù)案例告訴模型讓模型照著預(yù)測,后者則是把規(guī)則描述講給模型聽或者把關(guān)鍵信息直接傳給模型,降低他的推理壓力,只要關(guān)鍵信息沒有提供給模型,那效果就好不了,過去的bert是這樣,現(xiàn)在的大模型也是這樣。

第三,同樣是模型的問題。無論是大模型,還是之前的小模型,對信息反饋的及時(shí)性,仍舊不足。大家或多或少都會發(fā)現(xiàn),一些去年前期發(fā)布的開源模型,或多或少都對新的知識并不了解,其根本問題就是,沒有學(xué)習(xí)到新知識,要學(xué)習(xí)新知識,不得不經(jīng)過嚴(yán)格的訓(xùn)練和評估才能上線,且還要面對遺忘的問題,要做實(shí)時(shí)的難度非常大,這里就是第二點(diǎn)提出的微調(diào)方向。要解決這種,不得不依賴外部信息的支持,然后通過第二點(diǎn)提到的prompt的方式輸入到模型中,而這些知識,無法繞開檢索來進(jìn)行。舉個例子,某些商店的上架商品信息,天氣日期、新聞等的一些實(shí)時(shí)性要求高的知識,就只能通過數(shù)據(jù)庫來存儲,數(shù)據(jù)庫的更新可以非常敏捷,查詢后配合prompt交給大模型來解決了。

綜上,只要上面的知識依賴、知識更新問題沒有解決,那RAG就仍有一席之地。至于RAG內(nèi)部說到的搜索,可以說是從來沒大火過但是又一直在喝湯的領(lǐng)域了。

審核編輯;黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2203

    瀏覽量

    2227

原文標(biāo)題:近期RAG技術(shù)總結(jié)和串講(4w字RAG文章紀(jì)念)

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    TaD+RAG-緩解大模型“幻覺”的組合新療法

    TaD:任務(wù)感知解碼技術(shù)(Task-aware Decoding,簡稱TaD),京東聯(lián)合清華大學(xué)針對大語言模型幻覺問題提出的一項(xiàng)技術(shù),成果收錄于IJCAI2024。 RAG:檢索增強(qiáng)生成技術(shù)
    的頭像 發(fā)表于 07-16 15:01 ?1819次閱讀
    TaD+<b class='flag-5'>RAG</b>-緩解大模型“幻覺”的組合新療法

    有誰能多介紹些AD的實(shí)踐經(jīng)驗(yàn)嗎?

    有誰能多介紹些AD的實(shí)踐經(jīng)驗(yàn)嗎?
    發(fā)表于 04-03 09:20

    實(shí)踐經(jīng)驗(yàn)還是理論學(xué)習(xí)

    2014考研已結(jié)束,2015考研又開始準(zhǔn)備了,作為一個動手能力平平理論水平也不高的電子一族是走考研理論學(xué)習(xí)之路還是走工作實(shí)踐經(jīng)驗(yàn)之路?大家有什么樣的看法啊?......
    發(fā)表于 03-10 17:24

    不同行業(yè)客戶如何利用物聯(lián)網(wǎng)平臺的實(shí)踐經(jīng)驗(yàn)案例分析

    物聯(lián)網(wǎng)是IT和OT結(jié)合的產(chǎn)物,任何以IT為中心的定義都無法描述OT的重要性,反之亦然。在本文中我將不同行業(yè)客戶如何利用物聯(lián)網(wǎng)平臺的實(shí)踐經(jīng)驗(yàn)分享給大家。
    的頭像 發(fā)表于 12-01 16:46 ?5319次閱讀

    OpenHarmony Tech Day技術(shù)日 創(chuàng)新教育教學(xué)實(shí)踐經(jīng)驗(yàn)分享

      張澤華就基于OpenHarmony的創(chuàng)新教育教學(xué)實(shí)踐經(jīng)驗(yàn)分享進(jìn)行演講
    的頭像 發(fā)表于 04-25 14:44 ?691次閱讀
    OpenHarmony Tech Day技術(shù)日 創(chuàng)新教育教學(xué)<b class='flag-5'>實(shí)踐經(jīng)驗(yàn)</b>分享

    Modbus協(xié)議通訊學(xué)習(xí)仿真器虛擬串口完整套裝實(shí)踐經(jīng)驗(yàn)總結(jié)

    Modbus通訊學(xué)習(xí)完整套裝,實(shí)踐經(jīng)驗(yàn)總結(jié)親測好用助力新手快速掌握MOSBUS協(xié)議的讀寫操作,非常好用。工具套裝包括MODBUS仿真器、虛擬串口對、MODBUS調(diào)試助手、串口調(diào)試助手。提供操作教程。
    的頭像 發(fā)表于 11-22 14:49 ?956次閱讀
    Modbus協(xié)議通訊<b class='flag-5'>學(xué)習(xí)</b>仿真器虛擬串口完整套裝<b class='flag-5'>實(shí)踐經(jīng)驗(yàn)</b>總結(jié)

    使用Koordinator支持異構(gòu)資源管理和任務(wù)調(diào)度場景的實(shí)踐經(jīng)驗(yàn)

    Koordinator 是阿里云基于過去我們建設(shè)的統(tǒng)一調(diào)度系統(tǒng)中積累的技術(shù)和實(shí)踐經(jīng)驗(yàn),對外開源了新一代的調(diào)度系統(tǒng)。
    的頭像 發(fā)表于 08-15 10:09 ?671次閱讀
    使用Koordinator支持異構(gòu)資源管理和任務(wù)調(diào)度場景的<b class='flag-5'>實(shí)踐經(jīng)驗(yàn)</b>

    如何在不微調(diào)的情況下提高RAG的準(zhǔn)確性?

    數(shù)據(jù)科學(xué)家、AI 工程師、MLOps 工程師和 IT 基礎(chǔ)設(shè)施專業(yè)人員在設(shè)計(jì)和部署檢索增強(qiáng)生成(RAG)工作流時(shí),必須考慮各項(xiàng)因素,比如大語言模型(LLM) 核心組件以及評估方法等等。
    的頭像 發(fā)表于 01-05 10:26 ?888次閱讀
    如何在不微調(diào)的情況下提高<b class='flag-5'>RAG</b>的準(zhǔn)確性?

    搜索出生的百川智能大模型RAG爬坑之路總結(jié)

    今天對百川的RAG方法進(jìn)行解讀,百川智能具有深厚的搜索背景,來看看他們是怎么爬RAG的坑的吧~
    的頭像 發(fā)表于 01-05 15:02 ?1360次閱讀
    搜索出生的百川智能大模型<b class='flag-5'>RAG</b>爬坑之路總結(jié)

    深入了解RAG技術(shù)

    這是任何RAG流程的最后一步——基于我們仔細(xì)檢索的所有上下文和初始用戶查詢生成答案。最簡單的方法可能是將所有獲取到的上下文(超過某個相關(guān)性閾值的)連同查詢一起一次性輸入給LLM。
    的頭像 發(fā)表于 01-17 11:36 ?2651次閱讀
    深入了解<b class='flag-5'>RAG</b>技術(shù)

    阿里云推出企業(yè)級大模型RAG系統(tǒng)

    在國際AI大數(shù)據(jù)峰會上,阿里云重磅推出了企業(yè)級大模型檢索增強(qiáng)生成(RAG)解決方案。這一解決方案旨在為企業(yè)提供更強(qiáng)大、更智能的大模型應(yīng)用工具,幫助企業(yè)更有效地利用大數(shù)據(jù)和人工智能技術(shù)。
    的頭像 發(fā)表于 02-05 09:54 ?1041次閱讀

    檢索增強(qiáng)生成(RAG)如何助力企業(yè)為各種企業(yè)用例創(chuàng)建高質(zhì)量的內(nèi)容?

    在生成式 AI 時(shí)代,機(jī)器不僅要從數(shù)據(jù)中學(xué)習(xí),還要生成類似人類一樣的文本、圖像、視頻等。檢索增強(qiáng)生成(RAG)則是可以實(shí)現(xiàn)的一種突破性方法。
    的頭像 發(fā)表于 03-29 15:09 ?768次閱讀

    如何手?jǐn)]一個自有知識庫的RAG系統(tǒng)

    RAG通常指的是"Retrieval-Augmented Generation",即“檢索增強(qiáng)的生成”。這是一種結(jié)合了檢索(Retrieval)和生成(Generation)的機(jī)器學(xué)習(xí)模型,通常
    的頭像 發(fā)表于 06-17 14:59 ?440次閱讀

    英特爾軟硬件構(gòu)建模塊如何幫助優(yōu)化RAG應(yīng)用

    深入研究檢索增強(qiáng)生成 (Retrieval Augmented Generation, RAG),該創(chuàng)新方法定義了企業(yè)和機(jī)構(gòu)如何利用大語言模型(LLM)來發(fā)揮其數(shù)據(jù)的價(jià)值。本文將探索若干英特爾
    的頭像 發(fā)表于 07-24 15:12 ?308次閱讀
    英特爾軟硬件構(gòu)建模塊如何幫助優(yōu)化<b class='flag-5'>RAG</b>應(yīng)用

    使用OpenVINO和LlamaIndex構(gòu)建Agentic-RAG系統(tǒng)

    RAG 系統(tǒng)的全稱是 Retrieval-augmented Generation,本質(zhì)上是 Prompt Engineering,通過在 Prompt 中注入檢索得到的外部數(shù)據(jù),可以有效地
    的頭像 發(fā)表于 10-12 09:59 ?129次閱讀
    使用OpenVINO和LlamaIndex構(gòu)建Agentic-<b class='flag-5'>RAG</b>系統(tǒng)