第一個 AI Agent 工作流:RAG 客服機器人 30 分鐘搭好
手把手帶你用 N8N 搭第一個 RAG 客服機器人。從知識庫建立、Embeddings 設定、Vector Store 串接,到最終能回答問題的對話流程,30 分鐘完成。
第一個 AI Agent 工作流:RAG 客服機器人 30 分鐘搭好
很多人問我:「N8N 串 AI 最實用的第一個案子是什麼?」
我的答案一直是:RAG 客服機器人。
不是因為它最炫,而是因為它解決了一個幾乎所有人都有的問題——你有一堆知識(FAQ、產品說明、政策文件),但你不可能 24 小時守在旁邊回答問題。
這篇文章就是帶你一步一步搭出來。
我會假設你已經有一個可以用的 N8N 環境,以及一個 OpenAI 的 API Key。除此之外,你不需要任何技術背景。
什麼是 RAG?為什麼你需要它
RAG 的全名是 Retrieval-Augmented Generation,中文可以理解為「先查資料再生成回答」。
一般的 AI(不用 RAG):你問它問題,它根據訓練時學到的知識回答。問題是它的訓練數據截止到某個時間,它不知道你們公司的退換貨政策,它也可能會「幻覺」——自信地說出看起來合理但根本不對的答案。
RAG 架構的 AI:你問它問題,它先去你的知識庫找相關資料,然後根據找到的資料來回答。它只說知識庫裡有的東西,不會亂猜。
對客服場景來說,這個差別非常關鍵。你要的不是一個「看起來很聰明」的 AI,你要的是一個「說對話、不出錯」的 AI。RAG 讓這件事成為可能。
你需要準備什麼
在開始之前,把這些東西準備好:
一、N8N 環境(Cloud 或自架都可以)
二、OpenAI API Key(用來做 Embeddings 和生成回答)
三、Supabase 帳號(免費方案夠用,用來當 Vector Store 存向量資料)
四、一份你的 FAQ 文件(純文字就好,5-20 條問答最適合入門)
Supabase 是這裡最需要額外設定的部分,但不難。我們等一下會走過設定步驟。
整體架構說明
這個 RAG 客服機器人由兩條流程組成:
流程 A 是知識庫建立流程,只跑一次,或知識庫更新時跑。把你的 FAQ 文字切成小段,轉成向量,存進 Supabase。
流程 B 是客服對話流程,每次有人問問題就觸發。收到問題後把問題轉成向量,在 Supabase 找最相近的資料,把資料加上問題丟給 GPT,輸出回答。
這樣設計的好處是:知識庫和對話是分離的。你更新了 FAQ,只需要重跑流程 A,流程 B 自動就用到最新的資料。
第一步:設定 Supabase Vector Store
Supabase 是一個開源的 Firebase 替代品,有免費方案,支援 pgvector 擴充套件,可以直接當 Vector Store 用。
進到 Supabase 後台,點「SQL Editor」,執行以下 SQL 建立你需要的資料表和函式:
-- 啟用向量擴充套件
create extension if not exists vector;
-- 建立文件儲存表
create table documents (
id bigserial primary key,
content text,
metadata jsonb,
embedding vector(1536)
);
-- 建立向量相似度搜尋函式
create or replace function match_documents (
query_embedding vector(1536),
match_count int default 5,
filter jsonb default '{}'
) returns table (
id bigint,
content text,
metadata jsonb,
similarity float
)
language plpgsql
as $$
begin
return query
select
documents.id,
documents.content,
documents.metadata,
1 - (documents.embedding <=> query_embedding) as similarity
from documents
where metadata @> filter
order by documents.embedding <=> query_embedding
limit match_count;
end;
$$;
執行成功後,你就有了一個可以存向量資料並且做相似度搜尋的資料庫。
接下來在 Supabase 的「Settings > API」取得你的 Project URL 和 anon/service role API key。這兩個等一下 N8N 設定時會用到。
第二步:建立知識庫建立流程(流程 A)
回到 N8N,新建一條流程,我們叫它「建立知識庫」。
節點一:Manual Trigger
新增一個 Manual Trigger。這條流程我們手動跑就好,不需要排程。
節點二:Edit Fields 輸入 FAQ 資料
新增一個「Edit Fields(Set)」節點,在這裡直接把你的 FAQ 資料貼進來。
欄位設定:Field Name 填 text,Field Value 把你的 FAQ 文字貼進來,一次貼全部,不同問題用換行分開。
範例內容:
Q: 訂單多久會出貨?
A: 一般訂單在確認付款後 1-2 個工作天內出貨。
Q: 可以退換貨嗎?
A: 商品到貨 7 天內可申請退換貨,需保持商品完整未使用狀態。
Q: 運費怎麼算?
A: 消費滿 500 元免運費,未達門檻運費 60 元。
在實際使用中,你可以改成從 Google Docs 或 Notion 讀取,讓知識庫的更新更方便。
節點三:Text Splitter 切分文字
新增「Recursive Character Text Splitter」節點(在 Document Loaders 分類下找)。
設定 Chunk Size 為 500(每段最多 500 字元),Chunk Overlap 為 50(相鄰段落重疊 50 字元,防止語意被切斷)。
切分的目的:太長的文字轉成向量後,相似度搜尋的準確率會下降。切成小段,搜尋更精準。
節點四:Embeddings OpenAI 轉換成向量
新增「Embeddings OpenAI」節點。選你的 OpenAI API Key,Model 選 text-embedding-3-small(小模型就夠用,便宜)。
節點五:Supabase Vector Store 儲存向量
新增「Supabase Vector Store」節點,選「Insert Documents」模式。
設定 Credential(填入 Project URL 和 API Key),Table Name 填 documents,Query Name 填 match_documents(對應我們剛才建立的函式名稱)。
連結方式:把 Text Splitter 輸出接到 Embeddings OpenAI,再接到 Supabase Vector Store。
現在點「Test Workflow」,如果設定正確,你的 FAQ 資料就會被切分、轉成向量、存進 Supabase。
去 Supabase 的「Table Editor」點開 documents 表,你應該會看到幾筆資料,每筆都有 content(文字)和 embedding(一大串數字,就是向量)。
第三步:建立客服對話流程(流程 B)
新建第二條流程,叫它「客服對話」。
節點一:Webhook Trigger
新增「Webhook」節點,選「POST」方法。
這個 Webhook URL 是你的「問題輸入口」。任何人或任何系統把問題 POST 到這個 URL,就會觸發這條流程。
HTTP Method 選 POST,Response Mode 選 Last Node。
Webhook 啟用後,你會拿到一個 URL,後面的步驟測試時會用到。
節點二:AI Agent 節點
新增「AI Agent」節點。這是整個流程的核心。
System Message 設定:
你是一個友善的客服助手。根據提供給你的知識庫內容回答客戶問題。
如果知識庫裡沒有相關資訊,請誠實地說你不確定,並請客戶聯繫人工客服。
回答要簡潔清楚,不要超過 150 字。
節點三:連接 OpenAI Chat Model
在 AI Agent 節點下方,新增「OpenAI Chat Model」作為 Language Model。選你的 OpenAI API Key,Model 選 gpt-4o-mini(夠用,便宜)。
節點四:連接 Supabase Vector Store 作為知識工具
在 AI Agent 節點下方,再新增「Supabase Vector Store」節點,這次選「Retrieve Documents (As Tool for AI Agent)」模式。
這個設定讓 Supabase 成為 AI Agent 可以主動查詢的工具。
Table Name 填 documents,Query Name 填 match_documents。
Tool Description 填:「搜尋 FAQ 知識庫,找出與問題相關的答案。當你需要回答客戶問題時使用此工具。」
同樣需要連結 Embeddings OpenAI 節點到這個 Vector Store,讓搜尋時能把問題也轉成向量。
節點五:Respond to Webhook 回傳結果
新增「Respond to Webhook」節點,把 AI Agent 的輸出回傳給請求方。
Respond With 選 First Incoming Item,Response Body 填 {{ $json.output }}。
第四步:測試整個流程
流程 B 設定好之後,先不要 Activate,用手動方式測試。
打開終端機或 API 測試工具(Postman 也可以),發一個 POST 請求到你的 Webhook URL:
{
"chatInput": "我的訂單多久會出貨?"
}
如果一切正常,你應該在幾秒內收到一個回覆,內容會參考你知識庫裡的訂單出貨說明。
試試幾個不同的問題:
「可以退貨嗎?」應該回答退換貨政策。
「你們有 VIP 方案嗎?」應該說不確定,請聯繫人工客服(因為知識庫裡沒有這條資訊)。
第二個測試很重要。你要確認 AI 在知識庫沒有答案的時候,不會亂說話。
常見問題與除錯
「向量搜尋結果不準確」:通常是文字切分的問題。試著把 Chunk Size 調小到 300-400,或者在 FAQ 的寫法上讓每個問答更獨立,不要互相引用。
「AI 回答的內容不在知識庫裡」:System Message 加強限制,說明只根據工具回傳的資料回答問題,不要使用自己的知識。這樣可以大幅降低 AI 自行發揮的機率。
「Supabase 連接失敗」:確認 API Key 用的是 service_role 而不是 anon,因為 anon key 預設有 Row Level Security 的限制。
「Webhook 沒有回應」:確認流程是 Active 狀態(右上角切換),而且 Webhook 節點的 Execution Mode 在正式上線要切到 Active,不是只有 Listen for test event。
進階:讓知識庫更聰明
這個基本版的 RAG 系統搭好之後,有幾個方向可以讓它更好用:
加入對話記憶:在 AI Agent 節點裡加一個 Window Buffer Memory,讓它記住同一個對話的前幾輪問答,這樣客戶說「那第二個問題呢?」它才知道在說哪個問題。
知識庫自動更新:改成從 Notion 或 Google Docs 讀取 FAQ,每週自動重跑知識庫建立流程。這樣更新知識庫不需要動到 N8N 的節點設定。
加入多來源知識庫:除了 FAQ,把你的退換貨政策 PDF、產品說明書也加進向量資料庫。用 metadata 欄位標記每筆資料的來源,讓 AI 回答時可以說「根據退換貨政策…」。
加入人工升級機制:在 AI Agent 後面加一個 IF 節點,判斷問題裡有沒有「退款」「客訴」「投訴」等高風險關鍵字,符合條件就轉給 Slack 通知人工客服介入。
你的第一個 AI Agent 就在這裡
30 分鐘,你搭好了一個真正能用的 RAG 客服機器人。
它不是玩具,它是一個可以接到你網站、LINE、甚至任何 Webhook 的真實服務。它根據你自己的知識庫回答問題,說不知道的時候也會說不知道。
你的 FAQ 文件現在在哪裡?是 Notion 還是 Google Docs 還是純文字檔?留言告訴我,我可以說說怎麼直接從那邊讀取資料,省掉手動貼文字的步驟。
想看完整的 AI Agent 架構與設計原則,請閱讀主文「N8N x AI Agent 完全指南」。或前往 N8Nstart 模板庫 找現成的 RAG 客服機器人模板直接套用。
延伸閱讀
- N8N x AI Agent 完全指南:串 Claude / OpenAI 的架構選擇與實戰心法 — 完整 AI Agent 架構總覽
- N8N 第一個工作流:從零到自動化 — 沒有 N8N 基礎?從這裡入門
- N8N 電商自動化完全指南 — 把 RAG 客服機器人應用到電商場景
- N8N 官方文件 — AI 節點 — AI Agent 節點詳細說明