首頁 / n8n 工作流模板 / 使用 OpenAI 和 Qdrant 自動化文件嵌入和向量儲存

使用 OpenAI 和 Qdrant 自動化文件嵌入和向量儲存

Qdrant Vector Database Embedding Pipeline

此工作流程自動化了透過 FTP 獲取 JSON 檔案、將其轉換為文件、將文本分割成塊、生成 OpenAI 嵌入,並將其儲存在 Qdrant 向量資料庫中以進行語義搜索的過程。

手動觸發9 個節點AI 與機器學習AI向量資料庫資料處理

工作流介紹

Qdrant 向量資料庫嵌入管道:全面概述

這個名為「Qdrant 向量資料庫嵌入管道」的 N8n 工作流程範本,利用 OpenAI 的嵌入功能,自動化從向量資料庫 (Qdrant) 中提取、處理和嵌入 JSON 文件。它專為語義搜尋應用程式設計,其中非結構化或半結構化的文字資料必須轉換為可搜尋、高維度的向量。

此管道整合了透過 FTP 進行的檔案處理、文件解析、文字分塊、AI 驅動的嵌入生成以及向量儲存——所有這些都在 n8n 自動化平台內進行協調。這使得組織能夠以最少的人工干預來建構可擴展的檢索增強生成 (RAG) 系統、知識庫或智慧搜尋引擎。


工作流程功能

此工作流程執行一個端對端的資料導入和向量化管道:

  1. 連接到 FTP 伺服器,並列出指定目錄中的所有 .json 檔案。
  2. 迭代以二進位格式下載每個檔案。
  3. 將 JSON 內容解析為 LangChain 相容的文件物件。
  4. 根據定義的分隔符 ("chunk_id") 將文字內容分割成較小的區塊。
  5. 使用 OpenAI 的 text-embedding-ada-002 模型為每個文字區塊生成嵌入。
  6. 將嵌入的區塊(包括其元資料)儲存到名為 sv_lang_data 的 Qdrant 向量資料庫集合中。

它支援批次處理,並透過利用串流和批次機制來確保對大型資料集的有效處理。


主要功能與能力

  • 自動化檔案導入:使用 FTP 節點自動發現和下載 JSON 檔案。
  • 可擴展的批次處理:採用 Split In Batches 節點一次處理一個檔案,從而控制記憶體使用量和 API 速率限制。
  • 彈性的文件解析:利用 Default Data Loader 將二進位 JSON 負載轉換為結構化的 LangChain 文件。
  • 可設定的文字分塊:使用 "chunk_id" 作為分隔符進行基於字元的分割,允許與來源資料結構對齊的邏輯分割。
  • OpenAI 驅動的嵌入:安全地與 OpenAI API 整合,生成針對語義相似性優化的 1536 維嵌入。
  • Qdrant 中的向量儲存:將嵌入的文件推送到預先設定的 Qdrant 集合中,支援快速近似最近鄰 (ANN) 搜尋。
  • 保留元資料:在轉換和儲存過程中保留原始檔案中的相關元資料。
  • 視覺化文件:包含解釋每個階段的便利貼,提高可讀性和可維護性。

主要節點及其用途

節點名稱 類型 用途
點擊「測試工作流程」時 手動觸發器 為測試目的手動啟動工作流程。
列出所有檔案 FTP 節點 (列表操作) 檢索遠端 FTP 目錄 Oracle/AI/embedding/svenska 中的所有檔案列表。
逐一循環 Split In Batches 一次處理列表中的一個檔案條目,實現循序漸進的受控執行。
下載項目 FTP 節點 (下載) 以二進位格式下載當前檔案(透過 {{ $json.name }} 引用),並將其儲存在 binary.data 下。
Default Data Loader LangChain 文件載入器 將下載的二進位 JSON 資料轉換為適合下游 NLP 任務的 LangChain Document 物件。
Character Text Splitter LangChain 文字分割器 使用 "chunk_id" 作為分隔符將長文本分解成較小的區塊;為嵌入模型準備輸入。
Embeddings OpenAI LangChain 嵌入節點 調用 OpenAI API 為每個文字區塊生成向量嵌入(使用 text-embedding-ada-002)。
Qdrant Vector Store LangChain 向量儲存節點 將生成的嵌入連同相關元資料插入到 Qdrant 的 sv_lang_data 集合中。

