小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一文詳談RAG優(yōu)化方案與實(shí)踐

 黃爸爸好 2024-06-11 發(fā)布于上海

圖片

阿里妹導(dǎo)讀

RAG通過檢索現(xiàn)有的大量知識,結(jié)合強(qiáng)大的生成模型,為復(fù)雜的問答、文本摘要和生成任務(wù)帶來了全新的解決方案。本文詳細(xì)的介紹了RAG遇到的挑戰(zhàn)、通用范式、工程實(shí)踐、優(yōu)化實(shí)現(xiàn)策略等。

一、RAG的背景介紹

隨著ChatGPT的興起,大語言模型再次走進(jìn)人們的視野,其在NLP領(lǐng)域表現(xiàn)出的語言識別、理解以及推理能力令人驚嘆。越來越多的行業(yè)開始探索大語言模型的應(yīng)用,比如政務(wù)、醫(yī)療、交通、導(dǎo)購等行業(yè)。

通義系列、GPT系列、LLama系列等模型,在語言交互場景下表現(xiàn)十分搶眼。以Gemini為代表這類大模型甚至發(fā)展出了視覺和聽覺,朝著智能體的方向演化。他們在多個(gè)指標(biāo)上展現(xiàn)的能力甚至已經(jīng)超過了人類。

然而,大型語言模型也存在諸多不足:

  • 知識的局限性:模型知識的廣度獲取嚴(yán)重依賴于訓(xùn)練數(shù)據(jù)集的廣度,目前市面上大多數(shù)的大模型的訓(xùn)練集來源于網(wǎng)絡(luò)公開數(shù)據(jù)集,對于一些內(nèi)部數(shù)據(jù)、特定領(lǐng)域或高度專業(yè)化的知識,無從學(xué)習(xí)。
  • 知識的滯后性:模型知識的獲取是通過使用訓(xùn)練數(shù)據(jù)集訓(xùn)練獲取的,模型訓(xùn)練后產(chǎn)生的一些新知識,模型是無法學(xué)習(xí)的,而大模型訓(xùn)練成本極高,不可能經(jīng)常為了彌補(bǔ)知識而進(jìn)行模型訓(xùn)練。
  • 幻覺問題:所有的AI模型的底層原理都是基于數(shù)學(xué)概率,其模型輸出實(shí)質(zhì)上是一系列數(shù)值運(yùn)算,大模型也不例外,所以它有時(shí)候會一本正經(jīng)地胡說八道,尤其是在大模型自身不具備某一方面的知識或不擅長的場景。而這種幻覺問題的區(qū)分是比較困難的,因?yàn)樗笫褂谜咦陨砭邆湎鄳?yīng)領(lǐng)域的知識。
  • 數(shù)據(jù)安全性:對于企業(yè)來說,數(shù)據(jù)安全至關(guān)重要,沒有企業(yè)愿意承擔(dān)數(shù)據(jù)泄露的風(fēng)險(xiǎn),將自身的私域數(shù)據(jù)上傳第三方平臺進(jìn)行訓(xùn)練。這也導(dǎo)致完全依賴通用大模型自身能力的應(yīng)用方案不得不在數(shù)據(jù)安全和效果方面進(jìn)行取舍。

為了解決純參數(shù)化模型的局限,語言模型可以采取半?yún)?shù)化方法,將非參數(shù)化的語料庫數(shù)據(jù)庫與參數(shù)化模型相結(jié)合。這種方法被稱為RAG(Retrieval-Augmented Generation)。

二、RAG的挑戰(zhàn)

RAG通過檢索現(xiàn)有的大量知識,結(jié)合強(qiáng)大的生成模型,為復(fù)雜的問答、文本摘要和生成任務(wù)帶來了全新的解決方案。然而,盡管RAG有其獨(dú)特的優(yōu)勢,但在實(shí)踐過程中也遭遇了多個(gè)挑戰(zhàn)。

2.1 數(shù)據(jù)質(zhì)量差導(dǎo)致檢索效果差

在RAG模型中,檢索階段的輸出直接影響到生成階段的輸入和最終的輸出質(zhì)量。如果RAG數(shù)據(jù)庫中存在大量的錯誤信息并被檢索,這可能引導(dǎo)模型走向錯誤的方向,即使優(yōu)化檢索階段做大量的工作,可能對結(jié)果的影響也微乎其微。

