成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」 原創

發布于 2024-8-12 09:53
瀏覽
0收藏

編者按: 你是否曾經遇到過這些情況:你向 AI 助手提出了一個比較復雜的問題,但它給出的回答卻比較淺顯,甚至完全偏離了你的意圖???或者,你詢問了一個非常簡單的問題, AI 助手卻給出了一大堆不必要的信息,讓你感到煩惱???

傳統的 RAG 技術雖然能有效減少 AI 回答內容中的錯誤,但并不能改進用戶最初提交的 query 內容,因此可能會出現以下這些問題:

  • 對于用戶提交的簡單 query ,系統可能會消耗過多的計算資源,浪費用戶時間和增加資源消耗。
  • 面對復雜的 query,直接使用原始的 query 進行檢索往往無法整理到足夠的信息,導致回答不完整或不準確。
  • 對于含義模糊、模棱兩可的 query ,僅憑原始的 query 進行信息檢索更是遠遠不夠,可能會誤解用戶的真實意圖。

那么,我們如何才能緩解這些問題,提高 AI 系統的理解能力和回答質量呢?本文將介紹兩種技術方案:query classification?和?query refinement,并通過代碼實例加以闡釋,同時還在本文中記錄了作者對這些技術方案的理解和思考內容。

作者 |?Florian June

編譯?|?岳揚

目錄

01 Adaptive-RAG:根據問題復雜程度分類處理(Adapt)的檢索增強型 LLMs

1.1 Overall Process

1.2 構建分類器(Classifier)

1.3 構建數據集(Dataset)

1.4 Training and Inference

1.5 選擇分類器模型的 Size(Selection of Classifier Size)

02 RQ-RAG: 一種 RAG 系統中的 Queries 優化技術方案

2.1 構建數據集

2.2 Training

2.3 Answer Selection

03 Insights and Thoughts

3.1 這些技術與 Self-RAG 和?CRAG?進行對比

3.2 技術實踐過程中發現的一些問題(About Engineering Implementation)

3.3 小模型(Small Model)亦可大放異彩

04 Conclusion

雖然傳統 RAG 技術能夠有效降低 LLMs 回答內容中的錯誤發生率,但這種技術方案并不能優化用戶最初提交的 query,如圖 1 中紅色框標記的內容所示。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 1:傳統 RAG 技術沒有對 initial query 進行改進(圖中紅色框標記的部分),圖片由原作者原創

這種方法可能會出現以下這些問題:

  • 處理簡單的 queries 時,該 RAG 系統可能會消耗過多的計算資源。
  • 面對復雜的 queries 時,直接使用 original query(譯者注:未經任何改動的 query 內容,由用戶最初提交的搜索請求。)進行檢索常常無法收集到足夠的信息。
  • 對于可能存在多個答案的模糊不清的 queries,僅憑 original query 進行信息檢索是遠遠不夠的。

本文將探討兩種進階策略:query classification?和?query refinement, 兩者均通過訓練小模型提升了系統的整體性能。文章最后,作者還將分享對這兩個算法的理解與思考。

01 Adaptive-RAG:根據問題復雜程度分類處理(Adapt)的檢索增強型 LLMs

1.1 Overall Process

Adaptive-RAG 提出了一種創新的 adaptive framework?(譯者注:該系統可以根據 query 的復雜程度動態選擇最合適的信息檢索和生成策略。)。如圖 2 所示,該系統可根據 query 的復雜度,動態選擇最合適的 LLMs 使用策略(包含從最簡單(the simplest)到最復雜(the most complex)的多種策略)。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 2:對比不同檢索增強型 LLMs(retrieval-augmented LLM)的解答策略差異。資料來源:Adaptive-RAG[1]

圖 2(A)描繪的是一種單步方法(single-step approach) ,這種方法會先檢索出相關文檔,然后生成答案。但這一方法對于那些需要多級邏輯推理(multi-step reasoning)的復雜 query 而言,可能精度不足。

