Advanced RAG 11:對(duì)用戶輸入的內(nèi)容進(jìn)行「分類處理」和「再優(yōu)化」 原創(chuàng)
編者按: 你是否曾經(jīng)遇到過(guò)這些情況:你向 AI 助手提出了一個(gè)比較復(fù)雜的問(wèn)題,但它給出的回答卻比較淺顯,甚至完全偏離了你的意圖???或者,你詢問(wèn)了一個(gè)非常簡(jiǎn)單的問(wèn)題, AI 助手卻給出了一大堆不必要的信息,讓你感到煩惱???
傳統(tǒng)的 RAG 技術(shù)雖然能有效減少 AI 回答內(nèi)容中的錯(cuò)誤,但并不能改進(jìn)用戶最初提交的 query 內(nèi)容,因此可能會(huì)出現(xiàn)以下這些問(wèn)題:
- 對(duì)于用戶提交的簡(jiǎn)單 query ,系統(tǒng)可能會(huì)消耗過(guò)多的計(jì)算資源,浪費(fèi)用戶時(shí)間和增加資源消耗。
- 面對(duì)復(fù)雜的 query,直接使用原始的 query 進(jìn)行檢索往往無(wú)法整理到足夠的信息,導(dǎo)致回答不完整或不準(zhǔn)確。
- 對(duì)于含義模糊、模棱兩可的 query ,僅憑原始的 query 進(jìn)行信息檢索更是遠(yuǎn)遠(yuǎn)不夠,可能會(huì)誤解用戶的真實(shí)意圖。
那么,我們?nèi)绾尾拍芫徑膺@些問(wèn)題,提高 AI 系統(tǒng)的理解能力和回答質(zhì)量呢?本文將介紹兩種技術(shù)方案:query classification?和?query refinement,并通過(guò)代碼實(shí)例加以闡釋,同時(shí)還在本文中記錄了作者對(duì)這些技術(shù)方案的理解和思考內(nèi)容。
作者 |?Florian June
編譯?|?岳揚(yáng)
目錄
01 Adaptive-RAG:根據(jù)問(wèn)題復(fù)雜程度分類處理(Adapt)的檢索增強(qiáng)型 LLMs
1.1 Overall Process
1.2 構(gòu)建分類器(Classifier)
1.3 構(gòu)建數(shù)據(jù)集(Dataset)
1.4 Training and Inference
1.5 選擇分類器模型的 Size(Selection of Classifier Size)
02 RQ-RAG: 一種 RAG 系統(tǒng)中的 Queries 優(yōu)化技術(shù)方案
2.1 構(gòu)建數(shù)據(jù)集
2.2 Training
2.3 Answer Selection
03 Insights and Thoughts
3.1 這些技術(shù)與 Self-RAG 和?CRAG?進(jìn)行對(duì)比
3.2 技術(shù)實(shí)踐過(guò)程中發(fā)現(xiàn)的一些問(wèn)題(About Engineering Implementation)
3.3 小模型(Small Model)亦可大放異彩
04 Conclusion
雖然傳統(tǒng) RAG 技術(shù)能夠有效降低 LLMs 回答內(nèi)容中的錯(cuò)誤發(fā)生率,但這種技術(shù)方案并不能優(yōu)化用戶最初提交的 query,如圖 1 中紅色框標(biāo)記的內(nèi)容所示。
圖 1:傳統(tǒng) RAG 技術(shù)沒(méi)有對(duì) initial query 進(jìn)行改進(jìn)(圖中紅色框標(biāo)記的部分),圖片由原作者原創(chuàng)
這種方法可能會(huì)出現(xiàn)以下這些問(wèn)題:
- 處理簡(jiǎn)單的 queries 時(shí),該 RAG 系統(tǒng)可能會(huì)消耗過(guò)多的計(jì)算資源。
- 面對(duì)復(fù)雜的 queries 時(shí),直接使用 original query(譯者注:未經(jīng)任何改動(dòng)的 query 內(nèi)容,由用戶最初提交的搜索請(qǐng)求。)進(jìn)行檢索常常無(wú)法收集到足夠的信息。
- 對(duì)于可能存在多個(gè)答案的模糊不清的 queries,僅憑 original query 進(jìn)行信息檢索是遠(yuǎn)遠(yuǎn)不夠的。
本文將探討兩種進(jìn)階策略:query classification?和?query refinement, 兩者均通過(guò)訓(xùn)練小模型提升了系統(tǒng)的整體性能。文章最后,作者還將分享對(duì)這兩個(gè)算法的理解與思考。
01 Adaptive-RAG:根據(jù)問(wèn)題復(fù)雜程度分類處理(Adapt)的檢索增強(qiáng)型 LLMs
1.1 Overall Process
Adaptive-RAG 提出了一種創(chuàng)新的 adaptive framework?(譯者注:該系統(tǒng)可以根據(jù) query 的復(fù)雜程度動(dòng)態(tài)選擇最合適的信息檢索和生成策略。)。如圖 2 所示,該系統(tǒng)可根據(jù) query 的復(fù)雜度,動(dòng)態(tài)選擇最合適的 LLMs 使用策略(包含從最簡(jiǎn)單(the simplest)到最復(fù)雜(the most complex)的多種策略)。
圖 2:對(duì)比不同檢索增強(qiáng)型 LLMs(retrieval-augmented LLM)的解答策略差異。資料來(lái)源:Adaptive-RAG[1]
圖 2(A)描繪的是一種單步方法(single-step approach) ,這種方法會(huì)先檢索出相關(guān)文檔,然后生成答案。但這一方法對(duì)于那些需要多級(jí)邏輯推理(multi-step reasoning)的復(fù)雜 query 而言,可能精度不足。
圖 2(B)是一種分多個(gè)步驟進(jìn)行處理(multi-step process) 的方法,包括迭代進(jìn)行文檔檢索(document retrieval)及生成中間答案(generation of intermediate responses)等步驟。雖然這種方法效果比較好,但由于需多次調(diào)用大語(yǔ)言模型(LLMs)和檢索器(retrievers),處理簡(jiǎn)單 queries 時(shí)效率不太高。
圖 2(C)是一種 adaptive (譯者注:可根據(jù)具體情況選擇具體的策略。)的方法,通過(guò)精心設(shè)計(jì)的分類器(classifiers),我們能夠更精準(zhǔn)地判斷、選擇最佳檢索策略(是選擇迭代檢索(iterative)、一次性檢索(single),還是不使用檢索方法(no retrieval methods))。
為了幫助大家更直觀地理解 Adaptive-RAG 的工作流程,本文會(huì)結(jié)合具體代碼來(lái)加以說(shuō)明。目前,該技術(shù)存在四個(gè)不同版本的代碼實(shí)現(xiàn),它們分別是官方版本(official version)[2]、Langchain**?版本[3]、LlamaIndex 版本[4]以及 Cohere 版本[5]。本文將以 LlamaIndex 版本作為示例介紹該技術(shù)。
想要了解更多詳細(xì)信息,可以查看這份文檔[6]??紤]到代碼量比較大,在本文將著重描述其中的核心代碼片段。
圖 3:Different tools of Adaptive-RAG. Image by author, inspired by LlamaIndex version[4].
代碼的運(yùn)行方式會(huì)根據(jù) query 的復(fù)雜程度而產(chǎn)生變化,并相應(yīng)地調(diào)用不同的工具:
- 面對(duì)復(fù)雜的 queries:需要多個(gè)工具協(xié)同工作。這些工具會(huì)從多份文檔中提取信息,具體示例可見(jiàn)于圖 3 的右上方。
- 針對(duì)簡(jiǎn)單的 queries:僅需單個(gè)工具從單個(gè)文檔中獲取所需上下文,如圖 3 左上方所示。
- 處理直接明了的 queries:直接調(diào)用 LLMs 給出答案,這一過(guò)程如圖 3 底部所示。
如圖 2(C)所示,我們可以通過(guò)分類器(classifier)來(lái)挑選合適的工具。但與官方版本不同,此處使用的分類器并未針對(duì)該應(yīng)用場(chǎng)景進(jìn)行過(guò)針對(duì)性地訓(xùn)練,而是直接應(yīng)用現(xiàn)成的 LLMs ,這一做法在圖 4 中有明確描述。
圖 4:Tools selection of Adaptive-RAG. Image by author, inspired by LlamaIndex version[4].
1.2 構(gòu)建分類器(Classifier)
雖然 LlamaIndex 版本的代碼實(shí)現(xiàn)并沒(méi)有分類器的構(gòu)建這一環(huán)節(jié),但深入了解分類器的構(gòu)建過(guò)程,對(duì)于我們的后續(xù)開(kāi)發(fā)工作有著至關(guān)重要的作用。
1.3 構(gòu)建數(shù)據(jù)集(Dataset)
在該技術(shù)的實(shí)現(xiàn)過(guò)程中面臨一個(gè)重大挑戰(zhàn),我們?nèi)狈в?query-complexity pairs(譯者注:query 與其相應(yīng)的復(fù)雜度(complexity)的配對(duì)數(shù)據(jù)。)的訓(xùn)練數(shù)據(jù)集。那么,我們?cè)撊绾螒?yīng)對(duì)這一問(wèn)題呢?Adaptive-RAG 采用了兩種策略,以自動(dòng)化的方式創(chuàng)建所需的訓(xùn)練數(shù)據(jù)集(training dataset)。
根據(jù) Adaptive-RAG 提供的數(shù)據(jù)集[7],我們可以看到,其對(duì)分類器訓(xùn)練集的數(shù)據(jù)標(biāo)注工作,是依托于那些已經(jīng)公開(kāi)并帶有標(biāo)簽??的問(wèn)答數(shù)據(jù)集完成的。
存在兩種處理策略:
對(duì)于用戶上傳的 query ,若使用最簡(jiǎn)易的、非基于檢索的方法能夠得出正確答案,那么對(duì)應(yīng)的 query 就會(huì)被打上 ‘A’ 的等級(jí)標(biāo)簽。同樣的邏輯,通過(guò)單步方法(single-step approach)能夠得到正確答案的 query 會(huì)標(biāo)記為 ‘B’ 等級(jí),而通過(guò)分多個(gè)步驟進(jìn)行處理(multi-step process)的方法正確解答的 query 則會(huì)被標(biāo)記為 ‘C’ 等級(jí)。不過(guò)有一點(diǎn)需要在此強(qiáng)調(diào),較為簡(jiǎn)單的模型優(yōu)先級(jí)更高。也就是說(shuō),當(dāng)單步法(single-step)和多步法(multi-step)均能給出正確答案,但非基于檢索的方法無(wú)法做到時(shí),就會(huì)給該 query 打上 ‘B’ 的等級(jí)標(biāo)簽,如圖 5 所示。
圖 5:Adaptive-RAG 數(shù)據(jù)集的樣本示例,截圖出自原文作者
倘若上述三種方法均未能生成正確答案,則說(shuō)明有些問(wèn)題仍未被標(biāo)注分類。這種情況下,我們會(huì)直接根據(jù)公開(kāi)數(shù)據(jù)集進(jìn)行分類。具體而言,單步數(shù)據(jù)集(single-hop dataset)中的 query 會(huì)被標(biāo)注為 ‘B’ 等級(jí),而多步數(shù)據(jù)集(multi-hop dataset)中的 query 則會(huì)被標(biāo)注為 ‘C’ 等級(jí)。
1.4 Training and Inference
訓(xùn)練方法采用交叉熵?fù)p失函數(shù)(cross-entropy loss),基于這些自動(dòng)收集的 query-complexity pairs?(譯者注:query 與其相應(yīng)的復(fù)雜度(complexity)的配對(duì)數(shù)據(jù)。)來(lái)訓(xùn)練分類器。
然后,在推理過(guò)程中,我們將 query 輸入至分類器,即可判定 query 的復(fù)雜度等級(jí),該等級(jí)標(biāo)簽可為 ‘A’、‘B’ 或 ‘C’ 中的任意一種:o = Classifier(q)。
1.5 選擇分類器模型的 Size(Selection of Classifier Size)
圖 6:不同規(guī)模(size)分類模型的實(shí)驗(yàn)結(jié)果。來(lái)源:Adaptive-RAG[1]從圖 6 可以看出,無(wú)論分類器模型的 size 如何,其性能表現(xiàn)并無(wú)明顯差異。 即便是小型模型也能維持相同水平的性能,有利于提高資源利用效率。
接下來(lái),我們將介紹一種 query 優(yōu)化技術(shù):RQ-RAG。
02 RQ-RAG: 一種 RAG 系統(tǒng)中的 Queries 優(yōu)化技術(shù)方案
針對(duì)上述挑戰(zhàn),RQ-RAG 提出了三項(xiàng)優(yōu)化方法,如圖 7 所示。
圖 7:RQ-RAG 使用的模型可根據(jù)需求進(jìn)行信息檢索,必要時(shí)能對(duì) query 進(jìn)行重寫(xiě)(rewrite)、分解(decompose)和歧義消除(disambiguate)等操作。來(lái)源:RQ-RAG[8]。
- 對(duì)于日常問(wèn)候(daily greetings)等這類簡(jiǎn)單 query,加入額外的上下文反而可能降低大模型的回復(fù)質(zhì)量。對(duì)于這種情況,大語(yǔ)言模型應(yīng)當(dāng)直接做出響應(yīng),而非添加不必要的上下文信息,以避免造成大模型的回答質(zhì)量下降。換句話說(shuō),如圖 7 左上方所示,模型應(yīng)具備按需應(yīng)答(respond on demand)的能力。
- 面對(duì)復(fù)雜的 query?,RQ-RAG 會(huì)將其細(xì)分為若干個(gè)更易于解答的 subquery。逐一檢索 subquery 的相關(guān)信息,從而形成對(duì)原始復(fù)雜 query 的完整響應(yīng),如圖 7 右上方所示。
- 遇到含義模糊、可能有多重解釋的 query 時(shí),僅使用原始的 query 文本進(jìn)行檢索是遠(yuǎn)遠(yuǎn)不夠的。大語(yǔ)言模型必須掌握 query 文本的具體細(xì)節(jié)、理解用戶的真實(shí)意圖并制定出針對(duì)性的檢索方案。
這種方法確保了檢索到的信息既全面又精準(zhǔn),從而更加有效地回答問(wèn)題,如圖 7 底部所示。
RQ-RAG 通過(guò)端到端(end-to-end)的方式 training?(譯者注:Llama2 是一個(gè)預(yù)訓(xùn)練模型,此處的 training 應(yīng)當(dāng)是指微調(diào)。)一個(gè) Llama2 7B 模型。使得該模型能夠動(dòng)態(tài)地通過(guò)重寫(xiě)(rewriting)、分解(decomposing)和消除 query 中的歧義來(lái)增強(qiáng) query 的檢索效果。
由于 RQ-RAG[9]?的代碼目前正處于重構(gòu)階段[10],某些功能尚未完全實(shí)現(xiàn),因此本文暫無(wú)法進(jìn)行演示。
2.1 構(gòu)建數(shù)據(jù)集
考慮到 RQ-RAG 系統(tǒng)的端到端(end-to-end)特性,關(guān)注數(shù)據(jù)集的構(gòu)建流程至關(guān)重要。
圖 8:數(shù)據(jù)集的構(gòu)建流程。來(lái)源:RQ-RAG[8]
數(shù)據(jù)集的構(gòu)建[11]主要包括以下幾個(gè)步驟:
1.?首先,搜集一個(gè)涵蓋多種使用場(chǎng)景的語(yǔ)料庫(kù)(如圖 9 所示),包括但不限于多輪對(duì)話(multi-turn dialogues)、需分解的 query 語(yǔ)句及需消解歧義的 query 語(yǔ)句。依據(jù)該語(yǔ)料庫(kù),構(gòu)建一個(gè)任務(wù)池(task pool)。
圖 9:數(shù)據(jù)集結(jié)構(gòu)。來(lái)源:RQ-RAG[8]
2.?第二步,任務(wù)池中的任務(wù)被劃分為三大類型:多輪對(duì)話(multi-turn dialogue)、分解 query 語(yǔ)句(decomposition)和消除?query 中的歧義(disambiguation)。例如,多輪對(duì)話數(shù)據(jù)集中的每一個(gè)樣本都會(huì)被歸入為多輪對(duì)話類型(multi-turn dialogue category)。
3.?第三步,首先使用?ChatGPT**?對(duì)各類 query 進(jìn)行優(yōu)化。接著,使用這些優(yōu)化后的 query 語(yǔ)句向外部數(shù)據(jù)源檢索信息。一般情況下,DuckDuckGo 是主要的信息檢索來(lái)源,而這個(gè)檢索過(guò)程被視為一個(gè)不透明的“黑盒”(black box)。
4.?第四步,指示 ChatGPT 根據(jù)優(yōu)化后的 query 及相應(yīng)的上下文,生成修正后的模型響應(yīng)。通過(guò)重復(fù)執(zhí)行這一流程,我們得以積累了總計(jì)約 40,000(40k) 個(gè)實(shí)例。
圖 10、11 及 12 呈現(xiàn)了與 ChatGPT 交互時(shí)所使用的提示詞模板。其中,藍(lán)色文字部分代表了應(yīng)根據(jù)具體情況輸入的具體內(nèi)容。
圖 10:構(gòu)建數(shù)據(jù)集時(shí)采用的多輪對(duì)話提示詞模板。來(lái)源:RQ-RAG[8]
圖 11:構(gòu)建數(shù)據(jù)集時(shí)采用的 query 分解提示詞模板。來(lái)源:RQ-RAG[8]
圖 12:構(gòu)建數(shù)據(jù)集時(shí)運(yùn)用的 query 消歧提示詞模板。來(lái)源:RQ-RAG[8]
當(dāng)上述步驟全部完成后,我們將得到圖 13 右側(cè)所示的訓(xùn)練樣本。
圖 13:Training sample。來(lái)源:RQ-RAG[8]
每個(gè)訓(xùn)練樣本實(shí)質(zhì)上都是一個(gè)帶有特定 tokens(special tokens)的操作序列(operation sequence),其中:
- ‘Xorigin’?和? ‘Yorigin’?表示原始數(shù)據(jù)集中的一組輸入與輸出的對(duì)應(yīng)關(guān)系(input-output pair)。
- ‘Type’?是指優(yōu)化操作(optimization action):可能是重寫(xiě) query(rewrite)、分解 query(decompose),或是消除歧義(eliminate ambiguity)。
- ‘i’?表示迭代輪數(shù)。
- ‘SPECIALtype’?表示優(yōu)化類型(type of optimization)。
- ‘Qi, type’?指代在第 i 次迭代中,依據(jù)特定 tokens(special tokens)進(jìn)行優(yōu)化后的 query 文本。
- ‘[Di1, Di2, . . . , Dik]’?表示第 i 次迭代中檢索出的前 k 個(gè)文檔。
- ‘Ynew’?是在最后一次迭代中產(chǎn)生的新答案。
2.2 Training
在得到訓(xùn)練數(shù)據(jù)集后,我們便能以常規(guī)的自回歸方式(auto-regressive)[12]來(lái)訓(xùn)練大語(yǔ)言模型(LLM)。具體的訓(xùn)練目標(biāo)函數(shù)(Training objective)如圖 14 所示。
圖 14:RQ-RAG 模型的訓(xùn)練目標(biāo)函數(shù)(Training objective)。來(lái)源:RQ-RAG[8]
說(shuō)白了,訓(xùn)練的核心在于微調(diào)模型參數(shù),確保在每一個(gè)步驟 i 中,面對(duì)原始的輸入 x 、優(yōu)化后的 query qi 及檢索出的文檔 di 時(shí),模型 M 能夠?qū)δP晚憫?yīng) y 給出最大化的概率預(yù)測(cè)(highest probability)。
2.3 Answer Selection
每次迭代時(shí),該模型都會(huì)針對(duì)特定需求生成多種用于檢索的 query 語(yǔ)句,比如對(duì) query 進(jìn)行重寫(xiě)、分解或消除其歧義。這些 query 反過(guò)來(lái)又能獲得不同的上下文,有助于模型更全面、更靈活地處理復(fù)雜任務(wù)(leading to the diversification of expansion paths)。
圖 15:面對(duì)不同情況(paths),我們制定了三種不同的策略 —— 基于困惑度(PPL)、基于置信度(confidence)和基于集成學(xué)習(xí)(Ensemble)的選擇方法。來(lái)源:RQ-RAG[8]
正如圖 15 所示,RQ-RAG 研發(fā)了一套樹(shù)形解碼策略(tree decoding strategy),并使用了三種選擇機(jī)制[13]:基于困惑度(PPL)的選擇方法、基于置信度(Confidence)的選擇方法以及基于集成學(xué)習(xí)(Ensemble)的選擇方法。
在基于困惑度(PPL)的選擇方法中,模型會(huì)選擇所有輸出中困惑度(PPL)最低的答案?;谥眯哦龋–onfidence)的選擇方法則是選擇所有置信度最高的結(jié)果。而基于集成學(xué)習(xí)的選擇方法,則傾向于選取累積置信度分?jǐn)?shù)(confidence score)最高的最終結(jié)果。
03 Insights and Thoughts
3.1 這些技術(shù)與 Self-RAG 和 CRAG 進(jìn)行對(duì)比
不同于 Adaptive-RAG 和 RQ-RAG 在檢索前對(duì)原始 query 進(jìn)行優(yōu)化的做法,Self-RAG[14]?和 CRAG[15]?的關(guān)注重點(diǎn)在于判斷何時(shí)執(zhí)行檢索(retrieval)操作以及如何優(yōu)化檢索操作之后的信息處理效率。特別值得一提的是,CRAG 通過(guò)重寫(xiě)用于網(wǎng)絡(luò)檢索的 query 語(yǔ)句,提升了檢索結(jié)果的信息質(zhì)量。
RQ-RAG 和 Self-RAG 均通過(guò)訓(xùn)練小型語(yǔ)言模型的方式來(lái)替代原有的大模型(LLMs)。相比之下,Adaptive-RAG 和 CRAG 保留了原有模型,僅是新增了對(duì) query 進(jìn)行分類或評(píng)估的兩個(gè)功能層。
后起之秀 Adaptive-RAG 和 RQ-RAG 都聲稱自己的性能優(yōu)于 Self-RAG,在它們的論文中都有對(duì)應(yīng)的實(shí)驗(yàn)報(bào)告。
從生成流程(generation process)的角度考量,Self-RAG、CRAG 及 Adaptive-RAG 因未采用復(fù)雜的樹(shù)形解碼策略(tree decoding),顯得更為簡(jiǎn)潔明快。
3.2 技術(shù)實(shí)踐過(guò)程中發(fā)現(xiàn)的一些問(wèn)題(About Engineering Implementation)
當(dāng) query 轉(zhuǎn)化為多輪對(duì)話的情況時(shí),利用大語(yǔ)言模型處理冗長(zhǎng)的提示詞數(shù)據(jù)可能會(huì)造成響應(yīng)延時(shí)。根據(jù)我目前的理解,采用并行處理技術(shù)(parallelization)或許能有效解決這一問(wèn)題。
此外,無(wú)論是 Adaptive-RAG 還是 RQ-RAG 技術(shù),它們都對(duì) query 進(jìn)行了分類。但這些分類方式是否真正達(dá)到了最優(yōu)狀態(tài)?它們是否能完美適用于特定的生產(chǎn)場(chǎng)景?有沒(méi)有可能采用其他分類策略能取得更好的效果?需要通過(guò)一系列對(duì)比實(shí)驗(yàn)(comparative experiments)來(lái)驗(yàn)證這些觀點(diǎn)。
3.3 小模型(Small Model)亦可大放異彩
RQ-RAG 的實(shí)踐過(guò)程表明,即使是一個(gè) 7B 參數(shù)量的模型,只要數(shù)據(jù)集構(gòu)建得當(dāng)、生成流程精細(xì), 7B 參數(shù)量的模型也能創(chuàng)造卓越的性能表現(xiàn)。
盲目追求模型規(guī)模的龐大并不一定等同于更高的性價(jià)比。對(duì)于那些資源有限的團(tuán)隊(duì)而言,專注于優(yōu)化數(shù)據(jù)集與精進(jìn)算法或許是更為明智的選擇。
04 Conclusion
在本文中,我們探討了 query classification 與 query refinement 這兩項(xiàng)技術(shù)方案,并通過(guò)代碼實(shí)例加以闡釋,同時(shí)還在本文中介紹了作者對(duì)這些技術(shù)的理解和思考。
倘若您對(duì)檢索增強(qiáng)生成(RAG)技術(shù)感興趣,請(qǐng)隨時(shí)瀏覽本系列其他文章
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
Florian June
AI researcher, focusing on LLMs, RAG, Agent, Document AI, Data Structures. Find the newest article in my newsletter:
https://florianjune.substack.com/
END
參考資料
[1]https://arxiv.org/pdf/2403.14403
[2]https://github.com/starsuzi/Adaptive-RAG
[3]https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_adaptive_rag_cohere.ipynb
[5]https://github.com/cohere-ai/notebooks/blob/main/notebooks/react_agent_adaptive_rag_cohere.ipynb
[7]https://github.com/starsuzi/Adaptive-RAG/blob/0c88670af8707667eb5c1163151bb5ce61b14acb/data.tar.gz
[8]https://arxiv.org/pdf/2404.00610
[9]https://github.com/chanchimin/RQ-RAG
[10]https://github.com/chanchimin/RQ-RAG/tree/96b4ec981d4a4399e8402da1b75e16f7812aedfe
[14]https://medium.com/ai-advances/advanced-rag-08-self-rag-c0c5b5952e0e
[15]https://ai.gopubby.com/advanced-rag-10-corrective-retrieval-augmented-generation-crag-3f5a140796f9
原文鏈接:
https://ai.gopubby.com/advanced-rag-11-query-classification-and-refinement-2aec79f4140b
