跳轉到

教學 01:建立 RAG Workflow

本教學分兩個階段建立問答 Workflow。第一階段建立基本 Workflow,由 LLM 直接根據訓練知識回答問題; 第二階段加入 Retriever action,讓 LLM 根據知識庫中的文件來回答,提高回答的準確性。

事前準備

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

您將建立的內容

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

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

在這個部分,您將建立一個最簡單的 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,也就是使用者執行 Workflow 時輸入的 question 欄位。 替換後的內容才會傳送給 LLM。

步驟 5:儲存並執行 Workflow

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

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

步驟 6:輸入問題測試

  1. 在執行頁面的「Question」欄位輸入測試問題。
  2. 點擊「開始」按鈕。

執行頁面——輸入問題

步驟 7:查看 LLM 回答

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

LLM 直接回答的輸出結果

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


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

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

步驟 1:新增 RetrieverAction

  1. 回到 Workflow 編輯頁面。
  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」有結果代表 Workflow 已正確連接到知識庫。

步驟 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 }} (使用者的問題),並要求 LLM 根據參考資料來回答。

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

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

步驟 7:儲存並執行 RAG Workflow

  1. 點擊「動作」→「更新」儲存。
  2. 點擊「動作」→「執行應用程式」。
  3. 輸入問題,點擊「開始」按鈕。
  4. 輸出區域會顯示兩個部分:
    • RetrieverAction Result — 從知識庫檢索到的文件
    • LLMAction Result — LLM 根據參考文件所做出的回答

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

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


總結

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

下一步