跳轉到
版本 v1.0.13

教學 04:建立 RAG Workflow

前面的教學都是用 Agent 來實現知識庫問答——Agent 自行決定何時查詢工具。本教學換個角度,改用工作流程以固定的步驟達成類似目標,並在最後比較兩種做法的取捨。

本教學分兩個階段建立問答工作流程。第一階段建立基本工作流程,由 LLM 直接根據訓練知識回答問題;第二階段加入檢索器任務,讓 LLM 根據知識庫中的文件來回答,提高回答的準確性。

事前準備

開始本教學前,請先完成前置準備:建立知識庫。您需要在該教學中建立的 labor_qa 知識庫與 default-embedding-retriever

您將建立的內容

flowchart LR
    Start([Start]) --> RetrieverAction[RetrieverAction<br/>Retriever]
    RetrieverAction --> LLMAction[LLMAction<br/>LLM]
    LLMAction --> End([End])

第一部分:建立基礎問答 Workflow

在這個部分,您將建立一個最簡單的工作流程:輸入問題,由 LLM 直接回答。這是加入檢索功能前的基礎版本。

步驟 1:建立空白 Workflow

  1. 從側邊欄進入「工作流程」。
  2. 點擊「+」按鈕,選擇「從空白開始」。
  3. 填寫表單:
    • 工作流程名稱:輸入名稱(例如 tutorial_labor_qa_workflow
    • 附註:選填
  4. 點擊「儲存」按鈕。

建立工作流程表單

步驟 2:新增問題輸入欄位

  1. 點擊畫布上的「開始」節點,開啟設定面板。
  2. 在「輸入結構」區塊,點擊「+」開啟新增屬性對話框。
  3. 填寫對話框:
    • 類型字串
    • 名稱question
    • 必填:開啟
  4. 點擊「儲存」按鈕。

開始節點——新增屬性對話框

步驟 3:開啟 LLMAction 訊息設定

畫布上預設包含一個「LLMAction」節點。您需要設定它的提示詞,讓它接收使用者的問題。

  1. 點擊「LLMAction」節點,開啟設定面板。
  2. 在「對話」區塊,點擊「使用者」列的編輯()圖示。
  3. 在「編輯對話」對話框中,點擊「default-prompt」列的編輯()圖示。

LLMAction——編輯對話對話框

步驟 4:設定提示詞樣板

在「編輯內容」對話框中:

  1. 將「提示詞來源」設定為 自訂提示詞樣板
  2. 在「樣板」欄位輸入:{{ question }}
  3. 在「樣板變數」中,確認 question.$ 對應到 $.question
  4. 點擊「儲存」按鈕關閉各對話框。

編輯內容對話框——樣板與變數

樣板變數的運作方式

樣板中的 {{ question }} 是一個佔位符。「樣板變數」表格告訴系統要代入什麼值: question.$ 對應 $.question,也就是使用者執行工作流程時輸入的 question 欄位。替換後的內容才會傳送給 LLM。

步驟 5:儲存並執行 Workflow

  1. 點擊右上角的「動作」下拉選單。
  2. 選擇「更新」以儲存工作流程。
  3. 選擇「執行應用程式」開啟執行頁面。

動作選單——更新與執行應用程式

步驟 6:輸入問題測試

  1. 在執行頁面的「Question」欄位輸入測試問題,可直接複製以下範例問題:

    醫院跟小志說醫師不適用勞基法,所以工作時間跟報酬可以自由約定這樣的嗎?
    
  2. 點擊「開始」按鈕。

執行頁面——輸入問題

步驟 7:查看 LLM 回答

工作流程執行完成後,輸出區域會在「LLMAction Result → Message」下顯示 LLM 的回答。

LLM 直接回答的輸出結果

這個回答完全來自 LLM 的訓練知識。若問題需要依據特定文件或企業內部資料才能正確回答,LLM 可能給出不完整甚至錯誤的答案。第二部分將透過加入檢索功能來解決這個問題。


第二部分:加入檢索(RAG)

您將在「開始」與「LLMAction」節點之間插入 RetrieverAction 節點。它會從知識庫中取得相關文件,並將這些文件作為參考資料傳給 LLM。

步驟 1:新增 RetrieverAction

  1. 回到工作流程編輯頁面。
  2. 在左側的「新增狀態」面板中,展開「檢索與排序」。
  3. 將「檢索器」拖曳至畫布上,放置在「開始」與「LLMAction」節點之間。畫布應顯示:開始 → RetrieverAction → LLMAction。

將檢索器拖曳至畫布

步驟 2:設定 RetrieverAction

  1. 點擊「RetrieverAction」節點開啟設定面板。
  2. 填寫設定:
    • 檢索器default-embedding-retriever
    • 知識庫labor_qa
    • 查詢來源自訂查詢樣板
    • 樣板{{ question_for_retriever }}
    • 樣板變數question_for_retriever.$$.question

RetrieverAction 設定

檢索器與知識庫必須一致

這裡選擇的檢索器(default-embedding-retriever)與知識庫(labor_qa),必須與前置教學中建立載入器時指定的組合相同。若不一致,檢索將會失敗。

步驟 3:測試 RetrieverAction

在完成完整的 RAG 串接前,先確認 RetrieverAction 可以正確連線到知識庫。

  1. 點擊「RetrieverAction」面板標題列的「測試任務」 按鈕。
  2. 在「測試輸入」中輸入問題(可直接複製下方範例),點擊「開始」按鈕。

    醫院跟小志說醫師不適用勞基法,所以工作時間跟報酬可以自由約定這樣的嗎?
    
  3. 執行完成後,確認「狀態」顯示「成功」,且「Docs」區塊包含非空結果。

測試任務對話框——Docs 結果

「Docs」有結果代表工作流程已正確連接到知識庫。

步驟 4:了解資料流

畫布上現在有兩個任務,具備建立 RAG 所需的全部元件。

Workflow 畫布——開始、RetrieverAction、LLMAction

點擊「RetrieverAction」節點,切換到「輸入與輸出」頁籤,可以看到檢索器將結果存放在 $.RetrieverActionResult,檢索出的文件位於 $.RetrieverActionResult.docs

後續任務可以引用這些變數:

變數 內容
$.question 使用者輸入的原始問題
$.RetrieverActionResult.docs 從知識庫檢索到的文件

RetrieverAction——輸入與輸出頁籤

步驟 5:將檢索結果傳入 LLM

  1. 點擊「LLMAction」節點開啟設定面板。
  2. 在「對話」中,點擊「使用者」列的編輯()圖示,再開啟「default-prompt」。
  3. 在「樣板變數」中,點擊「+」新增一個變數:
    • 名稱reference.$
    • $.RetrieverActionResult.docs
  4. 點擊「儲存」按鈕。

LLMAction——新增 reference 變數

步驟 6:更新提示詞樣板

在「樣板」欄位改寫對 LLM 的指示,加入 {{ reference }}(檢索到的文件)與 {{ question_for_llm }}(使用者的問題),並要求 LLM 根據參考資料來回答。可直接複製以下樣板貼上:

你是一名為市政府勞工服務的窗口人員,負責回答民眾的問題。
你做出的回答,必須完全基於參考資料。
如果參考資料不足以回答該問題,請回答「資料不足,無法回答。」

問題:{{ question_for_llm }}
參考資料:{{ reference }}

點擊「儲存」按鈕關閉對話框。

LLMAction——含參考資料的更新樣板

步驟 7:儲存並執行 RAG Workflow

  1. 點擊「動作」→「更新」儲存。
  2. 點擊「動作」→「執行應用程式」。
  3. 輸入問題(可直接複製下方範例),點擊「開始」按鈕。

    醫院跟小志說醫師不適用勞基法,所以工作時間跟報酬可以自由約定這樣的嗎?
    
  4. 輸出區域會顯示兩個部分:

    • RetrieverAction Result — 從知識庫檢索到的文件
    • LLMAction Result — LLM 根據參考文件所做出的回答

RAG Workflow 輸出——檢索結果與根據參考資料的回答

現在的回答直接來自您的索引文件,而非 LLM 的一般訓練知識。


總結

階段 工作流程 回答來源
第一部分 Start → LLMAction LLM 訓練知識
第二部分 Start → RetrieverAction → LLMAction 知識庫文件

RAG Workflow 與 QA Agent 的差異

同樣是知識庫問答,這個工作流程與教學 01 的 QA Agent 在運作方式上有明顯不同:

RAG Workflow(本教學) QA Agent(教學 01
執行模式 固定圖:開始 → 檢索器 → LLM → 結束 循環:Agent 自行決定何時呼叫工具
對話方式 單輪(一次輸入,一次輸出) 多輪(保留完整對話記錄)
工具使用 檢索器固定執行 Agent 自行決定是否及何時檢索
適合情境 可預期、可重複的固定流程 開放式問答與追問對話

帶著走:學會這個之後可以做什麼

工作流程適合每一步都要可預期、可重複的場景——例如批次處理、固定格式的報告生成、需要稽核每個步驟的流程。當你需要的是「每次都走相同步驟、輸出穩定一致」時,選工作流程;當你需要的是「能靈活追問、自行判斷的對話」時,選 Agent。掌握這個取捨,就能依情境為每個任務挑選正確的工具。

下一步

恭喜,你已完成整個 Workshop 系列!你現在具備從知識庫、Agent、MCP 工具到工作流程的完整實作經驗。