iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
DevOps

初探 LLM 可觀測性:打造可持續擴展的 AI 系統系列 第 27

【Day 27】從 RAG 到 Agentic RAG:解放知識庫的真正潛力

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20251011/20149562h4kWPwDWHT.jpg

前言

想像一下,一個大型語言模型(LLM)就像一位博學多聞、記憶力驚人的天才,但他的知識卻永遠停留在了「畢業」的那一天。對於畢業後世界上發生的任何新知、或是特定領域內的獨家資訊,他都一無所知。這就是傳統 LLM 面臨的困境:知識的陳舊性與「一本正經胡說八道」的幻覺問題。

為了解決這個問題,檢索增強生成(Retrieval-Augmented Generation, RAG) 技術應運而生。它就像是給了這位天才一本可以隨時翻閱的、即時更新的百科全書,讓他能夠「開卷考試」,根據最新的資料來回答問題。

然而,如果問題變得複雜,答案線索分散在好幾本書、一篇網路文章和一份內部報告中呢?這時,僅僅會「翻書」就不夠了。我們需要一位懂得如何規劃、如何選擇查閱哪些資料、甚至在找不到答案時會換個方法再試一次的智慧研究助理。這,就是 Agentic RAG 登場的時刻。

本文將帶你從 RAG 的基礎概念出發,深入探討傳統 RAG 的瓶頸,並揭示 Agentic RAG 如何透過賦予 AI 「思考」與「行動」的能力,將其從一個被動的問答機器,升級為能夠主動解決複雜問題的智慧代理人,徹底釋放企業內部知識的巨大價值。

前 LLM 時代的 RAG 的經典三大組件

https://ithelp.ithome.com.tw/upload/images/20251011/20149562AvhjFCN36D.png
https://weaviate.io/blog/what-is-agentic-rag

GPT-3 這樣強大的生成式模型出現之前,自然語言處理領域的主力是像 BERTRoBERTa 這樣的編碼器模型(Encoder-based Models)。這些模型非常擅長「理解」文本,但不擅長「生成」新的文本。因此,當時的問答系統主流是「抽取式問答(Extractive Question Answering)」。

讓我們用這個視角,重新審視 RAG 的三步驟:

檢索 (Retrieve):方法多元,但目標一致

這一步的核心目標始終不變:從龐大的資料庫中,找出與使用者問題最相關的幾段文字。 但在技術選擇上,除了向量檢索,還有更傳統且依然非常有效的方法:

  • 關鍵字檢索 (Keyword-based Retrieval): 這是最經典的方法,至今仍在搜尋引擎中扮演重要角色。它不依賴語意理解,而是透過計算詞頻和權重來找到文件。最著名的演算法是:
    • TF-IDF (Term Frequency-Inverse Document Frequency): 一個詞在一篇文章中出現越多次(TF),且在所有文件中越少見(IDF),就越能代表這篇文章的主題。
    • BM25 (Best Match 25): 一個從 TF-IDF 演化而來的、更為複雜和強大的排序演算法,是許多搜尋引擎(如 Elasticsearch)的預設核心演算法。

在那個時代,一個典型的檢索系統通常會結合關鍵字檢索和初步的向量檢索(當時的詞向量模型如 Word2Vec、GloVe),先用 BM25 快速篩選出數百篇可能相關的文件,再用向量模型做更精細的排序,最終選出最相關的幾個段落。

目標: 無論用什麼方法,這一步的產出都是一樣的:幾個最有可能包含答案的「候選段落(Candidate Passages)」

增強 (Augment):為「閱讀理解模型」準備材料

這一步在概念上完全相同:將檢索到的資訊和原始問題結合在一起。但它的目的有細微的差別。

它不是為了打造一個讓 LLM 能「自由發揮」的提示詞,而是為了構建一個標準的「閱讀理解任務(Reading Comprehension Task)」的輸入。

這個輸入格式通常是這樣的:

{
  "question": "愛因斯坦在哪一年提出了相對論?",
  "context": "[...這裡貼上從維基百科檢索到的段落,其中包含句子:'阿爾伯特·愛因斯坦在1905年發表了關於狹義相對論的開創性論文...']"
}

這個「增強」後的組合,是專門餵給下一步的「閱讀理解模型」的標準格式。

生成 (Generate) :在上下文中找到答案的起點和終點

這是最關鍵的區別。在前 LLM 時代,沒有一個模型能像現在的 LLM 一樣,流暢地「生成」一個完整的句子來回答問題。

取而代之的,是像 BERT 這樣的閱讀理解模型。BERT 的工作方式不是生成,而是「標記」。

當 BERT 接收到上一步的「問題」和「上下文」後,它會做兩件事:

  1. 預測答案的起始位置 (Start Position)。
  2. 預測答案的結束位置 (End Position)。

以上述例子來說,BERT 會在「上下文」中進行分析,最終的輸出結果極有可能是:

  • 起始位置指向 '1905' 這個詞的開頭。
  • 結束位置指向 '1905' 這個詞的結尾。

系統根據這兩個位置,從原文中「抽取(Extract)」出 1905 這個詞作為最終答案。它不會生成「愛因斯坦是在1905年提出相對論的」這樣一句完整的話。

了解 LLM 與 傳統 RAG 分別面對的痛點

在我們了解 Agentic RAG 之前,我們必須深入的了解 LLM 作為一個超級大腦的先天缺陷,其次是傳統 RAG 作為外部知識庫的後天瓶頸。

大語言模型的「先天缺陷」

LLM 就像是一個博學但只能「閉卷考試」的學生,它的知識完全來自於訓練時所學習的龐大資料庫。如果我們只依賴一個獨立的、未經 RAG 增強的 LLM,我們會立即面臨三大根本性難題:

  1. 知識的「保鮮期」:LLM 的知識被凍結在其訓練資料的截止日期。它對截止日期之後發生的任何事件、發表的任何研究、更新的任何公司政策都一無所知,就像一位與世隔絕的天才。
  2. 內容的「幻覺」:當遇到知識範圍之外或模糊不清的問題時,LLM 並不會承認「我不知道」,而是傾向於「創造」出看似合理卻完全錯誤的答案。這種「一本正經地胡說八道」的行為,在需要高度準確性的企業應用中是致命的。
  3. 領域的「局外性」:儘管 LLM 掌握了海量的通用網路知識,但它對任何組織的內部私有知識(例如,內部的技術文件、專案報告、財務數據)都一無所知。它是一個世界通,卻不是你公司的專家。

傳統 RAG 的出現,正是為了解決上述三大缺陷。它提供了即時性事實依據領域專業性。然而,當我們滿心歡喜地為 LLM 接上這個外部知識管道後,卻發現這個管道本身存在著新的、更棘手的問題。

傳統 RAG 的「後天瓶頸」

傳統 RAG 雖然能帶著各種參考書籍的進行「開卷考」,但這個考試的規則卻過於死板。它在解決舊問題的同時,暴露了自身作為一個「單純工具」的三大瓶頸。

僵化的單向檢索 (One-way Retrieval)

傳統 RAG 的流程是線性的、一次性的。它就像一個只會聽從單一指令的初級實習生。你叫他去資料庫找資料,他執行一次搜尋,把找到的結果給你,任務就結束了。他缺乏批判性思維:

  • 不會自我評估: 他不會去想「這次檢索到的資料品質好嗎?是否真的回答了問題的核心?」
  • 不會主動修正: 如果初次檢索的結果不佳(例如,使用了不精準的關鍵字),他不會嘗試「換個關鍵字再找一次」。

這種缺乏驗證與迭代的機制,導致整個系統的成敗完全押寶在第一次檢索的運氣上。一旦首次檢索的資訊有偏差,後續的結果也將是「在錯誤的基礎上,做出精美的回答」。