圖 2(B)是一種分多個步驟進行處理(multi-step process) 的方法,包括迭代進行文檔檢索(document retrieval)及生成中間答案(generation of intermediate responses)等步驟。雖然這種方法效果比較好,但由于需多次調用大語言模型(LLMs)和檢索器(retrievers),處理簡單 queries 時效率不太高。

圖 2(C)是一種 adaptive (譯者注:可根據具體情況選擇具體的策略。)的方法,通過精心設計的分類器(classifiers),我們能夠更精準地判斷、選擇最佳檢索策略(是選擇迭代檢索(iterative)、一次性檢索(single),還是不使用檢索方法(no retrieval methods))。

為了幫助大家更直觀地理解 Adaptive-RAG 的工作流程,本文會結合具體代碼來加以說明。目前,該技術存在四個不同版本的代碼實現,它們分別是官方版本(official version)[2]、Langchain**?版本[3]、LlamaIndex 版本[4]以及 Cohere 版本[5]。本文將以 LlamaIndex 版本作為示例介紹該技術。

想要了解更多詳細信息,可以查看這份文檔[6]。考慮到代碼量比較大,在本文將著重描述其中的核心代碼片段。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 3:Different tools of Adaptive-RAG. Image by author, inspired by LlamaIndex version[4].

代碼的運行方式會根據 query 的復雜程度而產生變化,并相應地調用不同的工具:

  • 面對復雜的 queries:需要多個工具協同工作。這些工具會從多份文檔中提取信息,具體示例可見于圖 3 的右上方。
  • 針對簡單的 queries:僅需單個工具從單個文檔中獲取所需上下文,如圖 3 左上方所示。
  • 處理直接明了的 queries:直接調用 LLMs 給出答案,這一過程如圖 3 底部所示。

如圖 2(C)所示,我們可以通過分類器(classifier)來挑選合適的工具。但與官方版本不同,此處使用的分類器并未針對該應用場景進行過針對性地訓練,而是直接應用現成的 LLMs ,這一做法在圖 4 中有明確描述。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 4:Tools selection of Adaptive-RAG. Image by author, inspired by LlamaIndex version[4].

1.2 構建分類器(Classifier)

雖然 LlamaIndex 版本的代碼實現并沒有分類器的構建這一環節,但深入了解分類器的構建過程,對于我們的后續開發工作有著至關重要的作用。

1.3 構建數據集(Dataset)

在該技術的實現過程中面臨一個重大挑戰,我們缺乏帶有 query-complexity pairs(譯者注:query 與其相應的復雜度(complexity)的配對數據。)的訓練數據集。那么,我們該如何應對這一問題呢?Adaptive-RAG 采用了兩種策略,以自動化的方式創建所需的訓練數據集(training dataset)。

根據 Adaptive-RAG 提供的數據集[7],我們可以看到,其對分類器訓練集的數據標注工作,是依托于那些已經公開并帶有標簽??的問答數據集完成的。

存在兩種處理策略:

對于用戶上傳的 query ,若使用最簡易的、非基于檢索的方法能夠得出正確答案,那么對應的 query 就會被打上 ‘A’ 的等級標簽。同樣的邏輯,通過單步方法(single-step approach)能夠得到正確答案的 query 會標記為 ‘B’ 等級,而通過分多個步驟進行處理(multi-step process)的方法正確解答的 query 則會被標記為 ‘C’ 等級。不過有一點需要在此強調,較為簡單的模型優先級更高。也就是說,當單步法(single-step)和多步法(multi-step)均能給出正確答案,但非基于檢索的方法無法做到時,就會給該 query 打上 ‘B’ 的等級標簽,如圖 5 所示。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 5:Adaptive-RAG 數據集的樣本示例,截圖出自原文作者

倘若上述三種方法均未能生成正確答案,則說明有些問題仍未被標注分類。這種情況下,我們會直接根據公開數據集進行分類。具體而言,單步數據集(single-hop dataset)中的 query 會被標注為 ‘B’ 等級,而多步數據集(multi-hop dataset)中的 query 則會被標注為 ‘C’ 等級。

