n8n 資料庫 AI Agent|用對話查詢資料庫
更新於 2026年2月11日
📥 工作流 JSON 下載:GitHub 範例庫 | 💬 社群討論:Skool 雲端方程式 Cloud F1
專業導讀
你有沒有遇過這種情況?業務團隊想查銷售資料、行銷團隊想看用戶數據,每次都要找工程師寫 SQL 查詢,等個半天才拿到報表。今天要跟大家分享一個超實用的應用:用 n8n 打造資料庫 AI Agent,讓非技術人員也能用對話方式直接查詢資料庫。
你將學到
- ✅ 如何用 n8n AI Agent 連接 PostgreSQL 資料庫
- ✅ 自然語言轉 SQL 的實作技巧與安全防護
- ✅ 唯讀帳號設計與資料庫權限控管
- ✅ 對話記憶管理與多輪查詢最佳實踐
- ✅ 完整可用的 n8n workflow 拆解
🎯 什麼是資料庫 AI Agent?
資料庫 AI Agent 是一個能理解自然語言問題、自動產生 SQL 查詢、執行並回傳結果的 AI 助理。 它讓不懂 SQL 語法的人也能透過對話方式直接查詢資料庫,大幅降低資料取得門檻。
傳統的資料查詢流程是這樣的:業務人員提需求 → 寫需求文件 → 工程師排程 → 寫 SQL → 執行查詢 → 匯出報表 → 交付。整個流程可能要等幾小時到幾天。但用資料庫 AI Agent,流程變成:直接問「這個月銷售額多少?」→ AI 自動查詢 → 立刻得到答案。效率差異非常明顯。
我在實際使用中發現,這個技術最大的價值不只是「省時間」,而是讓資料查詢變成一種對話式探索。你可以先問「有哪些資料表」,再問「users 表有什麼欄位」,接著問「統計過去 30 天註冊的用戶數」。這種連續性的探索,才是真正釋放資料價值的關鍵。
💡 Alex 的觀察
我在協助企業導入資料庫 AI Agent 的過程中,發現一個很有趣的現象:大部分團隊一開始都很擔心「AI 會不會搞砸資料庫」,但真正實作後才發現,技術上的安全防護其實都很好解決,反而是組織文化的適應比較難。
從技術面來說,資料庫 AI Agent 的安全設計其實很簡單:用唯讀帳號 (readonly user)、限制可查詢的資料表範圍、加上 SQL 驗證機制,就能確保 AI 不會執行危險操作。但我觀察到的真正挑戰是:團隊需要重新定義「誰可以查什麼資料」。
過去資料查詢權限是由工程師當守門員,每次查詢都要經過審核。現在 AI Agent 讓查詢變得即時,企業就必須思考:業務團隊能看客戶資料嗎?行銷團隊能查收入數字嗎?這些權限設計,反而比技術實作更需要時間討論。
另外我也發現,AI 對資料結構的理解程度,直接決定查詢的準確度。如果你的資料表命名很混亂(比如 tbl_user_v2_final_copy),或是欄位沒有清楚的註解,AI 就很容易產生錯誤的 SQL。所以這個應用也間接推動了「資料庫文件化」的改善,算是意外的好處。
這個方案的限制也要誠實說:對於需要複雜 JOIN 或是跨多表聚合的查詢,AI 的成功率會明顯下降。我建議這類需求還是由工程師設計 View 或是預設查詢範本,讓 AI 只負責簡單的篩選和統計。
🔧 如何用 n8n 打造資料庫 AI Agent
接下來我會手把手帶大家建立一個完整可用的資料庫 AI Agent。我們會用 PostgreSQL 作為範例,但同樣的概念也適用於 MySQL、MongoDB 等其他資料庫。
Step 1: 建立測試資料庫與唯讀帳號
第一步是準備測試用的資料庫。我們會建立三個資料表:users(用戶)、products(產品)、orders(訂單),模擬真實的電商場景。
-- 建立 users 資料表
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
created_at TIMESTAMP DEFAULT NOW()
);
-- 建立 products 資料表
CREATE TABLE IF NOT EXISTS products (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2),
stock INT
);
-- 建立 orders 資料表
CREATE TABLE IF NOT EXISTS orders (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id),
product_id INT REFERENCES products(id),
quantity INT,
order_date TIMESTAMP DEFAULT NOW()
);
-- 插入測試資料
INSERT INTO users (name, email) VALUES
('Alice Chen', 'alice@example.com'),
('Bob Lin', 'bob@example.com'),
('Carol Wang', 'carol@example.com');
INSERT INTO products (name, price, stock) VALUES
('Laptop', 32000.00, 10),
('Mouse', 450.00, 50),
('Keyboard', 900.00, 30);
INSERT INTO orders (user_id, product_id, quantity) VALUES
(1, 1, 1), (1, 2, 2), (2, 3, 1), (3, 2, 1);
重點來了:我們要建立一個唯讀帳號 (readonly user)。這是安全設計的核心,確保 AI Agent 只能查詢資料,不能修改或刪除。
-- 建立唯讀使用者
CREATE USER readonly_user WITH PASSWORD 'your_secure_password';
-- 移除 public schema 的預設權限
REVOKE ALL ON SCHEMA public FROM PUBLIC;
-- 授予 readonly_user 使用 schema 權限
GRANT USAGE ON SCHEMA public TO readonly_user;
-- 授予資料表查詢權限(只有 SELECT)
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
-- 確保未來新建資料表也能自動授予 SELECT 權限
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;
這樣設定後,即使 AI 產生了 DELETE 或 UPDATE 語句,執行時也會被資料庫拒絕。
Step 2: 在 n8n 建立 PostgreSQL Credential
打開 n8n,到 Credentials 頁面新增 PostgreSQL 連線:
- Host: 你的資料庫位址(例如
ep-old-bird-xxx.us-east-1.aws.neon.tech) - Port: 通常是
5432 - Database: 資料庫名稱(例如
neondb) - User:
readonly_user - Password: 剛才設定的密碼
- SSL: 如果用雲端資料庫(如 Neon、Supabase),記得啟用 SSL
測試連線成功後,儲存這個 Credential。
Step 3: 建立 n8n Workflow
我們的 workflow 包含五個核心節點:
When chat message received → AI Agent → [OpenAI Chat Model + Simple Memory + Postgres Tool]
節點 1: When chat message received
這是觸發節點,用來接收使用者的對話訊息。如果你想整合到 LINE、Telegram、Slack,可以換成對應的 Webhook 觸發。
節點 2: AI Agent
這是整個流程的大腦。在 AI Agent 節點中:
- System Message (Prompt):這是最關鍵的設定。我的建議 Prompt 架構:
你是一個資料庫查詢助手。你可以幫使用者查詢 PostgreSQL 資料庫。
## 資料庫結構
- users 表:用戶資料(id, name, email, created_at)
- products 表:產品資料(id, name, price, stock)
- orders 表:訂單資料(id, user_id, product_id, quantity, order_date)
## 查詢規則
1. 只能執行 SELECT 查詢,不可 DELETE、UPDATE、DROP
2. 使用繁體中文回覆使用者
3. 查詢結果用表格格式呈現
4. 如果問題不清楚,主動詢問更多細節
## 範例
使用者:「有哪些用戶?」
回覆:執行 SELECT * FROM users,並以表格呈現結果。
這個 Prompt 很重要,它讓 AI 知道資料庫的結構、可以做什麼、不能做什麼。你可以根據實際資料表調整。
- Chat Model: 選擇 OpenAI Chat Model(下一個節點)
- Memory: 選擇 Simple Memory(讓 AI 記住對話歷史)
- Tools: 選擇 Postgres executeQuery Tool
節點 3: OpenAI Chat Model
選擇 gpt-4o-mini 或 gpt-4o。如果查詢邏輯複雜,建議用 gpt-4o,準確度更高。
節點 4: Simple Memory
這個節點讓 AI Agent 記住對話內容。設定 Context Window 為 5-10 則訊息,平衡記憶長度與成本。
節點 5: Postgres (executeQuery)
這是 AI Agent 的「手」,用來執行 SQL 查詢。設定:
- Credential: 選擇剛才建立的 PostgreSQL readonly 連線
- Operation: Execute Query
AI Agent 會自動呼叫這個 Tool,把產生的 SQL 傳給它執行,然後把結果回傳給使用者。
Step 4: 測試查詢
啟動 workflow,試著問幾個問題:
- 「請確認 db 有哪些表」 → AI 會執行
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' - 「users 表有哪些資料?」 → AI 會執行
SELECT * FROM users - 「這個月有多少訂單?」 → AI 會執行帶有
WHERE條件的查詢 - 「哪個產品賣最好?」 → AI 會寫 JOIN 查詢統計訂單數量
如果 AI 產生的 SQL 有問題,你可以調整 System Message,給更多範例或約束條件。
📊 比較分析:不同資料庫 AI Agent 方案
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| n8n AI Agent + PostgreSQL | 完全自架、成本可控、支援複雜 workflow | 需要自行維護、AI 調教需要時間 | 企業內部資料查詢、客製化需求高 |
| Langchain SQL Agent | 開源、社群支援多、支援多種資料庫 | 需要寫程式、部署較複雜 | 開發者、需要整合到產品中 |
| ChatGPT Plugins (Code Interpreter) | 使用簡單、GPT-4 理解力強 | 資料需上傳、隱私風險高、不適合敏感資料 | 個人分析、公開資料集 |
| Notion AI (Database Query) | 與 Notion 深度整合、無需設定 | 只能查 Notion 資料庫、功能受限 | Notion 重度使用者 |
我自己最推薦 n8n AI Agent 方案,因為它在「易用性」和「客製化」之間取得很好的平衡。你不需要寫程式,但又能完全控制資料和邏輯。
✅ 重點整理
- 安全第一:一定要用唯讀帳號 (readonly user),限制 AI 只能執行 SELECT 查詢,避免誤刪資料。
- Prompt 設計是關鍵:清楚描述資料庫結構、查詢規則、回覆格式,AI 的準確度會大幅提升。
- 分階段測試:先測試簡單查詢(如 SELECT *),再測試複雜查詢(如 JOIN、聚合),逐步調整 Prompt。
- 記憶管理很重要:設定適當的 Context Window,讓 AI 記住對話歷史,支援多輪查詢。
- 資料庫文件化:表名和欄位名要清楚有意義,最好加上註解,AI 才能正確理解。
- 適用簡單查詢:複雜的多表 JOIN 或聚合查詢,建議由工程師預先設計 View,讓 AI 查詢 View 即可。
❓ 常見問題 FAQ
Q1: AI 生成的 SQL 安全嗎?會不會刪除資料?
A: 只要正確設定唯讀帳號,就不會有資料被刪除的風險。我建議的安全防護機制:
- 資料庫層級:使用唯讀帳號 (readonly user),只授予 SELECT 權限
- 應用層級:在 AI Agent Prompt 中明確禁止 DELETE、UPDATE、DROP 操作
- 監控層級:記錄所有 AI 產生的 SQL 查詢,定期審查是否有異常
- 測試環境先行:在測試資料庫充分測試後,再連接正式資料庫
實務上我還會加一層「SQL 白名單驗證」:只允許 AI 執行以 SELECT 開頭的語句,其他一律拒絕。
Q2: 支援哪些資料庫?除了 PostgreSQL 還能用什麼?
A: n8n 的 AI Agent 支援多種資料庫,我實測過的包括:
- PostgreSQL (推薦,語法標準、功能強大)
- MySQL / MariaDB (最普及,適合中小型應用)
- MongoDB (NoSQL,適合非結構化資料)
- SQLite (輕量級,適合單機應用)
- Microsoft SQL Server (企業級,適合 Windows 環境)
選擇建議:如果是新專案,我會優先選 PostgreSQL,因為它的 JSON 支援、全文搜尋、視窗函數都很強,而且雲端服務(Neon、Supabase)也很成熟。
Q3: 如何提高 AI 查詢的準確度?
A: 我總結的四個關鍵技巧:
- 資料結構描述要詳細:不只列表名和欄位名,還要說明每個欄位的業務意義。例如不要只寫
created_at,要寫「用戶註冊時間 (created_at)」。 - 提供查詢範例:在 Prompt 中給 2-3 個真實查詢範例,讓 AI 學習你期望的 SQL 風格。
- 處理模糊問題:教 AI 主動詢問細節。例如使用者問「統計銷售額」,AI 應該反問「要統計哪個時間範圍?」
- 錯誤處理機制:當 SQL 執行失敗時,讓 AI 看到錯誤訊息,它會自動修正 SQL 再試一次。
我還會定期查看「執行失敗的查詢日誌」,找出常見錯誤模式,然後更新 Prompt 避免重複發生。
Q4: 對話記憶會不會累積太多,造成成本過高?
A: 這是個好問題。我的記憶管理策略:
- Context Window 設定為 10 則訊息:對於資料查詢來說,10 輪對話已經足夠覆蓋一次完整探索
- 自動摘要機制:當對話超過 10 輪,讓 AI 產生摘要,保留關鍵資訊,清除細節
- Session 管理:設定 30 分鐘閒置自動清除記憶,避免長期累積
- 成本監控:用 n8n 的 Execution Webhook 記錄每次查詢的 Token 數量,設定預算上限
實測下來,一次完整的資料探索(10-15 輪對話)大約消耗 3000-5000 tokens,成本約台幣 1-2 元,非常划算。
Q5: 可以讓多人同時使用同一個 AI Agent 嗎?
A: 可以,但需要做好 Session 隔離。我的設計方案:
- User ID 區分:在 When chat message received 節點取得使用者 ID,傳給 AI Agent
- Memory 隔離:用
{{ $json.userId }}作為 Memory 的 Session Key,確保每個使用者的對話記憶獨立 - 權限控管:在資料庫層級設定 Row Level Security (RLS),讓不同使用者只能查詢自己權限範圍內的資料
這樣設計後,即使 10 個人同時使用,對話也不會互相干擾。
Q6: AI Agent 能處理複雜的商業分析查詢嗎?
A: 坦白說,對於需要多表 JOIN、複雜聚合、視窗函數的查詢,AI 的成功率會明顯下降。我的建議策略:
- 簡單查詢交給 AI:單表查詢、簡單篩選、基礎統計(COUNT、SUM、AVG)
- 複雜查詢預設 View:由工程師設計好 View(如
sales_summary_by_month),AI 只需要查詢 View - 分步引導:把複雜問題拆解成多個簡單查詢。例如「分析客戶購買行為」→ 先查「客戶清單」→ 再查「每個客戶的訂單數」→ 最後統計
我實測的經驗是:GPT-4o 能處理 2-3 表 JOIN 的查詢,但超過 3 表或涉及子查詢,準確度會降到 60% 以下。這時候還是交給人類比較穩。
🎯 下一步行動
🎓 想更有系統地學會這些技巧? 到 AI 職場工作術(雲端方程式 Cloud F1 旗艦課程) 看看完整的實作路徑。
如果你也想打造自己的資料庫 AI Agent,我建議你這樣開始:
- 先用測試資料庫練習:不要直接連正式資料庫,用本地 SQLite 或雲端測試環境(Neon 免費版)建立測試表,熟悉流程。
- 從簡單查詢開始:先測試「列出所有資料」、「統計數量」等基礎查詢,確認 AI 能正確產生 SQL。
- 逐步調整 Prompt:根據實際查詢結果,優化 System Message,加入更多約束和範例。
- 設定安全防護:確認唯讀帳號、權限控管、SQL 驗證都設定正確,再連接正式資料庫。
想深入學習更多 n8n AI Agent 實戰技巧?
- 💬 加入 雲端方程式 Cloud F1 學習社群:Skool 雲端方程式 Cloud F1(免費加入,和 500+ 學員一起學習,討論實作問題)
- 📺 觀看完整教學影片:YouTube 頻道有超過 50 支 n8n 實戰教學,手把手帶你建立自動化工作流
- 📧 訂閱電子報:每週獲取最新 AI 自動化技巧與產業趨勢分析
大家記得,第一次實作沒做好是正常的,AI Agent 的調教本來就需要時間。先求大概能用,再逐步優化,這樣學習效率最高!
🔗 相關資源
延伸閱讀
- n8n AI Agent 完整指南 - AI Agent 核心概念與設計原則
- n8n 零基礎完整教學 - 從安裝到部署的完整指南
- n8n RAG 知識庫實作 - 打造企業級 AI 知識庫
外部資源
- n8n 官方文檔 - AI Agent - 官方技術文件
- PostgreSQL 權限管理 - 資料庫安全設定
- GitHub 範本資源 - 下載 n8n workflow JSON
本文改編自 n8n 課程模組,由 Alex Hsieh 撰寫。如果你在實作過程中遇到問題,歡迎到 Skool 社群討論,我會盡力協助!