2.2 數(shù)據(jù)向量化的信息損失

為了實(shí)現(xiàn)高效的文檔檢索,通常需要將原始的文本數(shù)據(jù)轉(zhuǎn)化為數(shù)值向量,這一過程又稱為數(shù)據(jù)向量化。數(shù)據(jù)向量化的目的是將文本數(shù)據(jù)映射到一個(gè)低維的向量空間中,使得語義相似的文本在向量空間中的距離較近,而語義不相似的文本在向量空間中的距離較遠(yuǎn)。然而,數(shù)據(jù)向量化也會導(dǎo)致一定程度的信息損失,因?yàn)槲谋緮?shù)據(jù)的復(fù)雜性和多樣性很難用有限的向量來完全表達(dá)。因此,數(shù)據(jù)向量化可能會忽略一些文本數(shù)據(jù)的細(xì)節(jié)和特征,從而影響文檔檢索的準(zhǔn)確性。

2.3 語義搜索的不準(zhǔn)確

在RAG中,語義搜索是指根據(jù)用戶的問題,從文檔集合中檢索出與問題語義最相關(guān)的文檔,這一過程又稱為數(shù)據(jù)召回。語義搜索的難點(diǎn)在于如何理解用戶的問題和文檔的語義,以及如何衡量問題和文檔之間的語義相似度。目前,語義搜索的主流方法是基于數(shù)據(jù)向量化的結(jié)果,利用向量空間中的距離或相似度來度量語義相似度。然而,這種方法也存在一些局限性,例如向量空間中的距離或相似度并不一定能反映真實(shí)的語義相似度,而且向量空間中的噪聲和異常值也會干擾語義搜索的結(jié)果。因此,語義搜索的準(zhǔn)確率也無法有100%的保證。

三、RAG通用范式

3.1 Naive RAG

原始RAG是最早的研究范式,主要包括以下幾個(gè)步驟:

建立索引:這一過程通常在離線狀態(tài)下進(jìn)行,數(shù)據(jù)清洗并分塊,將分塊后的知識通過embedding模型產(chǎn)出語義向量,并創(chuàng)建索引。

檢索:用戶的query問題,使用相同的embedding模型,計(jì)算問題嵌入和文檔塊嵌入之間的相似度,選擇相似度最高的前K個(gè)文檔塊作為當(dāng)前問題的增強(qiáng)上下文信息。

生成:將給定的問題和相關(guān)文檔合并為新的提示,然后由大型語言模型基于提供的信息回答問題。如果有歷史對話信息,也可以合并到提示中,用于多輪對話。

圖片??

初級RAG主要在三個(gè)方面面臨挑戰(zhàn):檢索質(zhì)量低、生成質(zhì)量差和增強(qiáng)過程難。

  • 檢索質(zhì)量低:首先使用長文本做索引,不能很好的突出主題,建立索引時(shí),核心知識湮沒在大量無用的信息中,其次,使用用戶原始query做檢索,不能很好的突出其核心訴求,這就導(dǎo)致用戶query和知識索引不能很好的匹配,檢索質(zhì)量比較差。
  • 生成質(zhì)量差:未檢索到知識或檢索知識質(zhì)量差時(shí),大模型自主回答私域問題時(shí),容易產(chǎn)生幻覺,或回答內(nèi)容比較空洞,無法直接使用,知識庫失去了本身的意義。
  • 增強(qiáng)過程難:將檢索到的信息與不同任務(wù)整合可能具有挑戰(zhàn)性,有時(shí)會導(dǎo)致輸出不連貫或不一致。此外,還有一個(gè)擔(dān)憂是生成模型可能過度依賴增強(qiáng)信息,導(dǎo)致輸出僅僅是復(fù)述檢索內(nèi)容而沒有添加有洞察力或綜合信息。

要解決上面的問題,需要在檢索前和檢索后做一些優(yōu)化,這就衍生出了高級RAG的解決方案。

3.2 Advanced RAG

高級RAG相比于初級RAG,基于初級RAG范式,圍繞著知識檢索做優(yōu)化,新增了檢索前、檢索中以及檢索后的優(yōu)化策略,用于解決索引、檢索和生成的問題。