1.4 Training and Inference

訓練方法采用交叉熵損失函數(cross-entropy loss),基于這些自動收集的 query-complexity pairs?(譯者注:query 與其相應的復雜度(complexity)的配對數據。)來訓練分類器。

然后,在推理過程中,我們將 query 輸入至分類器,即可判定 query 的復雜度等級,該等級標簽可為 ‘A’、‘B’ 或 ‘C’ 中的任意一種:o = Classifier(q)。

1.5 選擇分類器模型的 Size(Selection of Classifier Size)

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 6:不同規模(size)分類模型的實驗結果。來源:Adaptive-RAG[1]從圖 6 可以看出,無論分類器模型的 size 如何,其性能表現并無明顯差異。 即便是小型模型也能維持相同水平的性能,有利于提高資源利用效率。

接下來,我們將介紹一種 query 優化技術:RQ-RAG。

02 RQ-RAG: 一種 RAG 系統中的 Queries 優化技術方案

針對上述挑戰,RQ-RAG 提出了三項優化方法,如圖 7 所示。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 7:RQ-RAG 使用的模型可根據需求進行信息檢索,必要時能對 query 進行重寫(rewrite)、分解(decompose)和歧義消除(disambiguate)等操作。來源:RQ-RAG[8]。

  • 對于日常問候(daily greetings)等這類簡單 query,加入額外的上下文反而可能降低大模型的回復質量。對于這種情況,大語言模型應當直接做出響應,而非添加不必要的上下文信息,以避免造成大模型的回答質量下降。換句話說,如圖 7 左上方所示,模型應具備按需應答(respond on demand)的能力。
  • 面對復雜的 query?,RQ-RAG 會將其細分為若干個更易于解答的 subquery。逐一檢索 subquery 的相關信息,從而形成對原始復雜 query 的完整響應,如圖 7 右上方所示。
  • 遇到含義模糊、可能有多重解釋的 query 時,僅使用原始的 query 文本進行檢索是遠遠不夠的。大語言模型必須掌握 query 文本的具體細節、理解用戶的真實意圖并制定出針對性的檢索方案。

這種方法確保了檢索到的信息既全面又精準,從而更加有效地回答問題,如圖 7 底部所示。

RQ-RAG 通過端到端(end-to-end)的方式 training?(譯者注:Llama2 是一個預訓練模型,此處的 training 應當是指微調。)一個 Llama2 7B 模型。使得該模型能夠動態地通過重寫(rewriting)、分解(decomposing)和消除 query 中的歧義來增強 query 的檢索效果。

由于 RQ-RAG[9]?的代碼目前正處于重構階段[10],某些功能尚未完全實現,因此本文暫無法進行演示。

2.1 構建數據集

考慮到 RQ-RAG 系統的端到端(end-to-end)特性,關注數據集的構建流程至關重要。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 8:數據集的構建流程。來源:RQ-RAG[8]

數據集的構建[11]主要包括以下幾個步驟:

1.?首先,搜集一個涵蓋多種使用場景的語料庫(如圖 9 所示),包括但不限于多輪對話(multi-turn dialogues)、需分解的 query 語句及需消解歧義的 query 語句。依據該語料庫,構建一個任務池(task pool)。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 9:數據集結構。來源:RQ-RAG[8]

2.?第二步,任務池中的任務被劃分為三大類型:多輪對話(multi-turn dialogue)、分解 query 語句(decomposition)和消除?query 中的歧義(disambiguation)。例如,多輪對話數據集中的每一個樣本都會被歸入為多輪對話類型(multi-turn dialogue category)。

3.?第三步,首先使用?ChatGPT**?對各類 query 進行優化。接著,使用這些優化后的 query 語句向外部數據源檢索信息。一般情況下,DuckDuckGo 是主要的信息檢索來源,而這個檢索過程被視為一個不透明的“黑盒”(black box)。

4.?第四步,指示 ChatGPT 根據優化后的 query 及相應的上下文,生成修正后的模型響應。通過重復執行這一流程,我們得以積累了總計約 40,000(40k) 個實例。

