案例解析:RAG 的盡頭是 Agent

AI 進化論:從 RAG 到 Agent,智能體如何重塑未來世界

© 作者 | Blaze

來源 | 神州問學

引言

隨着 ChatGPT、ChatGPT-4 等的發佈,我們徹底被大模型(LLM)的魅力所征服,越來越多的公司和企業開始聚焦大模型技術的研發和使用,爲我們的日常生活帶來了極大的便利。但是,大模型同樣面臨着時效性、準確性等各種問題,如何讓 LLM 變得更好?如何解決 LLM 所面臨的挑戰?如何構建高級的 LLM 應用?逐漸成爲 AI 領域重要的研究課題。

爲了解決這其中一些問題,RAG 應運而生,RAG(檢索增強生成)技術在自然語言處理領域帶來了顯著突破。通過結合信息檢索和文本生成技術,RAG 使機器能夠更準確地理解和迴應人類語言。但是隨着 RAG 的應用,我們也逐漸意識到 RAG 的侷限性,那麼 RAG 究竟有何痛點?我們又應該如何解決?讓我們來一起探尋吧!

RAG 痛點

RAG 技術可以在一些常見的自然語言處理任務中發揮作用,如問答系統、智能助手和虛擬代理、信息檢索、知識圖譜填充等,通過 RAG,建立一個龐大的知識庫,當用戶查詢的時候,利用信息檢索從知識庫中查詢相關文本片段或實時數據,然後我們對檢索到的信息進行篩選、排序和加權等操作,最後將整合後的信息作爲生成模型的輸入,無疑是提高答案准確性,減少虛假信息,極大的增強大模型的可用性。

但是 RAG 最初是爲簡單問題和小型文檔集設計的,所以能夠快速、高效。準確的進行輸出,比如:

特斯拉的主要風險因素是什麼?(over Tesla 2021 10K)

作者在 YC 期間做了什麼?(Paul Graham essay)

我們通過使用特定的知識庫,針對以上簡單問題,LLM 可以給出很好的答案,但是,針對某些類型的問題,RAG 可能無法產生準確或者令人滿意的結果,例如:

總結性問題:“給我總結一下 XXX 公司的年度報告”

比較性問題:“比較開發者 A 和開發者 B 的開源貢獻”

結構化分析 + 語義搜索:“告訴我美國最高業績的拼車公司的風險因素”

綜合性多部分問題: “告訴我文章 A 中的贊成 X 的論點,然後告訴我文章 B 中的贊成 Y 的論點,按照我們內部的風格指南製作一個表格,然後根據這些事實自行得出結論”

Naive RAG,很多時候只是一個搜索系統,針對一些簡單問題或查詢,能夠給予用戶很好的反饋,但是有很多複雜問題 / 任務是它無法回答的,那麼遇到複雜的問題 / 任務,我們可以怎麼做呢?

RAG To Agent

常規的 RAG 應用通常只是通過結合自有知識庫來增強大模型,以獲得更準確、實時和豐富的垂直內容或個性化結果,但這依然侷限於內容生成的範疇。如果你需要人工智能像一個 “以終爲始” 的高效率員工一樣,自主選取各種工具,並與不同系統進行溝通協作,直到交付最終結果,那麼就需要從 RAG 轉變到 Agent。

從 RAG 到 Agent 的轉變,並不是意味着拋棄 RAG,而是在此基礎上增加以下幾個層次的功能:

● 多輪對話: 與用戶進行更深入的交流,識別用戶意圖

●查詢 / 任務規劃層: 能夠理解並規劃複雜的查詢和任務

●外部環境工具接口: 使用外部工具完成任務

●反思: 對執行結果進行反思總結和評估

● 記憶: 維護用戶交互的歷史,從而提供個性化服務

通過增加這些功能,Agent 不僅能適應複雜任務,還能在多變環境中靈活應對。與 RAG 相比,Agent 則專注於實現特定任務,更注重與現有系統集成。它不僅能夠理解語言,還能在現實世界或數字系統中採取行動,它不僅能夠執行復雜的多步驟任務,如檢索信息、處理信息,它還可以無縫接入各種系統和 API 接口,訪問用戶數據,與數據庫交互。

人類之所以是人類,一個最明顯的特徵就是會使用工具。作爲智能體,Agent 同樣可以藉助外部工具,使其能夠處理更加複雜的任務。比如 Agent 可以使用圖表生成工具生成在線圖表,可以使用天氣查詢工具查詢天氣。由此可見,Agent 是可以真正釋放 LLM 潛能的關鍵,那麼我們的 LLM 應用,也終將從 RAG 轉向 Agent,Agent 無疑是 RAG 的盡頭。

案例分析

近日,阿里千問團隊開發了一個 Agent(智能體),通過結合 RAG,用於理解包含百萬字詞的文檔,雖然僅使用 Qwen2 模型的 8k 上下文,但效果超過 RAG 和長序列原生模型。

