首页 / n8n 工作流模板 / 使用 OpenAI 和 Qdrant 自动进行文档嵌入和向量存储

使用 OpenAI 和 Qdrant 自动进行文档嵌入和向量存储

Qdrant Vector Database Embedding Pipeline

此工作流自动化了通过 FTP 获取 JSON 文件、将其转换为文档、将文本分割成块、生成 OpenAI 嵌入,并将其存储在 Qdrant 向量数据库中以进行语义搜索的过程。

手动触发9 个节点AI 与机器学习AI向量数据库数据处理

工作流介绍

Qdrant 向量数据库嵌入管道:全面概述

此 N8n 工作流模板,标题为 “Qdrant 向量数据库嵌入管道”,使用 OpenAI 的嵌入技术,自动化了从向量数据库 (Qdrant) 中提取、处理和嵌入 JSON 文档的过程。它专为语义搜索应用而设计,这些应用需要将非结构化或半结构化的文本数据转换为可搜索的高维向量。

该管道集成了通过 FTP 进行的文件处理、文档解析、文本分块、人工智能驱动的嵌入生成以及向量存储——所有这些都在 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. 触发执行

    • 当用户点击“测试工作流”(手动触发器)时,工作流开始。
    • 控制权传递给 List all the files 节点。
  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 中选择“从文件导入”。