圖片

檢索前優(yōu)化

檢索前優(yōu)化集中在知識切分、索引方式和query改寫的優(yōu)化上。

知識切分主要把較長的文本按照語義內(nèi)聚性的分析切成小塊,解決核心知識湮沒以及語義截?cái)嗟膯栴}。

索引方式優(yōu)化技術(shù)通過優(yōu)化數(shù)據(jù)索引組織方式提升檢索效果。比如去除無效數(shù)據(jù)或插入某些數(shù)據(jù)來提高索引覆蓋程度,從而達(dá)到與用戶問題的高匹配度問題。

query改寫主要需要理解用戶想表達(dá)的意圖,把用戶原始的問題轉(zhuǎn)換成適合知識庫檢索的問題,從而提高檢索的精準(zhǔn)程度。

檢索優(yōu)化

檢索階段的目標(biāo)是召回知識庫中最相關(guān)知識。

通常,檢索基于向量搜索,它計(jì)算查詢與索引數(shù)據(jù)之間的語義相似性。因此,大多數(shù)檢索優(yōu)化技術(shù)都圍繞嵌入模型展開:

微調(diào)嵌入模型,將嵌入模型定制為特定領(lǐng)域的上下文,特別是對于術(shù)語不斷演化或罕見的領(lǐng)域。例如,BAAI/bge是一個(gè)高性能的嵌入模型,可以進(jìn)行微調(diào)。

動態(tài)嵌入根據(jù)單詞的上下文進(jìn)行調(diào)整,而靜態(tài)嵌入則為每個(gè)單詞使用單一向量。例如,OpenAI的embeddings-ada-02是一個(gè)復(fù)雜的動態(tài)嵌入模型,可以捕獲上下文理解。

除了向量搜索之外,還有其他檢索技術(shù),例如混合搜索,通常是指將向量搜索與基于關(guān)鍵字的搜索相結(jié)合的概念。如果您的檢索需要精確的關(guān)鍵字匹配,則此檢索技術(shù)非常有益。

檢索后優(yōu)化

對檢索到的上下文進(jìn)行額外處理可以幫助解決一些問題,例如超出上下文窗口限制或引入噪聲,從而阻礙對關(guān)鍵信息的關(guān)注。在RAG調(diào)查中總結(jié)的檢索后優(yōu)化技術(shù)包括:

提示壓縮:通過刪除無關(guān)內(nèi)容并突出重要上下文,減少整體提示長度。

重新排序:使用機(jī)器學(xué)習(xí)模型重新計(jì)算檢索到的上下文的相關(guān)性得分。

3.3 Modular RAG

隨著 RAG 技術(shù)的進(jìn)一步發(fā)展和演變,新的技術(shù)突破了傳統(tǒng)的檢索 - 生成框架,基于此催生了模塊化RAG 的概念。在結(jié)構(gòu)上它更加自由的和靈活,引入了更多的具體功能模塊,例如查詢搜索引擎、融合多個(gè)回答。技術(shù)上將檢索與微調(diào)、強(qiáng)化學(xué)習(xí)等技術(shù)融合。流程上也對 RAG 模塊之間進(jìn)行設(shè)計(jì)和編排,出現(xiàn)了多種的 RAG 模式。

然而,模塊化RAG并不是突然出現(xiàn)的,三個(gè)范式之間是繼承與發(fā)展的關(guān)系。Advanced RAG是Modular RAG的一種特例形式,而Naive RAG則是Advanced RAG的一種特例。??

圖片

