目錄
n8n RAG 教學:建立能根據文件回答的 AI 知識庫
AI 模型不知道你公司的規章、產品手冊或 FAQ。RAG 的做法是:先把文件存進「向量資料庫」,使用者提問時找出最相關的段落,交給模型根據這些內容回答。
在 n8n 中,RAG 通常分成兩個工作流程:
① 匯入文件:[取得文件] ─▶ [Vector Store:插入] ← [Embeddings] + [Document Loader + Text Splitter]
② 問答: [Chat Trigger] ─▶ [AI Agent] ← [Chat Model] + [Memory] + [Vector Store 工具 ← Embeddings]
原理說明可以參考 Ollama 文字嵌入與 RAG。
選擇向量資料庫
| 節點 | 特色 | 適合 |
|---|---|---|
| Simple Vector Store | 存在 n8n 記憶體中,不需安裝 | 學習、測試(重新啟動後資料會消失) |
| Qdrant Vector Store | 專門的向量資料庫,可用 Docker 自架 | 正式使用 |
| Postgres PGVector Store | PostgreSQL + pgvector 擴充 | 已經在用 PostgreSQL |
| Pinecone、Supabase 等 | 雲端服務 | 不想自己維護 |
以下先用 Simple Vector Store 示範,最後說明如何換成 Qdrant。
工作流程 ①:匯入文件
1. 觸發與取得文件
- 測試時可以用 Form Trigger 加上檔案上傳欄位,直接上傳 PDF。
- 正式使用可以用 Google Drive Trigger(資料夾有新檔案時)+ Google Drive 節點下載檔案。
2. 新增 Vector Store 節點
新增 Simple Vector Store,操作模式選擇 Insert Documents,Memory Key 填一個名稱,例如 company_docs(問答時要用同一個名稱)。
3. 接上 Embeddings
在 Embeddings 插槽選擇嵌入模型:
- Embeddings OpenAI
- Embeddings Ollama(本機免費,中文建議使用
bge-m3)
匯入和查詢必須使用同一個嵌入模型,否則向量無法比對。
4. 接上 Document Loader 與 Text Splitter
- Default Data Loader:Type of Data 選擇 Binary(檔案)或 JSON(文字資料)。
- 在 Data Loader 下接上 Recursive Character Text Splitter:
- Chunk Size:每段的字元數,中文文件可以先試 500~800
- Chunk Overlap:相鄰段落重疊的字元數,例如 100
執行一次,文件就會被切塊、轉成向量並存入。
工作流程 ②:問答
- When chat message received → AI Agent。
- AI Agent 接上 Chat Model 與 Memory(同 AI Agent 入門)。
- Tool 插槽加入 Simple Vector Store,操作模式選擇 Retrieve Documents (As Tool for AI Agent):
- Memory Key:
company_docs - Description:
查詢公司內部規章與產品文件。回答任何關於公司政策、產品規格的問題前都要使用。 - Limit:每次取回幾段,例如 4
- Memory Key:
- 這個 Vector Store 也要接上同一個 Embeddings 模型。
- AI Agent 的系統提示詞:
你是公司的內部知識庫助理,請使用繁體中文回答。
回答前務必先使用知識庫工具查詢。
只根據查到的內容回答;如果找不到相關資料,請直接說「知識庫中沒有相關資料」,不要自行推測。
按 Open chat 測試,詢問文件中的內容。
Simple Vector Store 的資料存在記憶體中,兩個工作流程必須在同一個 n8n 中執行,而且 n8n 重新啟動後需要重新匯入。
換成 Qdrant(正式使用)
在 Docker Compose 中加入 Qdrant:
qdrant:
image: qdrant/qdrant
volumes:
- qdrant_data:/qdrant/storage
restart: unless-stopped
(記得在 volumes: 區塊加上 qdrant_data:。)
把兩個工作流程中的 Simple Vector Store 都換成 Qdrant Vector Store,憑證的 URL 填 http://qdrant:6333,並指定相同的 Collection 名稱。資料會永久保存。
提升回答品質
- 文件品質最重要:掃描版 PDF 需要先轉成文字;表格、圖片中的資訊可能無法被正確讀取。
- 調整切塊大小:回答缺少上下文時加大 Chunk Size;回答混入無關內容時縮小。
- 加入中繼資料:在 Data Loader 中加上文件名稱、類別等 metadata,回答時可以註明出處,也可以依類別篩選。
- 更新文件:同一份文件更新時,要先刪除舊的向量再匯入,否則新舊內容會同時被檢索到。
- 選擇好的嵌入模型:中文內容建議使用多語言嵌入模型。
不只是文件
同樣的方式也可以用在:
- 客服歷史問答 → 自動回覆常見問題
- 產品型錄 → 產品推薦助理
- 會議記錄 → 「上次會議決定了什麼?」
更新於 2026年10月12日