圖 10、11 及 12 呈現了與 ChatGPT 交互時所使用的提示詞模板。其中,藍色文字部分代表了應根據具體情況輸入的具體內容。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 10:構建數據集時采用的多輪對話提示詞模板。來源:RQ-RAG[8]

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 11:構建數據集時采用的 query 分解提示詞模板。來源:RQ-RAG[8]

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 12:構建數據集時運用的 query 消歧提示詞模板。來源:RQ-RAG[8]

當上述步驟全部完成后,我們將得到圖 13 右側所示的訓練樣本。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 13:Training sample。來源:RQ-RAG[8]

每個訓練樣本實質上都是一個帶有特定 tokens(special tokens)的操作序列(operation sequence),其中:

  • ‘Xorigin’?和? ‘Yorigin’?表示原始數據集中的一組輸入與輸出的對應關系(input-output pair)。
  • ‘Type’?是指優化操作(optimization action):可能是重寫 query(rewrite)、分解 query(decompose),或是消除歧義(eliminate ambiguity)。
  • ‘i’?表示迭代輪數。
  • ‘SPECIALtype’?表示優化類型(type of optimization)。
  • ‘Qi, type’?指代在第 i 次迭代中,依據特定 tokens(special tokens)進行優化后的 query 文本。
  • ‘[Di1, Di2, . . . , Dik]’?表示第 i 次迭代中檢索出的前 k 個文檔。
  • ‘Ynew’?是在最后一次迭代中產生的新答案。

2.2 Training

在得到訓練數據集后,我們便能以常規的自回歸方式(auto-regressive)[12]來訓練大語言模型(LLM)。具體的訓練目標函數(Training objective)如圖 14 所示。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 14:RQ-RAG 模型的訓練目標函數(Training objective)。來源:RQ-RAG[8]

說白了,訓練的核心在于微調模型參數,確保在每一個步驟 i 中,面對原始的輸入 x 、優化后的 query qi 及檢索出的文檔 di 時,模型 M 能夠對模型響應 y 給出最大化的概率預測(highest probability)。

2.3 Answer Selection

每次迭代時,該模型都會針對特定需求生成多種用于檢索的 query 語句,比如對 query 進行重寫、分解或消除其歧義。這些 query 反過來又能獲得不同的上下文,有助于模型更全面、更靈活地處理復雜任務(leading to the diversification of expansion paths)。

Advanced RAG 11:對用戶輸入的內容進行「分類處理」和「再優化」-AI.x社區

圖 15:面對不同情況(paths),我們制定了三種不同的策略 —— 基于困惑度(PPL)、基于置信度(confidence)和基于集成學習(Ensemble)的選擇方法。來源:RQ-RAG[8]

正如圖 15 所示,RQ-RAG 研發了一套樹形解碼策略(tree decoding strategy),并使用了三種選擇機制[13]:基于困惑度(PPL)的選擇方法基于置信度(Confidence)的選擇方法以及基于集成學習(Ensemble)的選擇方法

在基于困惑度(PPL)的選擇方法中,模型會選擇所有輸出中困惑度(PPL)最低的答案。基于置信度(Confidence)的選擇方法則是選擇所有置信度最高的結果。而基于集成學習的選擇方法,則傾向于選取累積置信度分數(confidence score)最高的最終結果。

03 Insights and Thoughts

3.1 這些技術與 Self-RAG 和 CRAG 進行對比

不同于 Adaptive-RAG 和 RQ-RAG 在檢索前對原始 query 進行優化的做法,Self-RAG[14]?和 CRAG[15]?的關注重點在于判斷何時執行檢索(retrieval)操作以及如何優化檢索操作之后的信息處理效率。特別值得一提的是,CRAG 通過重寫用于網絡檢索的 query 語句,提升了檢索結果的信息質量。

RQ-RAG 和 Self-RAG 均通過訓練小型語言模型的方式來替代原有的大模型(LLMs)。相比之下,Adaptive-RAG 和 CRAG 保留了原有模型,僅是新增了對 query 進行分類或評估的兩個功能層。

