為什麼 ChatGPT 回答不了你公司的問題?
這個問題的答案很簡單:ChatGPT 不知道你公司的事。
它不知道你的退貨政策、合約範本、SOP 文件、產品規格、或是上週的會議結論。它只會用訓練資料裡的通用知識來回答,一旦問題涉及公司內部資訊,它就只能瞎猜或說不知道。
這就是為什麼很多企業導入了 AI 工具之後,發現 AI「很聰明但沒用」——因為沒有把公司知識餵給 AI。
RAG(Retrieval-Augmented Generation,檢索增強生成) 就是解決這個問題的技術架構。
「不是 AI 不夠聰明,而是你沒有把公司知識交給它。RAG 就是讓 AI 能查閱公司知識庫的橋樑。」
RAG 的運作原理(不需要工程背景也能懂)
用一個比喻來理解:
傳統的 AI 問答,像是讓一個從來沒來過你公司的顧問直接上台回答員工問題。他很聰明,但他什麼都不知道,只能給你通用建議。
RAG 的做法是:讓這個顧問先去看你公司的所有文件,再來回答問題。 他在回答前,會先從文件庫找到最相關的資料,結合自己的推理能力給出有根據的答案。
技術上的三個步驟:
步驟一:文件向量化(建立知識庫)
你把公司的文件(PDF、Word、Google Docs、Notion 頁面)上傳到系統中。
系統會把每份文件切成小段(每段大約 500-1000 字),然後用 Embedding 模型(例如 OpenAI text-embedding-3-small)把每一段文字轉換成一串數字——也就是「向量 (Vector)」。
這些向量代表了文字的「語意意義」,存入向量資料庫(Supabase、Pinecone、Weaviate 等)中。
步驟二:語意搜尋(找到相關資料)
當有人問問題時,系統先把問題也轉換成向量,然後在知識庫中找出「意思最接近」的文件段落。
這個搜尋方式的關鍵是語意相似性,不是關鍵字匹配。所以就算你問「請假要找誰簽?」,系統也能找到標題是「員工請假流程 SOP」的文件——因為兩者的語意很接近,即使沒有完全相同的關鍵字。
步驟三:生成回答(AI 回答問題)
系統把找到的相關文件段落 + 用戶的問題,一起送給 LLM(GPT-4o 或 Claude),告訴它:「根據以下資料,回答這個問題。如果資料裡沒有,請說不確定,不要捏造。」
AI 就能給出有根據、有出處的答案,而不是亂猜。
用 n8n 建立 RAG 知識庫 AI:實作步驟
架構總覽
我們要建立的系統分為兩條工作流:
工作流 A:知識庫建立流(一次性 + 定期更新)
[上傳文件] → [文字擷取] → [切割段落] → [Embedding 向量化] → [存入 Supabase]
工作流 B:問答流(即時觸發)
[用戶提問] → [問題向量化] → [語意搜尋知識庫] → [整理上下文] → [AI 生成回答] → [回覆用戶]
工作流 A:建立知識庫
節點 1:文件來源 Trigger
依照你的文件存放位置選擇觸發方式:
- Google Drive:使用 Google Drive Trigger,監測指定資料夾的新增/更新
- Notion:定時抓取指定 Database 的頁面
- 本地上傳:使用 Webhook 接收上傳的檔案
節點 2:文字擷取
- PDF 文件 → 使用 n8n 的 Extract from File 節點(支援 PDF → Text)
- Google Docs/Notion → 直接取得 Markdown 格式的文字
- Word 文件 → 需要透過 Code 節點呼叫
mammoth.js解析
節點 3:文件切割 (Chunking)
使用 n8n 的 Recursive Character Text Splitter 節點(屬於 LangChain 整合),設定:
- Chunk Size:800 字元
- Chunk Overlap:100 字元(讓相鄰段落有重疊,避免上下文斷裂)
節點 4:Embedding 向量化
新增 Embeddings OpenAI 節點,選擇 text-embedding-3-small 模型(便宜且效果好),把每個文字段落轉換成 1536 維的向量。
節點 5:存入 Supabase 向量資料庫
在 Supabase 建立一個 documents 資料表,結構如下:
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
content TEXT,
embedding VECTOR(1536),
metadata JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
使用 n8n 的 Supabase Vector Store 節點,把向量 + 原始文字 + 後設資料(文件名稱、來源 URL)存入資料表。
工作流 B:問答 AI
節點 1:問題接收 Trigger
依照你的使用場景選擇入口:
- LINE Bot → 透過 LINE Webhook 接收訊息
- 內部系統 → 透過 Webhook URL 接收 HTTP POST
- Slack Bot → 使用 Slack Event API
節點 2:問題向量化
把用戶的問題也使用相同的 Embedding 模型轉換成向量。
節點 3:語意搜尋
使用 Supabase Vector Store 節點,以問題向量搜尋知識庫,取得相似度最高的前 5 筆文件段落。
Supabase 的語意搜尋語法:
SELECT content, 1 - (embedding <=> query_embedding) AS similarity
FROM documents
ORDER BY similarity DESC
LIMIT 5;
節點 4:組合 Prompt
使用 Code 節點把搜尋結果組合成 Context 字串:
const context = $input.all()
.map(item => item.json.content)
.join('\n\n---\n\n');
return [{
json: {
context: context,
question: $('Webhook').item.json.question
}
}];
節點 5:AI 生成回答
連接 OpenAI 或 Claude 節點,System Prompt 設定如下:
你是公司的內部 AI 助理。請根據以下提供的公司文件資料,回答員工的問題。
規則:
- 只根據提供的資料回答,不要憑空捏造
- 如果資料中找不到相關資訊,請明確說「這個問題我在現有文件中找不到答案,建議詢問 [相關部門]」
- 如果找到相關資料,可以在回答後附上「資料來源:[文件名稱]」
公司文件資料:
{{context}}
User Message:{{question}}
節點 6:回覆輸出
把 AI 生成的答案回傳給用戶的介面(LINE 回覆、HTTP Response 等)。
知識庫 AI 的三個常見應用場景
場景一:HR 問答 Bot
把公司的員工手冊、請假規定、薪資福利說明、績效考核辦法上傳到知識庫。員工有任何人事問題,直接問 LINE Bot,不需要去煩 HR。
效益:HR 人員每月平均回答 200+ 個重複問題,導入後降至 20 個以下。
場景二:客服知識庫
把產品常見問題、退換貨政策、操作說明書、故障排除指南建成知識庫。客服人員查詢時不用翻舊信箱或靠記憶,AI 直接給出標準答案和出處。
效益:客服平均查詢時間從 2-3 分鐘 → 10 秒,回覆準確率提升。
場景三:新人教育訓練助理
把所有 SOP、流程圖、注意事項建成知識庫。新人入職後所有「這個要怎麼做?那個在哪裡找?」的問題,都可以問 AI 助理,減輕帶新人的時間成本。
維護知識庫的注意事項
定期更新機制:公司文件會持續更新。建議在知識庫建立流程中,加入「偵測文件更新 → 自動重新向量化」的機制,確保 AI 的資料庫保持最新。
區分資料層級:不是所有文件都適合讓所有人查詢。薪資資訊、個人考核結果等敏感資料,應該建立獨立的知識庫,並加入存取控制。
回答品質監控:定期抽查 AI 的回答,特別關注「AI 說找不到資料,但其實資料庫裡有」的情況——這通常代表 Chunk Size 設定不對,或者文件格式有問題需要重新整理。
智賦 AI 科技 專注於 B2B 企業自動化解決方案,協助企業建立 RAG 知識庫 AI 系統,從文件整理、知識庫建置到前端問答界面,提供完整的一站式服務。