3.3.1 新增模塊

  • 搜索模塊:與相似度檢索不同,這部分可以被應(yīng)用于特定的場景并在一些特殊語料上進(jìn)行檢索。一般使用向量、分詞、NL2SQL或NL2Cypher等能力進(jìn)行檢索。
  • 預(yù)測模塊:這個(gè)技術(shù)減少用戶問題中的冗余和噪聲,更加突出用戶真實(shí)的意圖。該模塊不是直接進(jìn)行檢索,而是利用LLM來生成必要的上下文。與通過直接檢索獲得的內(nèi)容相比,LLM生成上下文后檢索得到的內(nèi)容更有可能包含相關(guān)信息。
  • 記憶模塊:多輪對話的留存,以便下次會話時(shí),能知道之前用戶問了哪些問題。
  • 融合模塊:RAG-Fusion使用LLM將用戶查詢擴(kuò)展為多個(gè)查詢。這個(gè)方法不僅捕捉了用戶需要的顯示信息,也揭示了更深層次的知識。融合過程包括對原始查詢和擴(kuò)展查詢的并行向量搜索,智能重排序,并得到最佳搜索結(jié)果。這種復(fù)雜的方法確保了搜索結(jié)果與用戶的顯式和隱含的意圖保持緊密一致,從而能找到更深刻和更相關(guān)的信息。
  • 路由模塊:RAG系統(tǒng)的檢索流程使用了各種來源的內(nèi)容,包含不同領(lǐng)域、語言、形式。這些內(nèi)容都可以根據(jù)需要進(jìn)行修改或合并。查詢路由器還為查詢選擇適當(dāng)?shù)臄?shù)據(jù)庫,其中可能包括各種來源內(nèi)容,如向量數(shù)據(jù)庫、圖數(shù)據(jù)庫或關(guān)系數(shù)據(jù)庫,或?qū)哟谓Y(jié)構(gòu)索引。開發(fā)者需要預(yù)先定義好查詢路由器的決策方式,并通過LLM調(diào)用執(zhí)行,它將查詢指向所選的索引。
  • 任務(wù)適配器模塊:根據(jù)任務(wù)定制化Adapter。

3.3.2 新增模式

基于上面六大模塊,可快速組合出屬于自己業(yè)務(wù)的RAG,每個(gè)模塊高度可擴(kuò)展,靈活性極大。

比如:

RR模式,即可構(gòu)建出傳統(tǒng)的Naive RAG;
RRRR模式可構(gòu)架出Advanced RAG;

還可以實(shí)現(xiàn)基于檢索結(jié)果和用戶評價(jià)的獎懲機(jī)制,用戶強(qiáng)化和糾正檢索器的行為。

四、RAG通用范式的工程實(shí)踐

4.1 技術(shù)架構(gòu)

??圖片

我們實(shí)踐的RAG技術(shù)架構(gòu)主要可分為一底座三中心,分別是數(shù)據(jù)管理底座、模型中心、多引擎中心、召回策略中心。

在工程架構(gòu)上,每個(gè)子系統(tǒng)按照能力劃分子Modular,在上層配置調(diào)度策略并統(tǒng)一調(diào)度,符合Modular RAG的技術(shù)規(guī)范;

在檢索技術(shù)上,圍繞著檢索做了大量的索引降噪、多路召回、知識去重、重排等操作,符合Advanced RAG的技術(shù)規(guī)范。

4.1.1 知識庫基礎(chǔ)數(shù)據(jù)底座

基礎(chǔ)數(shù)據(jù)底座中包含數(shù)據(jù)生產(chǎn)和數(shù)據(jù)加工的能力。

數(shù)據(jù)生產(chǎn)中有數(shù)據(jù)版本、血緣管理、引擎同步等能力,

知識加工主要包含數(shù)據(jù)切片、索引優(yōu)化等能力

4.1.2 模型中心

模型中心主要包含生成式大模型和理解式小模型。

生成式大模型主要提供:

  • 引用式生成的能力,通過檢索到的知識和用戶的問題,做增強(qiáng)生成;
  • query改寫能力,理解用戶真實(shí)意圖,并改寫或泛化成適合知識庫檢索的query;
  • Text2Cypher能力,把知識庫元數(shù)據(jù)和用戶的問題,轉(zhuǎn)成圖譜語言,支撐上層業(yè)務(wù)的圖譜檢索;
  • NL2SQL能力,如果業(yè)務(wù)中有需要訪問數(shù)據(jù)庫來獲取具體數(shù)據(jù)的場景,可提供此能力;

理解式小模型主要提供:

  • 文檔切塊能力,負(fù)責(zé)把大塊的知識切分成小的片段;
  • embedding能力,把知識庫元數(shù)據(jù)和用戶的問題轉(zhuǎn)成向量;
  • rerank能力,負(fù)責(zé)把多路召回的數(shù)據(jù);

4.1.3 多引擎中心

多引擎中心包含向量、分詞以及圖譜引擎,在引擎中心提供多種檢索方式,以提高知識的命中率。