面對複雜問題的無力感

真實世界的問題往往需要多個步驟的推理和資訊整合,也就是所謂的「多跳問題」。傳統 RAG 在這類問題面前幾乎束手無策。

例如,一個使用者可能會問:「對於我上個月用『SUMMER2024』折扣碼買的那台筆電,退貨政策是什麼?」

要完美回答這個問題,一個智慧系統需要執行一個查詢鏈:

  1. 步驟一: 查詢公司的一般退貨政策(可能在一份 PDF 文件裡)。
  2. 步驟二: 查詢「SUMMER2024」折扣碼的特殊條款,確認是否有「特價商品不得退貨」的規定(可能在行銷資料庫裡)。
  3. 步驟三: 根據使用者的身分,查詢訂單系統,驗證該筆電的確切購買日期是否仍在退貨期限內(查詢結構化資料庫)。

傳統 RAG 缺乏一個「規劃大腦」。它無法將這個複雜問題拆解成上述三個子任務並依次執行。它很可能只完成了步驟一,找到一般退貨政策,從而給出一個不完整甚至完全錯誤的答案。

資訊孤島的挑戰

企業的知識資產天然就是分散的:技術文件是存放在文件庫的 PDF,市場分析報告在公司網站上,而銷售和客戶數據則存於結構化的 SQL 資料庫中。

傳統 RAG 的管道通常被設計為針對單一的知識來源。它就像一個只會使用圖書館某一種索引卡的管理員。你讓他找書,他只會去查作者卡,但如果答案需要結合書名卡和主題卡才能找到,他就無能為力了。它無法根據問題的性質,智慧地判斷此刻應該查詢文件庫瀏覽網站,還是對資料庫下 SQL 指令

維度 LLM 傳統 RAG
核心定位 一個「閉卷考試」的博學天才 一個「單純開卷考試」的應試者
知識來源與時效性 靜態的、凍結於訓練資料截止日期 可連接外部知識庫,具備即時性
事實依據與可靠性 容易產生「幻覺」,捏造事實 高度依賴檢索品質,答案有據可循
領域專業知識 缺乏對企業內部私有知識的了解 核心優勢,專為查詢內部知識而生
問題解決模式 單一步驟的生成,缺乏規劃能力 僵化的線性流程 (檢索→增強→生成)
處理複雜問題 無法處理需外部知識的多步驟問題 無法處理需從多個來源/多次檢索的「多跳問題」
資料來源彈性 無法主動連接外部資料源 通常被設計為針對單一知識來源,缺乏彈性
核心缺陷 與現實和私有數據脫節 流程僵化,缺乏推理與策略規劃能力

看到這裡,我們可以發現一個強大但與世隔絕的 LLM 大腦,以及一個能連接外部世界但運作方式僵硬且單一的 RAG,比較下就像是天平上的兩個極端點。

如果我們能給這個 RAG 管道本身也裝上一個「大腦」,讓它不只會被動地檢索,更能主動地思考、規劃和行動呢?這正是下一代技術 Agentic RAG 想要詮釋的完美解答。

Agentic RAG:從「問答機器」進化為「智慧代理人」

為了解決上述瓶頸,Agentic RAG 應運而生。它的核心思想,是在傳統 RAG 流程中引入一個「智慧代理人(Agent)」。這個 Agent 不再是被動執行指令的工具,而是一個具備規劃、決策、與反思能力的大腦,將整個 RAG 流程從一個固定的管道,轉變為一個動態的、可循環的解決問題框架。