此外:

  • 便利貼 提供內嵌文件,解釋每個階段。
  • Qdrant API 憑證 ("QdrantApi svenska") 和 OpenAI API 金鑰 透過儲存的憑證安全地引用。
  • FTP 帳戶 在多個節點之間重複使用,用於列表和下載操作。

用途與效益

用途

  • 企業知識管理:索引內部文件、支援票證或培訓材料以進行語義搜尋。
  • 多語言語義搜尋:專門針對瑞典語資料(暗示為 "svenska"),使其成為斯堪地那維亞市場的理想選擇。
  • 資料湖整合:自動從儲存在 FTP 伺服器上的 JSON 格式資料的舊系統導入。
  • RAG 管道:將處理和嵌入的內容饋送到需要上下文基礎的 LLM 應用程式。
  • 合規與歸檔系統:能夠使用自然語言查詢快速檢索歸檔記錄。

效益

  • 端對端自動化:消除了資料準備和嵌入中的手動步驟。
  • 高準確度:透過智慧分塊保留上下文,並使用最先進的嵌入。
  • 高效擴展:批次處理可防止過載;非常適合處理數百或數千個檔案。
  • 安全憑證處理:所有敏感金鑰(OpenAI、Qdrant、FTP)均透過 n8n 的加密憑證系統進行管理。
  • 可擴展設計:易於修改以適應其他語言、嵌入模型或替代向量資料庫(例如 Pinecone、Weaviate)。

分步工作流程邏輯

  1. 觸發執行

    • 當使用者點擊「測試工作流程」(手動觸發器)時,工作流程開始。
    • 控制權轉移到 列出所有檔案 節點。
  2. 從 FTP 獲取檔案列表

    • FTP 節點 連接到伺服器,並列出 /Oracle/AI/embedding/svenska 中的所有檔案。
    • 輸出檔案條目陣列(名稱、大小、日期等)。
  3. 逐一迭代檔案

    • Split In Batches 節點每次處理一個檔案。
    • 確保穩定性,避免壓垮下游服務。
  4. 下載當前檔案

    • 另一個 FTP 節點 使用動態路徑下載選定的檔案:
      =Oracle/AI/embedding/svenska/{{ $json.name }}
    • 將檔案以二進位資料形式儲存在 binary.data 中。
  5. 將二進位 JSON 解析為文件

    • Default Data Loader 讀取二進位 JSON,並將其轉換為 LangChain Document 物件。
    • 每個文件包含 pageContent(文字)和 metadata。
  6. 將文字分割成區塊

    • Character Text Splitter 在出現 "chunk_id" 的地方分割文件文本。
    • 確保尊重語義邊界(例如,每個區段或每個記錄的分割)。
    • 可選但建議用於統一向量化。
  7. 生成嵌入

    • Embeddings OpenAI 節點將每個文字區塊發送到 OpenAI 的 API。
    • 返回一個 1536 維的向量,代表文本的語義含義。
  8. 在 Qdrant 中儲存向量

    • Qdrant Vector Store 節點接收嵌入和原始文件。
    • 將它們插入到 sv_lang_data 集合中。
    • 使用 100 的批次大小以獲得最佳效能。
    • 假設 Qdrant 集合已預先建立,具有:
      {
        "vectors": {
          "size": 1536,
          "distance": "Cosine"
        }
      }
      
  9. 重複直到完成

    • 迴圈繼續,直到所有檔案都已處理。
    • 最終輸出確認所有文件的索引成功。

此工作流程例證了 n8n 如何在不編寫程式碼的情況下協調複雜的 AI/資料管道,將檔案操作、語言模型和向量資料庫結合到一個健壯的、生產就緒的解決方案中。

使用方法:下載 JSON 檔案,然後在 n8n 中選擇「從檔案匯入」。