如何利用RAG+Agent輕松解決企業(yè)復雜問題? 原創(chuàng) 精華
1、大模型的痛點
大模型技術席卷全球,為日常工作和生活帶來便利,但也面臨時效性、準確性等問題。如何提升大模型的性能?解決其挑戰(zhàn)?構建高級應用?成為重要待解決問題。
RAG(檢索增強生成) 技術通過信息檢索和文本生成,顯著提升了大模型的性能。但 RAG 也存在局限性,比如:數據依賴、檢索效率等。如何解決這些痛點?如何進一步提升 RAG 性能?是本文剖析的重點。
2、RAG 的痛點
Naive RAG 通過檢索和生成,提升大模型在問答、智能助手等任務上的性能。但 Naive RAG 難以處理復雜問題或大型文檔集,舉例如下:
簡單問題:"特斯拉的主要風險因素是什么?" 和 "作者在 YC 期間做了什么?" 等問題,Naive RAG 可以給出準確答案。
復雜問題:"總結 XXX 公司年度報告"、"比較開發(fā)者 A 和 B 貢獻" 或 "分析滴滴公司風險" 等問題,Naive RAG 可能無法提供滿意結果。
針對復雜問題,我們需要探索更高級 RAG 解決方案。
3、From RAG to Agent
Naive RAG(基于檢索的增強生成)應用主要是在整合自身知識庫的基礎上,提升大型模型的性能,以產出更精準、即時和豐富的行業(yè)內容或定制化信息。然而,這種應用仍限于內容生成的領域。若要人工智能像一位“目標導向”的高效工作者一樣,自主選擇多種工具,與不同系統(tǒng)互動合作,直至完成最終任務,那么我們就需要從 RAG 升級至 Agent 模式。
以下是 RAG 向 Agent 轉變的描述:
從 RAG 到 Agent 的演進,并非完全摒棄 RAG,而是在其基礎上拓展以下幾層功能:
- 多輪對話能力:與用戶進行更深層次的交流,準確把握用戶需求。
- 查詢/任務規(guī)劃層:理解和規(guī)劃復雜的查詢與任務流程。
- 外部工具接口:利用外部工具來完成特定任務。
- 反思機制:對執(zhí)行結果進行反思、總結和評估。
- 記憶功能:記錄用戶交互歷史,以提供更加個性化的服務。
通過這些功能的增強,Agent 不僅能應對復雜任務,還能在多變的環(huán)境中靈活應對。與 RAG 相比,Agent更專注于完成特定任務,并更注重與現有系統(tǒng)的融合。它不僅理解語言,還能在現實世界或數字系統(tǒng)中采取行動。Agent 不僅能執(zhí)行復雜的多步驟任務,比如;信息檢索、數據處理,還能無縫接入各種系統(tǒng)和 API 接口,訪問用戶數據,與數據庫互動。
人類之所以獨特,很大程度上是因為我們會使用工具。同樣,作為智能體的Agent 也能借助外部工具,處理更為復雜的任務。比如:Agent 能夠利用圖表生成工具制作在線圖表,使用天氣查詢工具獲取天氣信息。因此,Agent 是真正釋放大模型潛能的關鍵。
因此,我們的大模型應用也將從 RAG 邁向 Agent,可以說,Agent 是 RAG 發(fā)展的必然歸宿。
4、案例剖析
最近,阿里巴巴千問團隊成功開發(fā)了一款新型 Agent(智能體),該智能體整合了 RAG 技術,旨在解析包含數百萬字詞的文檔。盡管它僅利用了 Qwen2 大模型的 8k 上下文窗口,但其性能表現卻超越了傳統(tǒng)的 RAG 模型和長序列原生模型。
Agent 構建流程如下:
該智能體的構建涉及三個級別,每一級都是基于前一級的構建:
級別一:檢索
這一級別關注的是如何識別并提取與關鍵詞最相關的文檔片段,主要分為以下三個步驟:
步驟1:區(qū)分指令信息與非指令信息
用戶輸入示例:“請用2000字的篇幅詳細說明,我的問題是,自行車是什么時候發(fā)明的?請用英文回答?!?/p>
信息分解:{“問題內容”: [“自行車是什么時候發(fā)明的”], “指令要求”: [“2000字詳細說明”, “用英文回答”]}。
步驟2:多語言關鍵詞推導
輸入問題:“自行車是什么時候發(fā)明的”
信息轉換:{“英文關鍵詞”: [“bicycles”, “invention”, “timing”], “中文關鍵詞”: [“自行車”, “發(fā)明”, “時間”]}。
步驟3:應用 BM25 關鍵詞檢索算法
通過 BM25 算法,對關鍵詞進行高效的檢索,以定位相關文檔片段。
級別二:分塊閱讀
當相關文檔片段與用戶查詢關鍵詞的重疊度不足,可能導致這些片段在檢索過程中被忽略,未能傳遞給大模型。為了解決這個問題,我們采用了以下策略:
步驟1:相關性評估
使用聊天模型對每個512字節(jié)的文檔片段進行評估,判斷其與用戶查詢的相關性。如果模型判斷為不相關,則輸出“無”;若判斷為相關,則輸出相關的句子。
步驟2:基于相關句子的檢索
從步驟1中提取出的相關句子,將它們作為搜索查詢詞,利用BM25算法檢索出與用戶查詢最相關的文檔塊。
步驟3:生成答案
根據檢索到的上下文信息,生成最終的答案。
級別三:遞進推理
面對多跳推理問題,比如:用戶提問:“與貝多芬的第五交響曲創(chuàng)作于同一世紀的交通工具是什么?”大模型需要將問題分解為多個子問題來逐一解答:“貝多芬的第五交響曲是在哪個世紀創(chuàng)作的?”以及“自行車是在哪個世紀發(fā)明的?”
這一挑戰(zhàn)可以通過以下步驟,利用工具調用(又稱函數調用)智能體或 ReAct智能體來解決:
1. 向三級智能體(Lv3-Agent)提出原始問題。
2. 當三級智能體無法根據其現有記憶回答問題時,執(zhí)行以下步驟:
a. 三級智能體生成一個新的子問題。
b. 三級智能體將這個子問題提交給二級智能體(Lv2-Agent)。
c. 將二級智能體的回答整合到三級智能體的記憶庫中。
3. 重復上述過程,直到三級智能體能夠回答原始問題。
4. 最終,三級智能體提供原始問題的解答。
參考:https://mp.weixin.qq.com/s/nwPaNEJzY55GQmhe8Bgakw
本文轉載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/ZHgWJ2XmlG3lOsIArzRBwQ??
