傳統(tǒng)RAG的局限被打破!三個(gè)輕量級智能體分工協(xié)作,如何讓問答系統(tǒng)更精準(zhǔn)? 原創(chuàng)
近期,公司在AI相關(guān)項(xiàng)目,尤其是問答系統(tǒng)領(lǐng)域,對回答的準(zhǔn)確率和表述質(zhì)量提出了更高的要求。用戶提出的問題不僅限于基礎(chǔ)性問題,還可能涉及多樣化、復(fù)雜化的場景。也就在上周五快下班的時(shí)候,項(xiàng)目經(jīng)理向我反饋,之前的項(xiàng)目團(tuán)隊(duì)支持的某客戶在使用問答系統(tǒng)時(shí),除了查詢私有知識庫中的信息外,還會提出以下幾類問題:
- 可直接由大語言模型(LLM)回答的問題:例如通用知識或常識性問題。
- 非知識庫相關(guān)的口頭表達(dá):如“謝謝”、“再見”等社交性語句。
- 需要多步推理的復(fù)雜問題:例如涉及邏輯推理或上下文關(guān)聯(lián)的問題。
然而,之前項(xiàng)目團(tuán)隊(duì)采用的RAG技術(shù)存在一定的局限性:無論用戶提出何種問題,系統(tǒng)均默認(rèn)從知識庫中檢索答案,再交由LLM生成回答。針對非知識庫問題(如口頭表達(dá)),團(tuán)隊(duì)通過在prompt層面設(shè)置固定回復(fù)的方式進(jìn)行處理。雖然這種方法能夠部分解決問題,但其設(shè)計(jì)不夠優(yōu)雅,且無法有效應(yīng)對需要多步推理的復(fù)雜問題。項(xiàng)目經(jīng)理希望我能提出一種更優(yōu)化的解決方案,以應(yīng)對上述挑戰(zhàn)。為此,我向他提出了一種輕量級的多智能體方案,在不修改檢索器和LLM的前提下,優(yōu)化整個(gè)RAG流程。
架構(gòu)圖
定義三個(gè)智能體
我們設(shè)計(jì)了三個(gè)專門的智能體——推理路由器(Reasoning Router)、信息過濾器(Information Filter)和****決策制定者(Decision Maker)——以促進(jìn)檢索器與大型語言模型(LLM)之間的通信,每個(gè)輕量級智能體扮演不同的角色,通過有針對性的指令協(xié)同管理RAG(Retrieval-Augmented Generation)管道的各個(gè)方面。這種統(tǒng)一設(shè)計(jì)確保了高效的協(xié)調(diào),同時(shí)保持了邊緣部署的簡潔性。三個(gè)智能體分別負(fù)責(zé)評估是否需要檢索、生成有效的查詢以及選擇適合 LLMs 的信息。
推理路由器(Reasoning Router)
從高層次視角確定給定問題的最佳推理策略。根據(jù)當(dāng)前狀態(tài)(即問題),它通過最多兩步操作選擇行動:
- 決定檢索必要性:如果輸出[No Retrieval],則問題直接由LLM處理,利用其內(nèi)部知識生成答案。
- 確定問題復(fù)雜性:如果輸出[Retrieval],還會評估問題是否需要復(fù)雜推理。
- 對于簡單問題,生成一個(gè)并與檢索器交互以獲取文檔。檢索到的文檔隨后由信息過濾器處理,提取出適合LLM的相關(guān)內(nèi)容。最后,LLM使用過濾后的文檔生成問題的答案。
- 對于復(fù)雜問題,輸出[Planning],這將觸發(fā)需要多個(gè)智能體協(xié)調(diào)的多步推理策略。
具體示例如下:
- 示例1(無需檢索):
a.輸入問題:q = "What is the capital of France?"
b.輸出:[No Retrieval]
c.解釋:該問題屬于常識性問題,可直接由LLM回答,無需檢索。
- 示例2(簡單問題,需檢索):
a.輸入問題:q = "What is the population of Paris in 2023?"
b.輸出:[Retrieval]<population of Paris 2023>
c.解釋:該問題需要從外部知識庫中檢索最新數(shù)據(jù)。
- 示例3(復(fù)雜問題,需多步推理):
a.輸入問題:q = "How does the economic policy of Country A affect its trade relations with Country B?"
b.輸出:[Planning]
c.解釋:該問題涉及多步推理,需要分解為多個(gè)子目標(biāo)并逐步解決。
過濾器(Information Filter)
用于處理和過濾檢索到的信息,以識別適合LLM的內(nèi)容。其狀態(tài)空間包括問題、檢索到的文檔以及當(dāng)前的推理目標(biāo)(如果在[Planning]模式下運(yùn)行)。
決策者(Decision Maker)
根據(jù)當(dāng)前狀態(tài)在[Planning]策略中確定最佳行動。其狀態(tài)空間包括問題、LLM生成的路線圖以及推理歷史中積累的文檔。根據(jù)當(dāng)前狀態(tài),智能地選擇行動以評估進(jìn)展并決定下一步操作。
智能體如何協(xié)作?
直接回答策略(Direct Answering Strategy)和單次檢索策略(Single-pass Strategy)已在推理路由器(Reasoning Router)的定義中介紹,分別對應(yīng)于輸出[No Retrieval]和[Retrieval]。
多步推理策略(Multi-Step Reasoning Strategy)對應(yīng)于推理路由器輸出的[Planning]。該策略旨在解決需要LLM生成高層次路線圖以及多次檢索-過濾循環(huán)的復(fù)雜問題,通過以下三個(gè)階段實(shí)現(xiàn)迭代式信息收集和推理:
- 生成路線圖(Generate Roadmap):LLM將復(fù)雜問題分解為一系列結(jié)構(gòu)化的子目標(biāo),為智能體提供高層次的指導(dǎo)。這些子目標(biāo)定義了解決問題的步驟和所需的信息類型。
- 迭代檢索與過濾(Iterative Retrieval and Filtering):根據(jù)生成的路線圖,智能體通過多次檢索-過濾循環(huán)逐步收集相關(guān)信息。每次循環(huán)中,推理路由器確定當(dāng)前子目標(biāo)是否需要檢索,信息過濾器提取相關(guān)文檔,決策制定者評估進(jìn)展并決定下一步操作。
- 綜合與生成答案(Synthesis and Answer Generation):在完成所有子目標(biāo)后,LLM綜合收集到的信息,生成最終答案。這一過程確保了復(fù)雜問題能夠得到全面且準(zhǔn)確的回答。
通過這三種策略,我們的多智能體系統(tǒng)能夠自適應(yīng)地處理不同復(fù)雜度的問題:
- 直接回答策略(Direct Answering Strategy):適用于通用知識問題,提供即時(shí)響應(yīng)。
- 單次檢索策略(Single-pass Strategy):高效處理基于事實(shí)的問題,通過一次檢索-過濾循環(huán)獲取答案。
- 多步推理策略(Multi-Step Strategy):通過引導(dǎo)式迭代推理解決復(fù)雜問題。
prompt如何設(shè)計(jì)
Reasoning Router
推理路由器將按照以下步驟進(jìn)行評估并輸出相應(yīng)的動作:
- 評估問題:
a.分析問題的特異性、復(fù)雜性和清晰度,判斷是否需要檢索或規(guī)劃。
b.確定問題是否屬于LLM的現(xiàn)有知識范圍,或者是否需要外部信息支持。
- 決策類別:
a.如果問題復(fù)雜且需要規(guī)劃,輸出:[Planning]。
b.如果問題需要特定信息(如最新事件或LLM知識范圍外的細(xì)分領(lǐng)域),輸出:[Retrieval] ‘YOUR QUERY HERE‘。
c.如果問題可以直接由LLM回答,輸出:[No Retrieval]。
- 輸出格式:
a.無需檢索:[No Retrieval]
b.需要檢索:[Retrieval](適用于簡單問題)
c.需要規(guī)劃:[Planning](適用于復(fù)雜問題)
其對應(yīng)的prompt可以如下設(shè)計(jì):
你是一個(gè)智能助手,負(fù)責(zé)評估給定的問題是否需要通過檢索獲取更多信息,或者需要規(guī)劃才能得出準(zhǔn)確答案。你可以訪問一個(gè)大型語言模型(LLM)來進(jìn)行規(guī)劃或回答問題,并且有一個(gè)檢索系統(tǒng)來提供與查詢相關(guān)的信息。
指令:
1. **評估問題**:評估基于LLM的現(xiàn)有知識是否可以提供精確的答案。考慮問題的具體性、復(fù)雜性和清晰度。
2. **決策類別**:
- 如果問題是復(fù)雜的,并且在檢索之前需要一個(gè)規(guī)劃階段,你的回應(yīng)應(yīng)該是:
[Planning]
- 如果問題請求特定信息,你認(rèn)為LLM不具備這些信息,或者涉及最近的事件或超出LLM知識范圍的小眾話題,請按照以下格式進(jìn)行回應(yīng):
[Retrieval] ‘YOUR QUERY HERE‘
- 如果你認(rèn)為LLM可以在沒有額外信息的情況下回答問題,請回復(fù):
[No Retrieval]
3. **專注于評估**:避免直接回答問題。只專注于確定是否需要檢索或規(guī)劃。
推理路由器狀態(tài)
現(xiàn)在,請?zhí)幚硪韵聠栴}:
問題:{question}
推理路由器的所有可能操作輸出
% 對于不需要檢索的情況
[No Retrieval]
% 對于需要檢索的情況
[Retrieval]<查詢內(nèi)容> (對于簡單問題)
[Planning] (對于復(fù)雜問題)
Information Filter
信息過濾器的狀態(tài)空間根據(jù)系統(tǒng)當(dāng)前采用的策略不同而有所區(qū)別:
- 單次檢索策略(Single-pass Strategy):
q:輸入問題。
retrieved documents:從檢索系統(tǒng)中獲取的相關(guān)文檔。
狀態(tài)空間:S2 = {q, retrieved documents}
- 多步推理策略(Multi-step Reasoning Strategy):
q:輸入問題。
retrieved documents:從檢索系統(tǒng)中獲取的相關(guān)文檔。
current objective:當(dāng)前推理目標(biāo)(在多步推理模式下)。
狀態(tài)空間:S2 = {q, retrieved documents, current objective}
它會進(jìn)行文檔分析并按照下面的格式進(jìn)行輸出:
Thought: <對每篇文檔的分析>
Action: [<選定的文檔ID>]
示例
- 單次檢索策略:
問題:What is the population of Paris in 2023?
檢索到的文檔:包含巴黎人口統(tǒng)計(jì)數(shù)據(jù)的多篇文檔。
信息過濾器輸出:
Thought: Document 1 contains the most recent population data for Paris (2023).
Action: [Document 1]
2. 多步推理策略:
問題:How does the economic policy of Country A affect its trade relations with Country B?
當(dāng)前目標(biāo):分析Country A的經(jīng)濟(jì)政策。
檢索到的文檔:多篇關(guān)于Country A經(jīng)濟(jì)政策的文檔。
對應(yīng)的prompt如下設(shè)計(jì):
你是一個(gè)智能助手,負(fù)責(zé)根據(jù)給定的問題和當(dāng)前步驟的目標(biāo)分析檢索到的文檔。你的角色是確定每個(gè)文檔與問題和指定目標(biāo)的相關(guān)性。
指令:
分析相關(guān)性:評估每個(gè)文檔是否符合當(dāng)前檢索步驟的目標(biāo),并且包含對問題的直接回答。
思考過程:為每個(gè)文檔提供簡要分析,同時(shí)考慮答案內(nèi)容和檢索目標(biāo)。
篩選文檔:在你的思考過程之后,生成一個(gè)文檔索引列表,指示保留哪些文檔。
信息過濾狀態(tài)
現(xiàn)在,請?zhí)幚硪韵聠栴}:
當(dāng)前步驟的目標(biāo):{objective}(僅適用于[Planning]模式)
問題:{question}
文檔:{documents}
信息過濾輸出
思考:<對每個(gè)文檔的分析>
行動:[<選定的文檔ID>]
Decision Maker
決策者的狀態(tài)空間為:S3 = {q, Accumulated Documents, Roadmap}
- q:輸入問題。
- Accumulated Documents:當(dāng)前累積的文檔(來自之前的檢索-過濾循環(huán))。
- Roadmap:由LLM生成的推理路線圖(在多步推理策略中)。
主要職責(zé)是根據(jù)當(dāng)前狀態(tài)評估推理進(jìn)展,并決定是否需要進(jìn)一步檢索或直接生成最終答案。其動作空間包括以下兩種可能的操作:
- [Retrieval]:
請求額外的檢索-過濾循環(huán),生成子查詢以獲取更多相關(guān)信息。
適用場景:當(dāng)前累積的文檔不足以解決所有子目標(biāo)。
- [LLM]:
將當(dāng)前累積的所有文檔傳遞給LLM,生成最終答案。
適用場景:當(dāng)前累積的文檔已足夠解決所有子目標(biāo)。
它的輸出格式如下:
Thought: <對當(dāng)前進(jìn)展和目標(biāo)的分析>
Action: {[Retrieval]<subquery content>, 或 [LLM]}
示例
- 需要進(jìn)一步檢索:
問題:How does the economic policy of Country A affect its trade relations with Country B?
當(dāng)前狀態(tài):
Roadmap:下一步需要分析Country B的貿(mào)易政策。
Accumulated Documents:包含Country A經(jīng)濟(jì)政策的文檔。
決策者輸出:
Thought: Additional information on Country B's trade policy is required to complete the analysis.
Action: [Retrieval]<trade policy of Country B>
- 生成最終答案
問題:How does the economic policy of Country A affect its trade relations with Country B?
當(dāng)前狀態(tài):
Accumulated Documents:包含Country A經(jīng)濟(jì)政策和Country B貿(mào)易政策的文檔。
Roadmap:所有子目標(biāo)已完成。
決策者輸出:
Thought: Sufficient information has been accumulated to generate the final answer.
Action: [LLM]
通過決策制定器的動態(tài)評估和決策,系統(tǒng)能夠在多步推理策略中靈活調(diào)整檢索和生成過程,確保復(fù)雜問題得到全面且準(zhǔn)確的回答。
對應(yīng)的prompt如下:
你是一個(gè)智能助手,負(fù)責(zé)根據(jù)提供的現(xiàn)有文檔、計(jì)劃和問題確定下一步的適當(dāng)行動。你可以訪問一個(gè)大型語言模型(LLM)來回答問題,并且有一個(gè)檢索系統(tǒng)用于收集額外的文檔。你的目標(biāo)是決定是否編寫查詢以檢索相關(guān)文檔,或者基于現(xiàn)有文檔和計(jì)劃使用LLM生成全面的答案。
指令:
1. **評估現(xiàn)有文檔**:評估現(xiàn)有文檔是否足以回答問題。
2. **遵循計(jì)劃**:了解計(jì)劃中概述的下一步驟。
3. **決策類別**:
- 如果現(xiàn)有文檔不足以需要額外檢索,請回復(fù):
[Retrieval] ‘YOUR QUERY HERE‘
- 如果現(xiàn)有文檔足以回答問題,請回復(fù):
[LLM]
4. **專注于行動**:不要直接回答問題;集中精力根據(jù)現(xiàn)有文檔、計(jì)劃和問題識別下一步的適當(dāng)行動。
決策者狀態(tài)
現(xiàn)在,請?zhí)幚硪韵聠栴}:現(xiàn)有文檔:{accumulated documents}
路線圖:{roadmap}
問題:{question}
決策者的輸出
思考:[你對當(dāng)前情況的分析(需要檢索額外信息或使用LLM回答)]
行動:[基于分析的決定([Retrieval]<子查詢內(nèi)容> 或 [LLM])]
總結(jié)
通過引入多智能體協(xié)作的RAG優(yōu)化方案,成功解決了傳統(tǒng)RAG技術(shù)在處理多樣化問題時(shí)的局限性。然而,這種設(shè)計(jì)較為依賴模型的能力,尤其是Reasoning Router的準(zhǔn)確性。一旦Reasoning Router判斷錯(cuò)誤,最終結(jié)果可能不如預(yù)期。因此在資源允許的情況下,可以考慮使用一個(gè)7B小模型進(jìn)行fine-tuning以提升Reasoning Router的表現(xiàn)。
本文轉(zhuǎn)載自公眾號AI 博物院 作者:longyunfeigu
原文鏈接:??https://mp.weixin.qq.com/s/GizZiM1JeF2Mc2Ui8coCGg??
