昨天的文章介紹到我們需要使用Agentic RAG來讓我們的RAG系統更聰明,並解決多輪思考或工具調用的瓶頸,也介紹到Agentic RAG其實就是透過AI Agent來驅動RAG工作的一種架構。
AI Agent在這邊扮演著重要的角色,但讀者們可能都知道,AI Agent是一個統稱,背後其實是一顆聰明的LLM搭配一個Agnet flow,而Agent flow有許多不同的選擇,今天我們就來介紹一下目前主流的Agent flow。
Agent flow 指的是一種基於「流程 (flow) + 代理人 (agent)」的架構設計方式。
它的核心特點包含:
動態決策 (Dynamic Decision Making)
代理人能根據任務情境,決定下一步要呼叫的工具或採用的策略。
任務拆解與規劃 (Task Decomposition & Planning)
複雜任務能被拆分為多個子任務,並逐步解決。
反思與修正 (Reflection & Correction)
Agent Flow 支援檢查中間結果,並根據評估調整策略(迭代檢索、重寫查詢)。
多工具/多資料源協作 (Multi-Tool & Multi-Source Integration)
不再局限於單一向量庫,可結合 API、結構化資料庫、Web 搜尋與專用工具。
可編排性與可視化 (Orchestration & Visualization)
流程可被定義、追蹤與監控,方便除錯與擴充。
目前市面上有多種框架支援 Agent flow,以下整理幾個主流方案:
框架 | 核心特點 | 適用場景 |
---|---|---|
LangChain | 最早期與最廣泛應用的 Agent 框架,支援 ReAct、Self-Ask、MRKL 等 Agent 模式;整合工具豐富(DB、API、RAG) | 研究、PoC、快速開發 Agent 驅動的應用 |
LlamaIndex (原 GPT Index) | 強調知識管理與資料源整合;Agent flow 側重於資訊檢索與任務導向 | 資料導向應用(企業知識庫整合) |
CrewAI | 專注於多代理人協作,支援角色分工與任務協同 | 多步驟流程、自動化工作流 |
Haystack Agents (deepset) | 與 NLP pipeline 整合緊密,提供強大的檢索、問答與 workflow | 對 NLP / Search 領域需求高的應用 |
Autogen (Microsoft) | 強調多代理對話與協作;可編排多 LLM 角色互動 | 複雜任務、多角色模擬、協作系統 |
而筆者算是早期就一直在使用LangChain,因此還是選擇以熟悉的框架為主,這邊也整理以下幾個LangChain的優點:
後面的介紹我們將以LangChain支援的Agent flow來介紹如果讀者有更好的建議還請不吝提供。
LangChain 提供了多種 Agent 類型,每一種都有不同的設計理念與應用場景。以下整理幾個主要類型:
Agent Type | 核心概念 | 優點 | 缺點 | 適用場景 |
---|---|---|---|---|
Zero-shot ReAct Description | 基於 ReAct 模式,透過工具描述即可決策,不需範例 | 建置快速、靈活性高;適合多工具情境 | 可能因缺乏範例而表現不穩定;推理容易偏差 | 多工具組合、快速原型 |
ReAct | 思考 (Thought) → 行動 (Action) → 觀察 (Observation) 循環 | 多步推理能力強,能動態選擇工具 | 過程冗長,容易陷入無限循環 | 多步問答、多來源整合 |
Self-Ask with Search | 問題拆解 → 搜索 → 整合答案 | 擅長處理複雜問題,能自動分解查詢 | 適用範圍偏窄,主要依賴檢索工具 | 問題分解、多跳查詢 |
MRKL (Modular Reasoning, Knowledge, Language) | 多模組架構,Agent 在工具間做推理與決策 | 結構化明確,擴展性高;適合結合結構化與非結構化資料 | 架構較複雜,實作成本高 | 企業級應用、多模組整合 |
Structured Chat | 嚴格結構化的對話格式,輸出清楚的 Action/Observation | 高可控性、易追蹤;方便日誌紀錄與審計 | 限制模型靈活性,對 prompt 設計要求高 | 企業應用、法規合規場景 |
今天我們進一步了解Agent和Agent flow的關係,也整理了目前LangChain所支援的Agent flow,筆者目前的實作比較後,主要都是以MARK作為Agent的框架,考量的面向主要是反應速度,明天我們將針對MARK做進一步的介紹,並為後面將MRKL結合Agentic RAG做準備!