工作流介紹
Qdrant 向量資料庫嵌入管道:全面概述
這個名為「Qdrant 向量資料庫嵌入管道」的 N8n 工作流程範本,利用 OpenAI 的嵌入功能,自動化從向量資料庫 (Qdrant) 中提取、處理和嵌入 JSON 文件。它專為語義搜尋應用程式設計,其中非結構化或半結構化的文字資料必須轉換為可搜尋、高維度的向量。
此管道整合了透過 FTP 進行的檔案處理、文件解析、文字分塊、AI 驅動的嵌入生成以及向量儲存——所有這些都在 n8n 自動化平台內進行協調。這使得組織能夠以最少的人工干預來建構可擴展的檢索增強生成 (RAG) 系統、知識庫或智慧搜尋引擎。
工作流程功能
此工作流程執行一個端對端的資料導入和向量化管道:
- 連接到 FTP 伺服器,並列出指定目錄中的所有
.json檔案。 - 迭代以二進位格式下載每個檔案。
- 將 JSON 內容解析為 LangChain 相容的文件物件。
- 根據定義的分隔符 (
"chunk_id") 將文字內容分割成較小的區塊。 - 使用 OpenAI 的
text-embedding-ada-002模型為每個文字區塊生成嵌入。 - 將嵌入的區塊(包括其元資料)儲存到名為
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)。
分步工作流程邏輯
-
觸發執行
- 當使用者點擊「測試工作流程」(手動觸發器)時,工作流程開始。
- 控制權轉移到 列出所有檔案 節點。
-
從 FTP 獲取檔案列表
- FTP 節點 連接到伺服器,並列出
/Oracle/AI/embedding/svenska中的所有檔案。 - 輸出檔案條目陣列(名稱、大小、日期等)。
- FTP 節點 連接到伺服器,並列出
-
逐一迭代檔案
- Split In Batches 節點每次處理一個檔案。
- 確保穩定性,避免壓垮下游服務。
-
下載當前檔案
- 另一個 FTP 節點 使用動態路徑下載選定的檔案:
=Oracle/AI/embedding/svenska/{{ $json.name }} - 將檔案以二進位資料形式儲存在
binary.data中。
- 另一個 FTP 節點 使用動態路徑下載選定的檔案:
-
將二進位 JSON 解析為文件
- Default Data Loader 讀取二進位 JSON,並將其轉換為 LangChain
Document物件。 - 每個文件包含
pageContent(文字)和metadata。
- Default Data Loader 讀取二進位 JSON,並將其轉換為 LangChain
-
將文字分割成區塊
- Character Text Splitter 在出現
"chunk_id"的地方分割文件文本。 - 確保尊重語義邊界(例如,每個區段或每個記錄的分割)。
- 可選但建議用於統一向量化。
- Character Text Splitter 在出現
-
生成嵌入
- Embeddings OpenAI 節點將每個文字區塊發送到 OpenAI 的 API。
- 返回一個 1536 維的向量,代表文本的語義含義。
-
在 Qdrant 中儲存向量
- Qdrant Vector Store 節點接收嵌入和原始文件。
- 將它們插入到
sv_lang_data集合中。 - 使用 100 的批次大小以獲得最佳效能。
- 假設 Qdrant 集合已預先建立,具有:
{ "vectors": { "size": 1536, "distance": "Cosine" } }
-
重複直到完成
- 迴圈繼續,直到所有檔案都已處理。
- 最終輸出確認所有文件的索引成功。
此工作流程例證了 n8n 如何在不編寫程式碼的情況下協調複雜的 AI/資料管道,將檔案操作、語言模型和向量資料庫結合到一個健壯的、生產就緒的解決方案中。
使用方法:下載 JSON 檔案,然後在 n8n 中選擇「從檔案匯入」。