4.1.4 召回策略中心

召回策略中心在整個(gè)RAG建設(shè)中起到調(diào)度的作用,在這里去執(zhí)行query改寫、多路召回、檢索后置處理以及大模型引用式生成答案。

基于上面的一底座兩中心架構(gòu),每個(gè)子能力模塊化,并在上層配置調(diào)度策略,符合Modular RAG的技術(shù)規(guī)范。

4.2 RAG建設(shè)路徑

?圖片

RAG整體業(yè)務(wù)鏈路主要分為5大步驟:知識生產(chǎn)與加工、query改寫、數(shù)據(jù)召回、后置處理以及大模型生產(chǎn)。

4.2.1 第一階段-可運(yùn)行

第一階段保證系統(tǒng)可用。

知識生產(chǎn)與加工

先按照固定字符切分,預(yù)留冗余字符來保證語義不被截?cái)唷?/span>

query改寫

結(jié)合上下文,先使用大模型的理解能力,突出用戶意圖,以便更好的回答用戶問題。

數(shù)據(jù)召回

第一步可以先實(shí)現(xiàn)向量召回,多路召回中,向量召回的比重是最大的,也是最關(guān)鍵的一種召回方式,需要找一個(gè)和自己業(yè)務(wù)比較契合的embedding模型和向量數(shù)據(jù)庫。

數(shù)據(jù)后置處理

因?yàn)閿?shù)據(jù)召回只有向量召回,這一步可以只使用向量近似得分做排序,設(shè)置符合業(yè)務(wù)預(yù)期的閾值篩選數(shù)據(jù)。并把篩選后的知識數(shù)據(jù)提供給大模型,生成答案。

4.2.2 第二階段-提效果

第二階段的主要目標(biāo)是提升RAG的檢索效果。

知識生產(chǎn)與加工

  • 基于固定字符的知識切分,雖然預(yù)留了冗余字符,但還是會出現(xiàn)知識內(nèi)聚性被破壞的現(xiàn)象,此時(shí)需要有一個(gè)基于語義切分知識的模型,根據(jù)語義切分,上下文聯(lián)系比較緊密的句子拆分成一條知識。
  • 根據(jù)數(shù)據(jù)檢索的情況,分析索引噪音,指定降噪措施。

query改寫

  • 明確用戶意圖。
  • 探索RAG-Fusion模式,根據(jù)用戶的query生成多個(gè)相似query,多相似query檢索數(shù)據(jù)。
  • 多任務(wù)query抽取,把一個(gè)query任務(wù),拆分成多個(gè)子query進(jìn)行檢索數(shù)據(jù)。

數(shù)據(jù)召回

  • 基于向量檢索的基礎(chǔ)上,根據(jù)業(yè)務(wù)場景,探索分詞、圖譜的能力,甚至有些業(yè)務(wù)還需要NL2SQL的能力。

數(shù)據(jù)后置處理

  • 數(shù)據(jù)去重合并。
  • 多路召回結(jié)果的重排能力建設(shè),設(shè)置統(tǒng)一的排序篩選標(biāo)準(zhǔn)。

4.2.3 第三階段-高擴(kuò)展

第三階段的主要目標(biāo)是在工程上提升可擴(kuò)展性,各個(gè)業(yè)務(wù)功能做模塊化設(shè)計(jì),通過召回策略配置中心,配置出業(yè)務(wù)所需要的RAG流程。

五、RAG范式的優(yōu)化實(shí)現(xiàn)策略

5.1 知識加工生成的實(shí)現(xiàn)策略

5.1.1 知識切片優(yōu)化

文檔片段過長會給知識檢索造成很大影響,主要有兩部分的問題:

1)索引混淆:核心關(guān)鍵詞被湮沒在大量的無效信息中,導(dǎo)致建立的索引,核心知識占的比重比較小,無論時(shí)語義匹配、分詞匹配還是圖譜檢索,都很難精準(zhǔn)命中關(guān)鍵數(shù)據(jù),從而影響生成答案的質(zhì)量;;

2)token過長導(dǎo)致語義會被截?cái)啵褐R數(shù)據(jù)在embedding時(shí),可能會因?yàn)閠oken超長導(dǎo)致語義截?cái)啵恢R檢索結(jié)束后,知識片段越長,輸入給大模型的信息條數(shù)就越少,導(dǎo)致大模型也無法獲取足夠的有價(jià)值的輸入,從而影響生成答案的質(zhì)量。

