n8n 教學 (八):整合 n8n 與 Qdrant,打造在地化 RAG 工作流

發布日期:2025年8月

前言:無縫接軌,從雲端到地端

我們已經分別學會了如何使用 Supabase (雲端) 和 Qdrant (地端) 作為向量資料庫。本章的目標是將先前為 Supabase 建立的資料上傳工作流,改造成適用於 Qdrant 的版本。透過這個過程,您將學會如何靈活地切換不同的向量資料庫節點,並了解它們在 n8n 中的具體設定差異,包括刪除節點寫入節點,最終實現一個完全在地化的資料處理流程。

步驟一:複製並重塑工作流

為了保留原始版本,我們從複製現有的 Supabase 工作流開始。

  1. 在 n8n 中,找到先前建立的 n8nDocIntoVectorDB 工作流。
  2. 點擊右上角的 "..." 選單,選擇 "Duplicate"。
  3. 將新工作流命名為 Local_Qdrant_Embeddings,然後點擊 "Duplicate"。
  4. 在新開啟的分頁中,選取並刪除 "Supabase" 和 "Supabase Vector Store" 兩個節點。
複製工作流
圖 1: 複製現有的 Supabase 工作流。
刪除 Supabase 節點
圖 2: 刪除與 Supabase 相關的節點。

步驟二:設定 Qdrant 刪除節點

與 Supabase 流程類似,我們首先加入一個節點,以便在每次上傳新檔案時刪除舊的同名資料。

  1. 在 "Extract from File" 節點後新增 "Qdrant" 節點。如果尚未安裝,請先點擊 "Install" 安裝社群節點。
  2. 選擇操作 "Delete Points"。
  3. 設定 Credential:
    • 點擊 "Create New"。
    • API Key 留空,REST URL 輸入 http://127.0.0.1:6333
    • 儲存後,正常會看到綠色成功提示。
  4. 設定刪除條件:
    • "Collection Name" 輸入我們之前建立的 nhi_text-embedding-004_768
    • 點擊 "Add Option" -> "Filter"。
    • 啟用 "Expression" 並貼上以下 JSON 內容,用於比對檔案名稱:
{
    "must": [
        {
            "key": "metadata.file_name",
            "match": {
                "value": "{{ $('On form submission').item.json.data.filename }}"
            }
        }
    ]
}
設定 Qdrant 刪除節點
圖 3: 設定刪除節點的 Collection Name 與 Filter。

步驟三:設定 Qdrant 寫入節點

現在,我們加入真正執行寫入操作的節點。

  1. 再次於 "Extract from File" 節點後新增 "Qdrant Vector Store" 節點。
  2. 選擇操作 "Add documents to vector store"。
  3. "Collection Name" 同樣輸入 nhi_text-embedding-004_768
  4. 連接 Embedding 模型:
    • 將節點左下的 "Embedding" 接口,連接到 "Embeddings Google Gemini" 節點。
    • 確認模型為 models/text-embedding-004
  5. 連接 Data Loader:
    • 將節點右下的 "Data Loader" 接口,連接到 "Default Data Loader" 節點。
設定 Qdrant 寫入節點
圖 4: 設定寫入節點的 Collection Name。
連接節點
圖 5: 將 Embedding 和 Data Loader 連接到對應的子節點。

步驟四:執行與驗證

所有節點都已就緒,讓我們執行工作流並檢查結果。

  1. 點擊 "Execute workflow",並上傳一份 PDF 檔案。
  2. 工作流執行完畢後,回到 Qdrant Web UI。
  3. 您應該會看到對應的 Collection 中 "Points" 的數量增加了。
  4. 點擊數字,可以進一步查看寫入的資料點 (Points),確認 payload 中包含了文字內容 (content) 與元資料 (metadata)。
  5. 再次上傳同一個檔案,確認 Points 數量不變,代表刪除邏輯正常運作。
執行成功畫面
圖 6: n8n 顯示工作流執行成功。
驗證 Qdrant 資料
圖 7: 在 Qdrant 儀表板確認資料點已成功寫入。
查看資料點詳情
圖 8: 檢視單一資料點的詳細內容。

本章總結

做得非常出色!您已成功將一個雲端資料庫的工作流,改造成為完全在地端運行的版本。這項技能在處理敏感資料或需要高度客製化的場景中至關重要。本章重點回顧:

  • 學會了如何複製並修改現有的 n8n 工作流。
  • 掌握了 n8n 中 Qdrant 節點的基本設定,包括 Credential、刪除與新增操作。
  • 理解了如何設定 Filter 來實現「先刪除後新增」的資料更新邏輯。
  • 成功將 n8n 與本地的 Qdrant 資料庫串接,並完成資料寫入。

現在,您已經擁有一個強大的在地化資料管道。在最後一篇教學中,我們將改造問答機器人,讓它從本地的 Qdrant 資料庫中檢索資訊來回答問題,完成整個私有化 RAG 應用的最後一塊拼圖。