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