跳到主要内容

数据解析入库流水线快速上手 (Ingestion Pipeline Quickstart)

RAGFlow 的数据解析入库流水线 (Ingestion Pipeline) 是一个可定制的、逐步进行的工作流,为您的文档实现高质量 AI 检索和回答做好准备。您可以将其视为积木:通过连接不同的处理“组件 (Components)”,构建一条量身定制的、符合您特定文档和需求的流水线。


RAGFlow 是一个开源的 RAG 平台,具备强大的文档处理能力。其内置模块 DeepDoc 使用智能解析对文档进行分块,以实现精确检索。为了应对现实世界中的多样化需求(例如多样的文件来源、复杂的排版布局以及更丰富的语义),RAGFlow 现推出了数据解析入库流水线 (Ingestion Pipeline)

数据解析入库流水线允许您自定义文档处理的每一个步骤:

  • 针对不同场景应用不同的解析和分块 (Chunking) 规则
  • 添加诸如摘要生成或关键词提取之类的预处理操作
  • 连接到云端网盘和在线数据源
  • 针对表格和混合内容使用先进的布局感知模型

这种灵活的流水线能够自适应您的数据,从而提高 RAG 中的回答质量。

1. 了解流水线的核心组件 (Core Pipeline Components)

  • Parser (解析器) 组件:读取并理解您的文件(PDF、图像、电子邮件等),提取文本和结构。
  • Transformer (转换器) 组件:通过利用 AI 添加摘要、关键词或问题,来增强文本并提升检索效果。
  • Chunker (分块器) 组件:将长文本分割成大小最佳的片段(“分块/块”),以便实现更好的 AI 检索。
  • Indexer (索引器) 组件:最后一步。将处理后的数据发送到文档引擎(支持混合全文检索和向量检索)。

2. 创建数据解析入库流水线

  1. 进入 Agent 页面。
  2. 点击 Create agent,并从空白画布或预构建模板开始(建议初学者使用模板)。
  3. 在画布上,从右侧面板拖动并连接组件来设计您的流程(例如:Parser → Chunker → Transformer → Indexer)。

现在让我们来构建一条典型的数据解析入库流水线!

3. 配置 Parser (解析器) 组件

Parser 组件可将您的文件转换为结构化文本,同时保留布局、表格、标题和其他格式。它支持 8 个大类、23 种以上的文件格式,包括 PDF、图片 (Image)、音频 (Audio)、视频 (Video)、电子邮件 (Email)、电子表格 (Spreadsheet / Excel)、Word、PPT、HTML 和 Markdown。以下是一些关键配置:

  • 对于 PDF 文件,选择以下选项之一:
    • DeepDoc(默认):RAGFlow 内置的模型。最适合扫描文档或包含表格的复杂布局。
    • MinerU:行业领先,适用于处理复杂的元素(如数学公式)和错综复杂的布局。
    • Naive:简单的文本提取。适用于排版干净、不含复杂元素的文本型 PDF。
  • 对于图片文件:默认使用 OCR。您也可以配置多模态大模型 (Vision Language Models, VLMs) 进行高级视觉理解。
  • 对于电子邮件文件:选择要解析的特定字段(例如 "subject" 主题、"body" 正文)以实现精准提取。
  • 对于电子表格:输出为 HTML 格式,保留行/列结构。
  • 对于 Word/PPT:输出为 JSON 格式,保留文档层级结构(标题、段落、幻灯片)。
  • 对于纯文本和标记语言 (HTML/MD):自动剥离格式标记,输出干净的纯文本。

4. 配置 Chunker (分块器) 组件