https://ithelp.ithome.com.tw/upload/images/20251011/20149562TGsU3HQNHm.png
這個智慧代理人,就像從初級實習生進化為了資深研究助理,他擁有了幾項關鍵的能力:

  • 動態策略規劃 : 當接到一個複雜問題時,Agent 會先進行「拆解」。它會判斷這個問題需要幾個步驟來解決,並規劃出一個行動計畫。
  • 智慧工具選用: Agent 擁有一整個「工具箱」,裡面可能包括:PDF 文件檢索器、網站瀏覽器、資料庫查詢工具等。它會根據每個子任務的性質,選擇最適合的工具來執行。
  • 反思與自我修正 : 這是 Agentic RAG 最具革命性的一點。在執行完一個動作後(例如,進行了一次檢索),Agent 會評估產出的結果是否足以回答問題。如果資訊不足或不相關,它會進行「自我反思」,決定下一步是「用不同的關鍵字重新檢索」、「換一個工具試試」,還是「宣布目前資訊無法回答問題」。

就讓我們繼續深入 Agentic RAG 這個超級大腦是如何運作。

了解 Agentic RAG 的運作過程

https://ithelp.ithome.com.tw/upload/images/20251011/20149562PxZ6ptfAG8.png

Agentic RAG 的運作流程並非一條直線,而是一個由智慧代理人(Agent)主導的、可循環的動態過程。它將傳統 RAG 的被動檢索,升級為主動的「研究與分析」。讓我們一步步拆解這個智慧大腦的思考與行動過程。

第一階段:查詢的語意理解

將人類模糊、充滿變化的自然語言,轉化為機器能夠精準理解和比較的數學物件。

當使用者提出問題,例如「我該如何設定我們公司的 VPN?」,系統的第一步不是去進行關鍵字匹配。因為使用者也可能問「公司 VPN 的配置方法是什麼?」或「連上內部網路的步驟」,這些問題字面上完全不同,但意圖是相同的。

為了捕捉這個「意圖」,系統會使用一個嵌入模型(Embedding Model)

  • 什麼是 Embedding?

    Embedding 是一種將文字(單詞、句子或段落)轉換成一個由數字組成的向量(Vector)的技術。這個向量可以被想像成是該文字在一個巨大的、多維度「語意空間」中的唯一座標

  • 它長什麼樣子?

    一個 Embedding 向量就是一長串浮點數,例如:

    [-0.0069, 0.0044, -0.0032, ..., -0.0141]
    

    這個列表的長度(維度)通常是幾百到幾千維。它的神奇之處在於,語意上相近的文字,其向量座標在空間中的距離也更近。例如,「設定 VPN」的向量和「配置 VPN」的向量會是「鄰居」,但它們都會離「餐廳菜單」的向量非常遙遠。

這個過程,就是將「人類的意圖」轉化為「機器可計算的座標」,為下一步的精準檢索奠定了數學基礎。

第二階段:在高維空間中尋找答案線索

在數以百萬計的向量中,找到與問題「座標」最接近的幾個知識區塊。

我們的知識庫(如所有公司的技術手冊)已經被預先切塊並轉換成了大量的向量,存放在向量資料庫中。現在,我們手握著問題的查詢向量,需要在這個龐大的向量海洋中找到它的「鄰居」。

直接計算查詢向量與資料庫中每一個向量的距離,在資料量大時會非常耗時。為此,我們需要更聰明的演算法,即近似最近鄰(Approximate Nearest Neighbor, ANN)演算法。

  • 什麼是 ANN?

    ANN 的核心思想是犧牲一點點的絕對精確性,來換取巨大的速度提升。它不會地毯式地搜索每一個點,而是透過建立一個類似「高速公路網」的索引結構,來快速定位到最可能包含答案的區域。

  • 常見的演算法:

    • SCaNN (Scalable Nearest Neighbors): 由 Google 開發,透過數據量化和重新排序來優化搜索,在海量數據下表現優異。
    • HNSW (Hierarchical Navigable Small Worlds): 透過建立一個多層次的「捷徑」網絡,實現由粗到精的快速定位,是目前最流行的 ANN 演算法之一。