5.1.1.1 按固定字符切分

按固定字符拆分知識,通過設(shè)置冗余字符來降低句子截?cái)嗟膯栴},使一個(gè)完整的句子要么在上文,要么在下文,這種方式能盡量避免在句子中間斷開的問題。

這種實(shí)現(xiàn)方式成本最低,在業(yè)務(wù)起步階段,可以先使用這種方式。

??圖片

5.1.1.2 按句子語義切分

按固定字符切,有時(shí)候會遇到句子含義聯(lián)系比較緊密的片段被切分成了兩條數(shù)據(jù),導(dǎo)致數(shù)據(jù)質(zhì)量比較差。可以通過語義理解小模型進(jìn)行句子拆分,使拆分出來的知識片段語義更加完整。

5.1.2 索引優(yōu)化

5.1.2.1 HyDE

原始的文檔和用戶問題一對一匹配,會存在匹配容錯率低的問題,一旦知識一次沒匹配上,那就無法被召回。

優(yōu)化方案

處理后的知識數(shù)據(jù),為了提高知識的覆蓋范圍,可針對知識數(shù)據(jù)預(yù)先用大模型生成一些有關(guān)聯(lián)的假設(shè)性問題,當(dāng)命中這些假設(shè)性問題時(shí),也可搜索到相應(yīng)的知識數(shù)據(jù)。

??圖片

5.1.2.2 索引降噪

索引降噪主要根據(jù)業(yè)務(wù)特點(diǎn),去除索引數(shù)據(jù)中的無效成分,突出其核心知識,降低噪音的干擾。針對QA-pair對和文章片段的知識,處理起來的方法也類似。

QA-pair對類型知識

這種數(shù)據(jù)一般會以Q作為索引列,與用戶的問題組成QQ搜索模式,這樣數(shù)據(jù)召回時(shí)匹配難度會低。如果使用原始的Q做索引,又會存在無效此干擾的問題,比如:

用戶query

匹配到的query

How can I start to sell on Alibaba?

How can I register an account on Alibaba.com?

句子中,無效的相似成分超過60%,這就會對索引匹配造成很大的干擾。

優(yōu)化方案

通過大模型泛化向量索引中的Q,突出核心關(guān)鍵詞,并且把對應(yīng)的Answer的主題利用大模型抽取,Q和A都突出關(guān)鍵詞。

How can I register an account on Alibaba.com? --> register an account. + Answer主題。

突出核心主題,降低無效數(shù)據(jù)的干擾。?

文章片段類知識

文章片段類知識,由于篇幅長,且在語義上與問題可能差異較大,導(dǎo)致無法很好的匹配。

優(yōu)化方案

會通過HyDE生成假設(shè)性問題,然后組成QA-pair對的形式,然后再利用大模型抽取核心關(guān)鍵詞,用來降噪。

5.1.2.3 多級索引

近似檢索和傳統(tǒng)數(shù)據(jù)庫檢索不同,近似檢索通過聚類或HNSW建立索引后,在檢索時(shí),會有一定的近似誤差,如果在大量的知識庫中檢索,會產(chǎn)生檢索準(zhǔn)確度和性能的問題,在大型數(shù)據(jù)庫的情況下,一種有效的方法是創(chuàng)建兩個(gè)索引——一個(gè)由摘要組成,另一個(gè)由文檔塊組成,并分兩步搜索,首先通過摘要過濾掉相關(guān)文檔,然后只在這個(gè)相關(guān)組內(nèi)搜索。

圖片??

5.2 query改寫的實(shí)現(xiàn)策略

直接使用原始query進(jìn)行檢索,會存在以下幾個(gè)問題:

1)知識庫內(nèi)的數(shù)據(jù)無法直接回答,需要組合知識才能找到答案。

2)涉及細(xì)節(jié)比較多的問題時(shí),大模型往往無法進(jìn)行高質(zhì)量的回答。

業(yè)務(wù)提出了RAG-Fusion和Step-Back Prompting的兩種優(yōu)化方案。

5.2.1 RAG-Fusion