Chunker 组件能够智能地对文本进行分块。其目标是防止大语言模型 (LLM) 的上下文窗口 (Context Window) 溢出,并提高混合检索 (Hybrid Search) 中的语义准确性。有两种核心分块方法(可以按顺序组合使用):

  • By Tokens (按 Token 分块)(默认):
    • Chunk Size (分块大小):默认值为 512 个 token。在检索质量和模型兼容性之间取得平衡。
    • Overlap (重叠度):设置 Overlapped percent (重叠百分比),将前一个分块的结尾复制到下一个分块的开头。从而提高语义连贯性。
    • Separators (分隔符):默认使用 \n(换行符)优先在自然的段落边界进行划分,避免在句子中间断开。
  • By Title (按标题分块)(层级分块):
    • 最适合结构化文档,如手册、论文、法律合同。
    • 系统根据章节结构对文档进行切分。每个分块代表一个完整的结构单元。
重要提示

在当前的设计中,如果同时使用 Token 和 Title 方法,请先连接 Token chunker 组件,然后再连接 Title chunker 组件。如果直接将 Title chunker 连接到 Parser,可能会导致电子邮件、图片、电子表格和文本文件出现格式错误。

5. 配置 Transformer (转换器) 组件

Transformer 组件旨在消除“语义鸿沟”。通常而言,它使用 AI 模型来添加语义元数据,使您的内容在检索过程中更容易被发现。它包含四种生成类型:

  • Summary (摘要):生成简明扼要的概述。
  • Keywords (关键词):提取关键术语。
  • Questions (问题生成):生成该文本块可以回答的问题。
  • Metadata (元数据):自定义元数据提取。

如果您有多个 Transformer,请确保为每个功能独立设置 Transformer 组件(例如:一个用于生成摘要,另一个用于提取关键词)。

以下是一些关键配置:

  • Model modes (模型模式):(选择其一)
    • Improvise (即兴):更具创造性,适合用于问题生成。
    • Precise (精准):严格忠实于原文,适合用于摘要生成或关键词提取。
    • Balance (平衡):折中方案,适用于大多数场景。
  • Prompt engineering (提示词工程):每种生成类型的系统提示词 (System Prompt) 都是开放的,可进行自定义。
  • Connection (连接关系)Transformer 可以连接在 Parser 之后(处理整个文档),也可以连接在 Chunker 之后(处理每一个分块)。
  • Variable referencing (变量引用):该节点不会自动获取内容。在用户提示词 (User Prompt) 中,需要手动输入 / 并选择具体的上游输出变量来引用它们(例如 /{Parser.output}/{Chunker.output})。
  • Series connection (串联连接):当链式连接多个 Transformer 时,如果变量引用正确,第二个 Transformer 组件将处理第一个组件的输出(例如基于摘要生成关键词)。

6. 配置 Indexer (索引器) 组件

Indexer 组件进行索引构建以实现最优检索。它是将处理后的数据写入搜索引擎(如 Infinity、Elasticsearch、OpenSearch)的最后一步。以下是一些关键配置:

  • Search methods (检索方法)
    • Full-text (全文检索):用于精确匹配(代码、名称等)的关键词检索。
    • Embedding (向量检索):使用向量相似度进行语义搜索。
    • Hybrid (混合检索,推荐):结合这两种方法以获得最佳召回率。
  • Retrieval Strategy (检索策略)
    • Processed text (处理后的文本)(默认):对分块文本进行索引。
    • Questions (问题):对生成的问题进行索引。与“文本-文本”相比,通常能产生更高的相似度匹配。
    • Augmented context (增强上下文):对摘要而不是原始文本进行索引。适合宽泛的主题匹配。
  • Filename weight (文件名权重):通过滑块控制将文档文件名作为检索时的语义信息包含在内。
  • Embedding model (嵌入模型):自动使用在创建数据集 (Dataset) 时设置的模型。

重要提示

要同时检索多个数据集,所有选定的数据集必须使用相同的嵌入模型 (Embedding Model)。

7. 测试运行 (Test Run)

在流水线画布上点击 Run(运行)上传示例文件,以查看逐步运行的结果。

8. 将流水线连接到数据集

  1. 在创建或编辑数据集时,找到 Ingestion pipeline(数据解析入库流水线)区域。
  2. 点击 Choose pipeline(选择流水线)并选择您保存的流水线。

现在,上传到该数据集的任何文件都将由您的自定义流水线进行处理。