透過這些演算法,系統可以在瞬間返回最相關的幾個知識區塊,例如三份不同的文件,分別是《新員工 VPN 設定指南.pdf》、《VPN 常見問題排查.docx》和《遠端辦公安全守則.pdf》中的相關段落。這些就是 Agent 的第一批「研究材料」。

第三階段:精心組合上下文

將收集到的、經過驗證的精華資訊,與原始問題組合成一個完美的「增強提示詞」。

當我們得到 RAG 查詢到的結果後,通常會使用一個預設的 Prompt Template,並將收集到的資訊填入其中,例如:

你是一位專業且嚴謹的客服專家。請根據以下提供的【上下文資訊】,清晰地回答【使用者問題】。
你的回答必須完全基於提供的上下文,不要使用任何外部知識。如果上下文不足以回答,請直接告知「根據目前資訊,我無法回答您的問題」。
【上下文資訊】:
{context}
【使用者問題】:
{question}

將上一步收集到的精華資訊填入 {context} 變數中:

  • 資訊一: 從《標準商品退貨政策.pdf》中檢索到:「標準商品在購買後 30 天內可憑收據退貨。」
  • 資訊二: 從資料庫中檢索到:「『SUMMER2024』折扣碼條款:此折扣碼所購商品為最終銷售,不適用於標準退貨政策。」

最終,一個完整、豐富、且包含所有必要線索的提示詞就誕生了。

第四階段:關鍵轉折點 — Agent 的評估與決策循環

這是 Agentic RAG 與傳統 RAG 最根本的區別,也是「智慧」的體現。

在整個流程中,Agent 可能會進行多輪的 Reasoning 以及 Action,也就是 Agent 將會透過自身的判斷去調度工具,並且依照得到的結果來評估是否需要額外資訊。

Agent 的內心活動可能是這樣的:

  1. 首次行動: 使用 document_retriever 工具,以「筆電退貨政策」為關鍵字進行檢索。
  2. 觀察: 檢索到一份名為《標準商品退貨政策.pdf》的文件,內容提及「購買後 30 天內可退貨」。
  3. 思考: 「這個資訊很有用,但它沒有提及『折扣碼』或『特價商品』。使用者的問題非常具體,我需要確認折扣商品是否有特殊條款。目前的資訊不完整。」
  4. 二次行動: Agent 決定精煉查詢 (Refine Query) 並更換工具 (Switch Tool)。它生成一個新計畫:「使用 database_tool 工具,查詢『SUMMER2024』折扣碼的詳細條款。」
  5. 觀察: 資料庫返回結果:「條款:此折扣碼所購商品為最終銷售,不適用於標準退貨政策。」
  6. 思考與評估: 「很好,我現在有兩條關鍵資訊:標準政策和一個明確的例外條款。我已經收集到足夠形成一個完整且準確答案的上下文了。」

這個循環會一直持續,直到 Agent 認為它已經掌握了回答問題所需的所有高品質資訊為止。

第五階段:生成精準且有依據的回應

由 LLM 作為最終的總結者,將 Agent 準備好的所有材料,轉化為流暢、清晰、人性化的最終答案。

此刻,這個精心打造的提示詞被送到 LLM。重要的是,LLM 的角色已經從「研究員+作者」變成了純粹的「作者」**。**它被明確指示必須立足於 Agent 提供的上下文來生成答案。

由於 Agent 已經完成了所有複雜的資訊檢索、驗證和推理工作,LLM 可以心無旁騖地專注於它最擅長的事情:語言組織和生成。

它會根據提示詞中的上下文,生成如下的最終回應:

「關於您使用『SUMMER2024』折扣碼購買的筆電的退貨政策,根據我們的條款,雖然我們的一般政策允許在 30 天內退貨,但使用該特定折扣碼購買的商品屬於最終銷售,因此不適用於標準的退貨政策。」

這個答案不僅準確、有事實依據,還清晰地解釋了看似矛盾的資訊,完美地解決了使用者的複雜問題。這就是 Agentic RAG 完整運作流程的強大之處。