RAG-Fusion可以認(rèn)為是MultiQueryRetriever的進(jìn)化版,RAG-Fusion首先根據(jù)原始question從不同角度生成多個(gè)版本的新question,用以提升question的質(zhì)量;然后針對每個(gè)question進(jìn)行向量檢索,到此步為止都是MultiQueryRetriever的功能;與之不同的是,RAG-Fusion在喂給LLM生成答案之前增加了一個(gè)排序的步驟。

RAG-Fusion主要流程如下圖所示:

查詢生成/改寫:使用 LLM 模型對用戶的初始查詢,進(jìn)行改寫生成多個(gè)查詢。

向量搜索:對每個(gè)生成的查詢進(jìn)行基于向量的搜索,形成多路搜索召回。

倒數(shù)排序融合:應(yīng)用倒數(shù)排名融合算法,根據(jù)文檔在多個(gè)查詢中的相關(guān)性重新排列文檔。

重排: 使用一些重排算法對結(jié)果進(jìn)行重排。

輸出生成:然后可以參考重新排列后的topK搜索結(jié)果,生成最終輸出。

圖片??

排序包含兩個(gè)動作,一是獨(dú)立對每個(gè)question檢索返回的內(nèi)容根據(jù)相似度排序,確定每個(gè)返回chunk在各自候選集中的位置,相似度越高排名越靠前。二是對所有question返回的內(nèi)容利用RRF(Reciprocal Rank Fusion)綜合排序。

??圖片

5.2.2 Step-Back Prompting

通過引入一個(gè)后退一步的問題,這個(gè)問題通常更容易回答,并且圍繞一個(gè)更廣泛的概念或原則,大型語言模型可以更有效地構(gòu)建它們的推理。

Step-Back Prompting 過程典型的Step-Back Prompting過程主要包括兩個(gè)步驟:

1)抽象:這是指大型語言模型(LLM)不會立即嘗試回答原始問題。相反,它會提出一個(gè)關(guān)于更大的概念或規(guī)則的更一般性問題。這有助于它思考和查找事實(shí)。

2)推理:在得到一般問題的答案后,大型語言模型(LLM)使用這些信息來思考并回答原始問題。這被稱為“抽象基礎(chǔ)推理”。它利用來自更大觀點(diǎn)的信息來對原始的、更難的問題給出一個(gè)好的答案。

示例

比如問:如果一輛汽車以100公里/小時(shí)的速度行駛,行駛200公里,需要多長時(shí)間?

此時(shí)大模型對數(shù)學(xué)計(jì)算可能會比較迷茫。

后退提示:給定速度和距離,計(jì)算時(shí)間的基本公式是什么?

輸入:為了計(jì)算時(shí)間,我們使用以下公式:時(shí)間=距離/速度

使用公式,時(shí)間=200公里/100公里/小時(shí)=2小時(shí)。

5.2.3 用戶query降噪

當(dāng)用戶問一個(gè)問題時(shí),有些停用詞是不起作用的,比如:How to register an account on Alibaba.com,在這個(gè)語境中,核心訴求是 register an account,至于How to在表達(dá)核心訴求時(shí),意義沒那么大,其次,當(dāng)下沉Alibaba的外貿(mào)業(yè)務(wù)時(shí),on Alibaba.com也變得沒那么重要,因?yàn)锳libaba的外貿(mào)業(yè)務(wù)系統(tǒng)就是運(yùn)行在Alibaba.com上,知識庫中的知識自然也是Alibaba.com相關(guān)的。

可以針對用戶問題,去除停用詞,比如ES中維護(hù)了一份停用詞庫,可直接使用。如果解決方案中沒有ES,也可自己維護(hù)停用詞庫,在nltk、stopwords-iso、Rank NL、Common Stop Words in Various Languages等開源庫中維護(hù)了大量的停用詞庫,可根據(jù)需要取用。

5.3 數(shù)據(jù)召回的實(shí)現(xiàn)策略

5.3.1 向量召回

在NLP領(lǐng)域,向量召回一直處于無可替代的地位,把自然語言轉(zhuǎn)換成低緯度向量,基于向量的相似度來評判語義的相似程度,這也是業(yè)界比較流行的做法。再結(jié)合上面提到的向量索引的降噪、假設(shè)性性問題以及對用戶query的優(yōu)化,一般都能取得比較不錯的成績。

