[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-how-to-build-agentic-rag-with-langgraph-zh":3,"tags-how-to-build-agentic-rag-with-langgraph-zh":35,"related-lang-how-to-build-agentic-rag-with-langgraph-zh":45,"related-posts-how-to-build-agentic-rag-with-langgraph-zh":49,"series-ai-agent-a8e2e21f-b0d2-4f4f-89bb-1936d5fe8fd5":86},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":19,"translated_content":10,"views":20,"is_premium":21,"created_at":22,"updated_at":22,"cover_image":11,"published_at":23,"rewrite_status":24,"rewrite_error":10,"rewritten_from_id":25,"slug":26,"category":27,"related_article_id":28,"status":29,"google_indexed_at":30,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":31,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":21},"a8e2e21f-b0d2-4f4f-89bb-1936d5fe8fd5","如何用 LangGraph 打造 Agentic RAG","\u003Cp data-speakable=\"summary\">這篇教你用 LangGraph 建立一個會路由、檢索、驗證並回答問題的 Age\u003Ca href=\"\u002Fnews\u002Fanthropic-spacex-deal-ai-coding-compute-zh\">nt\u003C\u002Fa>ic \u003Ca href=\"\u002Ftag\u002Frag\">RAG\u003C\u002Fa> \u003Ca href=\"\u002Fnews\u002Fclaude-code-production-workflow-guide-zh\">工作流\u003C\u002Fa>。\u003C\u002Fp>\u003Cp>這篇給想把傳統 RAG 升級成可決策系統的開發者。照著做完，你會得到一個可執行的 Agentic RAG 原型，具備查詢路由、工具呼叫、答案驗證與多來源檢索能力。\u003C\u002Fp>\u003Cp>本文會用到 \u003Ca href=\"https:\u002F\u002Flangchain.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">LangChain 官方文件\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain\" target=\"_blank\" rel=\"noopener noreferrer\">LangChain GitHub\u003C\u002Fa>，以及 \u003Ca href=\"https:\u002F\u002Flangchain-ai.github.io\u002Flanggraph\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">LangGraph 官方文件\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flanggraph\" target=\"_blank\" rel=\"noopener noreferrer\">LangGraph GitHub\u003C\u002Fa> 來完成流程編排。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>Node 20+，或 Python 3.11+\u003C\u002Fli>\u003Cli>OpenAI API key，或其他 LLM 供應商金鑰\u003C\u002Fli>\u003Cli>Chroma、FAISS，或其他向量資料庫帳號與本機環境\u003C\u002Fli>\u003Cli>至少一個資料來源：文件、API、或網頁搜尋\u003C\u002Fli>\u003Cli>Git 已安裝，可用來複製起始專案\u003C\u002Fli>\u003Cli>理解 embeddings、retrieval、prompt template 的基本概念\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Step 1: 建立專案骨架\u003C\u002Fh2>\u003Cp>這一步的目的，是先做出一個本機專案骨架，讓你可以載入模型、呼叫工具，並保留檢索到的上下文。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778120450823-zxhl.png\" alt=\"如何用 LangGraph 打造 Agentic RAG\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>建立新資料夾、安裝核心套件，並設定環境變數，讓模型金鑰與檢索後端都能被程式讀到。\u003C\u002Fp>\u003Cpre>\u003Ccode>mkdir agentic-rag-demo && cd agentic-rag-demo\nnpm init -y\nnpm install langchain @langchain\u002Fopenai @langchain\u002Fcommunity dotenv\n# 若你偏好 Python，也可以改用 Python 3.11+\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到專案資料夾、已安裝依賴，以及一個能成功讀取環境變數的測試結果，而不是驗證失敗。\u003C\u002Fp>\u003Ch2>Step 2: 建立文件索引\u003C\u002Fh2>\u003Cp>這一步的目的，是做出可搜尋的知識庫，讓 \u003Ca href=\"\u002Ftag\u002Fagent\">agent\u003C\u002Fa> 不必只靠提示詞猜答案。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778120449580-6c0m.png\" alt=\"如何用 LangGraph 打造 Agentic RAG\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>把文件載入後切成 chunks，產生 embeddings，再存進向量索引。若你使用 LlamaIndex，這裡就是把 PDF、網頁或檔案接到檢索層的地方。\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002F\u002F 具名產出：文件向量索引\nloadDocuments();\nsplitIntoChunks();\nembedChunks();\nstoreInVectorDB();\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到對某個已知片段的相似度搜尋結果，且回傳的 chunk 帶有對應來源標記。\u003C\u002Fp>\u003Ch2>Step 3: 加入查詢路由\u003C\u002Fh2>\u003Cp>這一步的目的，是讓 agent 在檢索前先決定問題該走哪條路。\u003C\u002Fp>\u003Cp>建立路由器，把查詢分類成文件查詢、網頁查詢、\u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> 查詢，或直接回答。這個設計能讓後續擴充成多 agent 流程時更容易維護。\u003C\u002Fp>\u003Cpre>\u003Ccode>if (needsRealtimeData(query)) routeTo(\"api-tool\");\nelse if (isInDocs(query)) routeTo(\"vector-search\");\nelse routeTo(\"web-search\");\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到三種不同問題被導向不同路徑，例如政策問題、產品問題、即時資訊問題各走不同分支。\u003C\u002Fp>\u003Ch2>Step 4: 編排工具與檢索流程\u003C\u002Fh2>\u003Cp>這一步的目的，是把查詢修正、來源選擇、檢索與追問串成一個多步驟工作流。\u003C\u002Fp>\u003Cp>你可以用 agent loop，或用 LangGraph state machine 來管理狀態。核心概念是：系統先規劃，再執行，再檢查結果，必要時重新嘗試。\u003C\u002Fp>\u003Cpre>\u003Ccode>state = {\n  query,\n  refinedQuery,\n  source,\n  context,\n  draftAnswer,\n  validationResult\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到一個複雜問題會觸發兩次以上的步驟，例如先查文件，再呼叫即時 API，而不是直接吐出第一段檢索片段。\u003C\u002Fp>\u003Ch2>Step 5: 驗證最終答案\u003C\u002Fh2>\u003Cp>這一步的目的，是在答案送出前先做品質檢查，避免弱證據或無根據的回覆。\u003C\u002Fp>\u003Cp>\u003Ca href=\"\u002Fnews\u002Fcutile-jl-v0-3-cuda-jl-support-faster-startup-zh\">加入\u003C\u002Fa>驗證層，比對草稿答案、原始查詢與檢索上下文。如果證據不足，系統就應該再取更多 context、重寫答案，或回傳安全的 fallback。\u003C\u002Fp>\u003Cpre>\u003Ccode>if (!isSupported(draftAnswer, context)) {\n  draftAnswer = refineAndRetry(query, context);\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到模糊問題會被要求補充資訊，而證據充足的問題則會輸出帶有依據的答案。\u003C\u002Fp>\u003Ch2>Step 6: 擴充多模態輸入\u003C\u002Fh2>\u003Cp>這一步的目的，是把文字、圖片與即時資料放進同一條 Agentic RAG 流程。\u003C\u002Fp>\u003Cp>加入 OCR、影像描述或即時資料抓取工具，再把不同輸入型態導向對應的 agent。這會讓 Agentic RAG 比傳統 RAG 更有彈性，因為它能依來源類型改變檢索策略。\u003C\u002Fp>\u003Cpre>\u003Ccode>\u002F\u002F 具名產出：多模態工具組\ntextRetriever();\nimageCaptionTool();\nrealtimeApiTool();\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收時，你應該看到文字查詢、圖片查詢與時間敏感查詢各自走出不同檢索路徑，最後產生符合上下文的答案。\u003C\u002Fp>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>把所有問題都送進向量庫。修法：先做來源分類，避免即時問題拿到過時文件。\u003C\u002Fli>\u003Cli>跳過驗證步驟。修法：把最終答案和檢索證據比對，不足就重試或回退。\u003C\u002Fli>\u003Cli>一開始就切太多 agent。修法：先做一個 router 和一個 retriever，流程穩定後再拆分角色。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>下一步可以深入 memory、平行子 agent 與評測集，進一步比較 routing 準確率、答案品質與延遲，建立可持續迭代的 Agentic RAG 系統。\u003C\u002Fp>","這篇教你用 LangGraph 建立一個會路由、檢索、驗證並回答問題的 Agentic RAG 工作流。","www.geeksforgeeks.org","https:\u002F\u002Fwww.geeksforgeeks.org\u002Fartificial-intelligence\u002Fwhat-is-agentic-rag\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778120450823-zxhl.png",[13,14,15,16,17,18],"LangGraph","LangChain","RAG","vector database","embeddings","agent workflow","zh",0,false,"2026-05-07T02:20:28.380469+00:00","2026-05-07T02:20:28.251+00:00","done","27ed9a61-dc36-4636-b2d1-c161468a0b3a","how-to-build-agentic-rag-with-langgraph-zh","ai-agent","f2612ba2-997c-4d94-b83b-f0a52f1adb32","published","2026-05-07T09:00:18.355+00:00",[32,33,34],"先用路由器把查詢分流，再進入檢索與工具呼叫。","用狀態機或 agent loop 串起 refine、retrieve、validate 的流程。","答案驗證是 Agentic RAG 的關鍵，能降低無根據回覆。",[36,38,40,42,43],{"name":15,"slug":37},"rag",{"name":13,"slug":39},"langgraph",{"name":14,"slug":41},"langchain",{"name":17,"slug":17},{"name":16,"slug":44},"vector-database",{"id":28,"slug":46,"title":47,"language":48},"how-to-build-agentic-rag-with-langgraph-en","How to Build Agentic RAG with LangGraph","en",[50,56,62,68,74,80],{"id":51,"slug":52,"title":53,"cover_image":54,"image_url":54,"created_at":55,"category":27},"38406a12-f833-4c69-ae22-99c31f03dd52","switch-ai-outputs-markdown-to-html-zh","怎麼把 AI 輸出改成 HTML","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778743243861-8901.png","2026-05-14T07:20:21.545364+00:00",{"id":57,"slug":58,"title":59,"cover_image":60,"image_url":60,"created_at":61,"category":27},"c7c69fe4-97e3-4edf-a9d6-a79d0c4495b4","anthropic-cat-wu-proactive-ai-assistants-zh","Cat Wu 談 Claude 的主動式 AI","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778735455993-gnw7.png","2026-05-14T05:10:30.453046+00:00",{"id":63,"slug":64,"title":65,"cover_image":66,"image_url":66,"created_at":67,"category":27},"e1d6acda-fa49-4514-aa75-709504be9f93","how-to-run-hermes-agent-on-discord-zh","如何在 Discord 執行 Hermes Agent","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778724655796-cjul.png","2026-05-14T02:10:34.362605+00:00",{"id":69,"slug":70,"title":71,"cover_image":72,"image_url":72,"created_at":73,"category":27},"4104fa5f-d95f-45c5-9032-99416cf0365c","why-ragflow-is-the-right-open-source-rag-engine-to-self-host-zh","為什麼 RAGFlow 是最適合自架的開源 RAG 引擎","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778674262278-1630.png","2026-05-13T12:10:23.762632+00:00",{"id":75,"slug":76,"title":77,"cover_image":78,"image_url":78,"created_at":79,"category":27},"7095f05c-34f5-469f-a044-2525d2010ce9","how-to-add-temporal-rag-in-production-zh","如何在正式環境加入 Temporal RAG","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667053844-osvs.png","2026-05-13T10:10:30.930982+00:00",{"id":81,"slug":82,"title":83,"cover_image":84,"image_url":84,"created_at":85,"category":27},"10479c95-53c6-4723-9aaa-2fde5fb19ee7","github-agentic-workflows-ai-github-actions-zh","GitHub 把 AI 代理放進 Actions","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778551884342-8io7.png","2026-05-12T02:11:02.069769+00:00",[87,92,97,102,107,112,117,122,127,132],{"id":88,"slug":89,"title":90,"created_at":91},"4ae1e197-1d3d-4233-8733-eafe9cb6438b","claude-now-uses-your-pc-to-finish-tasks-zh","Claude 開始幫你操作電腦","2026-03-26T07:20:48.457387+00:00",{"id":93,"slug":94,"title":95,"created_at":96},"5bede67f-e21c-413d-9ab8-54a3c3d26227","googles-2026-ai-agent-report-decoded-zh","Google 2026 AI Agent 報告解讀","2026-03-26T11:15:22.651956+00:00",{"id":98,"slug":99,"title":100,"created_at":101},"2987d097-563f-46c7-b76f-b558d8ef7c2b","kimi-k25-review-stronger-still-not-legend-zh","Kimi K2.5 評測：更強，但還不是神作","2026-03-27T07:15:55.277513+00:00",{"id":103,"slug":104,"title":105,"created_at":106},"95c9053b-e3f4-4cb5-aace-5c54f4c9e044","claude-code-controls-mac-desktop-zh","Claude Code 也能操控 Mac 了","2026-03-28T03:01:58.58121+00:00",{"id":108,"slug":109,"title":110,"created_at":111},"dc58e153-e3a8-4c06-9b96-1aa64eabbf5f","cloudflare-100x-faster-ai-agent-sandbox-zh","Cloudflare 的 AI 沙箱跑超快","2026-03-28T03:09:44.142236+00:00",{"id":113,"slug":114,"title":115,"created_at":116},"1c8afc56-253f-47a2-979f-1065ff072f2a","openai-backs-isara-agent-swarm-bet-zh","OpenAI 挺 Isara 的 agent swarm …","2026-03-28T03:15:27.513155+00:00",{"id":118,"slug":119,"title":120,"created_at":121},"7379b422-576e-45df-ad5a-d57a0d9dd467","openai-plan-automated-ai-researcher-zh","OpenAI 想做自動化 AI 研究員","2026-03-28T03:17:42.090548+00:00",{"id":123,"slug":124,"title":125,"created_at":126},"48c9889e-86df-450b-a356-e4a4b7c83c5b","harness-engineering-ai-agent-reliability-2026-zh","駕馭工程：從「馬具」到「作業系統」，AI Agent 可靠性的終極密碼","2026-03-31T06:42:53.556721+00:00",{"id":128,"slug":129,"title":130,"created_at":131},"e41546b8-ba9e-455f-9159-88d4614ad711","openai-codex-plugin-claude-code-zh","OpenAI 把 Codex 放進 Claude Code","2026-04-01T09:21:54.687617+00:00",{"id":133,"slug":134,"title":135,"created_at":136},"96d8e8c8-1edd-475d-9145-b1e7a1b02b65","mcp-explained-from-prompts-to-production-zh","MCP 怎麼把提示詞變工作流","2026-04-01T09:24:39.321274+00:00"]