1.Agent 構建

該 Agent 的構建主要包含三個複雜度級別,每一層都建立在前一層的基礎上

級別一:檢索

如何找出與提取關鍵詞最相關的塊,主要分爲三個步驟:

● 步驟 1:指令信息與非指令信息分開

用戶輸入:" 回答時請用 2000 字詳盡闡述,我的問題是,自行車是什麼時候發明的?請用英文回覆。

信息拆解:{"信息": ["自行車是什麼時候發明的"], "指令": ["回答時用 2000 字", "儘量詳盡", "用英文回覆"]}。

●步驟 2:聊天模型推導出多語言關鍵詞。

輸入:"自行車是什麼時候發明的"

信息轉換:{"關鍵詞_英文": ["bicycles", "invented", "when"], "關鍵詞_中文": ["自行車", "發明", "時間"]}。

●步驟 3:運用 BM25 關鍵詞檢索方法。

級別二:分塊閱讀

如何解決相關塊與用戶查詢關鍵詞重疊程度不足時失效,導致這些相關的塊未被檢索到、沒有提供給模型。主要採用以下策略:

●步驟 1:讓聊天模型對於每個 512 字塊評估其與用戶查詢的相關性,如果認爲不相關則輸出 "無", 如果相關則輸出相關句子。

● 步驟 2:取出步驟 1 中相關句子,用它們作爲搜索查詢詞,通過 BM25 檢索出最相關的塊。

●步驟 3:基於檢索到的上下文生成最終答案。

級別三:逐步推理

如何解決多跳推理。例如,用戶輸入:“與第五交響曲創作於同一世紀的交通工具是什麼?” 模型首先需要拆分爲子問題進行回答,如 “第五交響曲是在哪個世紀創作的?”,“自行車於 19 世紀發明”

可以採用工具調用(也稱爲函數調用)智能體或 ReAct 智能體進行解決:

向 Lv3 - 智能體提出一個問題。

while (Lv3 - 智能體無法根據其記憶回答問題) {

    Lv3 - 智能體提出一個新的子問題待解答。

    Lv3 - 智能體向 Lv2 - 智能體提問這個子問題。

    將 Lv2 - 智能體的迴應添加到 Lv3 - 智能體的記憶中。

}

Lv3 - 智能體提供原始問題的最終答案。

2. 實驗對比

爲了進行驗證,採取實驗比對方式,通過採用以下三種模型進行比對:

●32k - 模型:7B 對話模型,主要在 8k 上下文樣本上進行微調,並輔以少量 32k 上下文樣本

●4k-RAG:使用與 32k - 模型相同的模型,但採取了 Lv1 - 智能體的 RAG 策略

●4k - 智能體:使用 32k - 模型的模型,但採用前文描述的更復雜的智能體策略

通過上述實驗,我們能夠看到 4k - 智能體始終表現優於 32k - 模型和 4k-RAG,它結合 RAG,通過工具調用,可以有更高的效率和準確率。但是 Agent 的優勢遠不止這些,Agent 作爲人工智能系統的關鍵角色,逐漸成爲連接人與機器的重要橋樑,一旦 Agent 準備就緒,就可以爲很多問題提供更多的解決方案。

未來展望

對於未來,我們知道 Agent 應用的開發必將遇到衆多挑戰,但同樣是一種機遇。每一種挑戰,都會觸發新的技術融合,李彥宏曾表示:以後不會存在程序員這種職業了,因爲只要會說話,人人都會具備程序員的能力。筆者認爲,Agent 雖然功能強大,但路漫漫其修遠兮,Agent 的應用落地依然有很長的路要走,但是我堅信不久的將來會有更多的 Agent 應用落地,Agent 應用會涵蓋更多的技術,終將會融進各行各業,爲人類帶來更大的便利。

結語

RAG 和智能體(Agent)這些技術和理念的潛力在於相互結合,通過結合大模型的深層次語言理解和生成能力、RAG 的垂直和實時的信息檢索能力以及 Agent 的決策和執行能力,形成更爲強大和敏捷的 AI 應用。Agent 能夠通過自我反思和反饋來改進執行,同時提供可觀察性,以便開發者能夠追蹤和理解 Agent 的行爲,結合各種工具,融合 RAG 技術,可以處理更復雜的業務邏輯。同時,多個 Agent 可以同步或異步地交互,以執行更復雜的任務,助力構建更加複雜的 LLM 應用。

參考文獻

https://qwenlm.github.io/zh/blog/qwen-agent-2405/

https://docs.google.com/presentation/d/1IWjo8bhoatWccCfGLYw_QhUI4zfF-MujN3ORIDCBIbc/edit#slide=id.g2bac367b3d6_0_0

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/nwPaNEJzY55GQmhe8Bgakw