Agentic RAG 的最佳舞台:釋放沉睡的企業知識

通用知識(例如「法國首都是哪裡?」)LLM 早已瞭若指掌。然而,企業真正的價值在於那些模型從未學習過的、存於防火牆之內的獨特知識寶藏。這正是 Agentic RAG 大放異彩的核心舞台。

為什麼 RAG 的主戰場總是在企業內部?

簡單來說,RAG 系統之所以成為企業知識管理的必然選擇,主要基於三大核心原因:

  1. 資料私密性: 企業的敏感數據不能用於外部模型訓練。RAG 架構讓數據安全地保留在本地,LLM 只利用其進行當次回答,而不學習或記憶,確保了資料主權。
  2. 知識的獨特性與即時性: 企業內部充滿了獨有的術語、專案和不斷更新的政策。RAG 的知識庫可以即時更新,讓 AI 能夠隨時掌握最新的內部動態,這是模型微調無法比擬的優勢。
  3. 答案的可追溯性: 在商業場景中,答案的來源至關重要。RAG 可以明確指出其回答是基於哪一份文件的哪一段內容,提供了傳統 LLM 黑盒子所不具備的可信度。

Agentic RAG 的應用場景:從「問答」到「解決問題」

Agentic RAG 將上述優勢提升到了一個新高度,它不再只是被動的「問答機器」,而是主動的「問題解決夥伴」。

  • 企業級知識助理:

    員工可以下達複雜指令,如:「幫我總結上季度『飛鷹計畫』的進度,並找出其中關於預算超支的風險分析。」Agent 會自動拆解任務,先後查詢專案管理系統和文件庫,最終將兩部分資訊整合後提供給員工。

  • 次世代客服中心:

    客戶問:「我去年黑五買的 XR-500 吸塵器發出怪聲,還在保固期嗎?」Agent 能同時調用產品手冊(非結構化 PDF)來判斷故障原因,並查詢客戶資料庫(結構化數據)確認保固狀態,提供一站式的解決方案。

  • 自動化研究與分析師:

    財務總監可以指令:「對比我們和競爭對手 A 公司最新的財報,找出毛利率的主要差異。」Agent 會啟動網路搜尋找到對手財報,調用內部資料庫取得公司數據,甚至執行程式碼進行計算和比較,最終生成一份初步的分析報告。

在這些場景中,Agentic RAG 透過任務分解、工具調用和自我修正的能力,解決了傳統 RAG 無法應對的複雜、多步驟問題,真正開始釋放企業內部沉睡知識的巨大潛力。

結論

在寫這篇文章的過程中,我有一個有趣的發現。起初,我直觀地認為 Agentic RAG 就是「LLM Agent + RAG」的簡單相加。但隨著深入研究,我意識到它們的關係更為精妙。RAG 本身,其實可以被視為 Agent 工具箱中的一件強大工具。

我們傳統上認為的 Agent,是懂得使用工具(Tools)來與外部世界互動的智慧體。而向「向量資料庫進行檢索」這個動作,本質上就是在使用一個名為「RAG」的工具。

因此,一個能夠查詢 API、瀏覽網頁、執行程式碼的 Agent,在其解決問題的某個環節需要內部知識時,它自然而然地就會去「使用 RAG」。從這個角度看,幾乎所有先進的 Agent 應用,在其需要處理私有或即時知識時,都在執行著 Agentic RAG 的核心思想。

這個發現讓我更加清晰地釐清了它們之間細微而關鍵的差別:RAG 提供了「知識的深度」,而 Agent 賦予了「行動的廣度」。Agentic RAG 則是這兩者的完美融合,它創造出了一個既能引經據典、又能靈活應變的智慧體。


References:


上一篇
【Day 26】探討 Context Engineering:打造新一代 AI 應用的核心引擎
系列文
初探 LLM 可觀測性:打造可持續擴展的 AI 系統27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言