天天看點

案例解析:RAG的盡頭是Agent

作者:ChatGPT掃地僧
案例解析:RAG的盡頭是Agent

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

引言

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

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

RAG痛點

案例解析:RAG的盡頭是Agent

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的盡頭是Agent

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

案例解析: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關鍵詞檢索方法。

案例解析:RAG的盡頭是Agent

級别二:分塊閱讀

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

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

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

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

案例解析:RAG的盡頭是Agent

級别三:逐漸推理

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

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

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

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

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

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

将Lv2-智能體的回應添加到Lv3-智能體的記憶中。

}

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

案例解析:RAG的盡頭是Agent

2.實驗對比

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

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

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

●4k-智能體:使用32k-模型的模型,但采用前文描述的更複雜的智能體政策

案例解析:RAG的盡頭是Agent

通過上述實驗,我們能夠看到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