后起之秀 Adaptive-RAG 和 RQ-RAG 都聲稱自己的性能優于 Self-RAG,在它們的論文中都有對應的實驗報告。

從生成流程(generation process)的角度考量,Self-RAG、CRAG 及 Adaptive-RAG 因未采用復雜的樹形解碼策略(tree decoding),顯得更為簡潔明快。

3.2 技術實踐過程中發現的一些問題(About Engineering Implementation)

當 query 轉化為多輪對話的情況時,利用大語言模型處理冗長的提示詞數據可能會造成響應延時。根據我目前的理解,采用并行處理技術(parallelization)或許能有效解決這一問題。

此外,無論是 Adaptive-RAG 還是 RQ-RAG 技術,它們都對 query 進行了分類。但這些分類方式是否真正達到了最優狀態?它們是否能完美適用于特定的生產場景?有沒有可能采用其他分類策略能取得更好的效果?需要通過一系列對比實驗(comparative experiments)來驗證這些觀點。

3.3 小模型(Small Model)亦可大放異彩

RQ-RAG 的實踐過程表明,即使是一個 7B 參數量的模型,只要數據集構建得當、生成流程精細, 7B 參數量的模型也能創造卓越的性能表現。

盲目追求模型規模的龐大并不一定等同于更高的性價比。對于那些資源有限的團隊而言,專注于優化數據集與精進算法或許是更為明智的選擇。

04 Conclusion

在本文中,我們探討了 query classification 與 query refinement 這兩項技術方案,并通過代碼實例加以闡釋,同時還在本文中介紹了作者對這些技術的理解和思考。

倘若您對檢索增強生成(RAG)技術感興趣,請隨時瀏覽本系列其他文章

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

[4]https://github.com/mistralai/cookbook/blob/e200507fba4e3404564f9249b345c89f83d73a10/third_party/LlamaIndex/Adaptive_RAG.ipynb

[5]https://github.com/cohere-ai/notebooks/blob/main/notebooks/react_agent_adaptive_rag_cohere.ipynb

[6]https://github.com/mistralai/cookbook/blob/e200507fba4e3404564f9249b345c89f83d73a10/third_party/LlamaIndex/Adaptive_RAG.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

[11]https://github.com/chanchimin/RQ-RAG/blob/96b4ec981d4a4399e8402da1b75e16f7812aedfe/data_curation/main_multiturn_answer_generate.py

[12]https://github.com/chanchimin/RQ-RAG/blob/96b4ec981d4a4399e8402da1b75e16f7812aedfe/retrieval_lm/finetune.py

[13]https://github.com/chanchimin/RQ-RAG/blob/96b4ec981d4a4399e8402da1b75e16f7812aedfe/retrieval_lm/output/sample_from_tree.py

[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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
標簽
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 人妖一区 | 色综合成人网 | 亚洲精品黑人 | 精品久久免费 | 亚洲精品在线看 | 成人精品系列 | 亚洲人免费视频 | 欧美男人亚洲天堂 | 欧美极品在线 | 99热播精品| 天天射中文 | 一本岛道一二三不卡区 | 在线观看一区 | 天天看天天操 | 男女视频在线免费观看 | 国产精品视频免费播放 | 亚洲www啪成人一区二区麻豆 | 国产精品999 | 欧美视频成人 | 国产乱精品一区二区三区 | caoporn免费 | h小视频| 国产精品久久久久久 | 国产精品色综合 | 四虎影院久久 | 欧洲成人 | 91av免费观看 | 国产免费xxx | 国产美女一区二区 | 午夜不卡一区二区 | 亚洲字幕在线观看 | 欧美一区二区三区在线看 | 在线āv视频 | 欧美日韩中文字幕在线 | 久久久男人的天堂 | 人操人人干人 | 四虎影视一区二区 | 亚洲国产中文字幕 | 黄a在线观看 | 久久毛片 | 国产高清在线精品一区二区三区 |