??圖片

但單純的語義向量召回時(shí),當(dāng)文本向量化模型訓(xùn)練不夠優(yōu)時(shí),向量召回的準(zhǔn)確率會比較低,此時(shí)需要利用其他召回方式作為補(bǔ)充。

除了向量召回,常見的召回方式還有分詞召回以及圖譜召回。

5.3.2 分詞召回

傳統(tǒng)的倒排索引檢索,基于BM25打分排序機(jī)制,從而找到從分詞上比較相似的知識數(shù)據(jù)。結(jié)合上面提到的去除停用詞策略,以達(dá)到比較精準(zhǔn)的程度。

圖片??

5.3.3 圖譜召回

知識圖譜在知識生產(chǎn)和關(guān)系提取上有著獨(dú)特的優(yōu)勢,他能基于現(xiàn)有的數(shù)據(jù),根據(jù)其關(guān)系的抽象,產(chǎn)生新的知識。

比如現(xiàn)在有兩條知識:

1)阿里巴巴在國內(nèi)采用A公司的物流服務(wù)。

2)阿里巴巴與物流公司B達(dá)成合作,為客戶提供更加優(yōu)質(zhì)、便捷的物流服務(wù)。

上面兩條知識經(jīng)過 NL2Cypher抽?。?/span>

alibaba-logisticsServices-A

alibaba-logisticsServices-B

基于這兩條知識,可產(chǎn)生一條新知識:alibaba-logisticsServices-A & B

當(dāng)用戶問阿里巴巴平臺支持哪些物流服務(wù)時(shí),可直接找到 A & B。

5.3.4 多路召回

在NLP領(lǐng)域,單純的語義向量召回時(shí),當(dāng)文本向量化模型訓(xùn)練不夠優(yōu)時(shí),向量召回的準(zhǔn)確率會比較低,此時(shí)需要利用其他召回作為補(bǔ)充。一般業(yè)務(wù)會采用多路召回的方式,來達(dá)到比較好的召回效果,多路召回的結(jié)果經(jīng)過模型精排,最終篩選出優(yōu)質(zhì)結(jié)果。至于使用幾種召回策略,根據(jù)業(yè)務(wù)而定。

??圖片

5.4 后置處理的實(shí)現(xiàn)策略

5.4.1 文檔合并去重

首先多路召回可能都會召回同一個(gè)結(jié)果,針對這部分?jǐn)?shù)據(jù)要去重,否則對大模型輸入的token數(shù)是一種浪費(fèi)。

其次,去重后的文檔可以根據(jù)數(shù)據(jù)切分的血緣關(guān)系,做文檔的合并。

比如檢索到的D1、D2、D3都來自同一個(gè)父知識片段D,則使用D替換D1、D2、D3,以保證有比較好的知識語義完整性。

??圖片

5.4.2 Rerank精排

每種召回策略的排序打分模型有差異,在最終統(tǒng)一的數(shù)據(jù)篩選層面,要有統(tǒng)一的評判標(biāo)準(zhǔn)。

目前,可用的重新排序模型并不多。一種選擇是Cohere提供的在線模型,可以通過API訪問。此外,還有一些開源模型,如bge-reranker-base和bge-reranker-large等,根據(jù)業(yè)務(wù)需要擇優(yōu)選擇。

六、優(yōu)化經(jīng)驗(yàn)總結(jié)

RAG想做出來比較容易,但想做好還是比較難的,每個(gè)步驟都有可能對最終效果產(chǎn)生影響。

我們在RAG中也做了大量的探索,比如:

知識切分方面,做了固定字符切分的效果驗(yàn)證,分析索引噪音點(diǎn),利用大模型做了大量的降噪處理;
在query改寫方面,利用大模型做了更加明確的意圖抽取,并對用戶的query進(jìn)行降噪的探索;
在數(shù)據(jù)召回方面,embedding模型基于bge、voyage和cohere做了大量的測評,探索向量+分詞的召回策略;

在后置處理優(yōu)化上,做了知識的去重以及rerank的探索等。

RAG的發(fā)展會越來越迅速,只要知識依賴和知識更新的問題沒有得到解決,RAG就有其存在的價(jià)值和一席之地。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多