本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。想象一下你正在搭建一条生产流水线,每个站点执行特定任务,你将不同它们连接起来将每个零部件组装最终成品。知识流水线编排与此类似,你组合不同节点,将原始文档数据通过每个节点逐步转化为可搜索的知识库。在 Dify 里,你通过可视化的方式,拖放和连接不同节点,对文档数据进行提取和分块处理,并配置索引方式和检索策略。 在这个章节,你将了解知识流水线的过程,理解不同节点的含义和配置,如何自定义构建数据处理流程,从而高效地管理和优化知识库。
界面状态
进入知识流水线编排界面时,你会看到:- 标签页状态:Documents(文档)、Retrieval Test(召回测试)和 Settings(设置)标签页将显示为置灰且不可用状态
- 必要步骤:你必须完成知识流水线的配置、调试和发布后,才能上传文件或使用其他功能


知识流水线处理流程
在开始之前,我们先拆解知识流水线的处理流程,你可以更好地理解数据是如何一步步转化为可用的知识库。- 数据源配置:来自各种数据源的原始内容(本地文件、Notion、网页等)
- 数据处理节点配置:处理和转换数据内容
- 提取器 (Extractor) → 解析和结构化原始文档内容
- 分块器 (Chunker) → 将结构化内容分割为适合处理的片段
- 知识库节点配置:设置知识库的分段结构和检索策略
- 用户输入表单配置:定义流水线使用者需要输入的参数
- 测试与发布:验证并正式启用知识库
步骤一:数据源配置
在一个知识库里,你可以选择单一或多个数据源。目前,Dify 支持 4 种数据源:文件上传、在线网盘、在线文档和网页爬虫。 你也可以前往 Dify Marketplace,获得更多数据源。文件上传
用户可以直接选择本地文件进行上传,以下是配置选项和限制。
配置选择
限制
输出变量
在线文档
Notion
将知识库连接 Notion 工作空间,可直接导入 Notion 页面和数据库内容,支持后续的数据自动同步。
配置选项说明
网页爬虫
将网页内容转化为大型语言模型容易识别的格式,知识库支持 Jina Reader 和 Firecrawl,提供灵活的网页解析能力。Jina Reader
开源网页解析工具,提供简洁易用的 API 服务,适合快速抓取和处理网页内容。
参数配置和说明
Firecrawl
开源网页解析工具,提供更精细的爬取控制选项和 API 服务,支持复杂网站结构的深度爬取,适合需要批量处理和精确控制的场景。
参数配置和说明
在线网盘
连接你的在线云储存服务(例如 Google Drive、Dropbox、OneDrive),Dify 将自动检索云储存中的文件,你可以勾选并导入相应文档进行下一步处理,无需手动下载文件再进行上传。步骤二:配置数据处理节点
该阶段是内容的预处理与数据结构化过程,这一部分将会把数据源进行提取、分段并转换为适合知识库存储和检索的格式。你可以将这一步想象成备餐过程:处理原材料、进行清理、切分成小块,并整理好一切,以便在有人需要时能迅速”烹制”出这道”菜肴”。文档处理
由于知识库无法直接理解 PDF、Word 等各种文档格式,提取器负责将这些文档”解读”成系统可以处理的文本内容。它支持多种常见文件格式,确保你的文档内容能够被正确提取和处理,并转换为大型语言模型可以有效使用的格式。你可以选择 Dify 文档提取器来处理文件,也可以根据你的需求从 Dify Marketplace 中选择更多工具。Marketplace 提供了如 Dify Extractor、Unstructured 等第三方工具。对于文档中的图片
对于文档中的图片
通过合适的文档处理工具,可将文档中的图片提取为对应分段的附件。被提取的图片可独立管理,并在检索时与分段一同返回。被提取图片的 URL 会保留在分段文本中,但你可以安全地删除这些 URL 以保持文本整洁,这不会影响已提取的图片。每个分段最多支持 10 个图片附件,超出的图片不会被提取。若使用的工具未提取到图片,Dify 会自动提取通过以下 Markdown 语法引用、URL 可访问且小于 2 MB 的 JPG、JPEG、PNG 和 GIF 图片:

文档提取器 (Doc Extractor)

Dify 提取器 (Dify Extractor)
Dify Extractor 是 Dify 开发的一款内置文档解析器。它支持多种常见文件格式,并针对 Doc 文件进行了专门优化。它能够从文档中提取图片,进行存储并返回图片的 URL。
Unstructured

Unstructured 将文档转换为结构化的机器可读格式,具有高度可定制的处理策略。它提供多种提取策略(auto、hi_res、fast、OCR-only)和分块方法(by_title、by_page、by_similarity)来处理各种文档类型,提供详细的元素级元数据,包括坐标、置信度分数和布局信息。推荐用于企业文档工作流、混合文件类型处理以及需要精确控制文档处理参数的场景。
分块器 (Chunker)
在构建 AI 应用时,我们需要处理大量和不同种类的文档内容,比如产品手册、技术文档或论文等。和人类有限的注意力相似,大型语言模型无法同时处理过多的信息。因此,在信息提取后,分块器将大段的文档内容拆分成更小、更易于管理的片段(称为”块”)。 不同类型的文档需要不同的分块策略,比如产品手册可能需要按照产品特性进行分块,而论文则需要根据逻辑结构进行分块。Dify 提供了 3 种分块器,帮助你根据不同文档类型和使用场景进行选择和使用。分块器类型概述
通用文本预处理规则
所有分块器都支持以下文本清理选项:通用分块器 (General Chunker)
基础文档分块处理,适用于结构相对简单的文档,你可以参考下面的配置对文本的分块、文本预处理规则进行配置。 输入输出变量
分块设置 (Chunk Settings)
父子分块器 (Parent-child Chunker)
父子分块器采用双层分段结构解决了上下文与准确度之间的矛盾,在检索增强生成(RAG)系统中实现了准确匹配与全面的上下文信息的平衡。 父子检索的工作机制- 使用子分块匹配查询:使用小而精准的信息片段(通常简洁到段落中的单个句子)来匹配用户查询。这些子分块能够实现精确且相关的初始检索。
- 父分块提供丰富的上下文:检索包含匹配子分块的更大范围内容(如段落、章节甚至整个文档)。这些父分块为大语言模型(LLM)提供全面的上下文信息。
分块设置 (Chunk Settings)
问答处理器 Q&A Processor (Extractor+Chunker)
问答处理器结合了提取和分块功能,专门用于处理 CSV 和 Excel 文件的结构化问答数据集,比如常见问题(FAQ)列表、排班表等。 输入输出变量
变量配置
步骤三:配置知识库节点
在完成数据处理后,我们将进入知识流水线的最后一个环节 — 知识库节点。你可以根据实际需求,在这个节点选择不同的索引方法和检索策略,以获得最适合的检索效果和成本控制。 知识库节点配置分为以下部分:输入变量、分段结构、索引方式以及检索设置。分段结构 (Chunk Structure)

通用模式
适用于大多数标准文档处理场景。通用模式提供灵活的索引选项,你可以根据对质量和成本的不同要求选择合适的索引方法。通用模式支持高质量和经济的索引方式,以及多种检索设置。父子模式
父子模式能够在检索时,提供精确匹配和对应的上下文信息,适用于需要保持完整上下文的专业文档。父子模式仅支持 HQ(高质量)模式,检索时提供子分块匹配和父分块上下文。问答模式 (Question-Answer)
在使用结构化问答数据时,你可以创建问题与答案配对的文档。这些文档会根据问题部分进行索引,从而使系统能够根据查询相似性检索到相关的答案。问答模式仅支持 HQ(高质量)模式。输入变量 (Input Variable)
输入变量用于接收来自数据处理节点的处理结果,用作知识库构建的数据源。你需要将前面配置的分块器节点的输出,连接到知识库节点并作为输入。 该节点根据所选的分段结构,支持不同类型的标准输入:- 通用模式:
{x} Array[Chunk]- 通用分块数组 - 父子模式:
{x} Array[ParentChunk]- 父分块数组 - 问答模式:
{x} Array[QAChunk]- 问答分块数组
索引方式 (Index Method) 与检索设置 (Retrieval Setting)
索引方式决定了知识库如何建立内容索引,检索设置则基于所选的索引方式提供相应的检索策略。可以这样理解:索引方式决定如何整理文档,而检索设置则决定如何查找文档。 知识库提供了两种索引方式:高质量 和经济,分别提供不同的检索设置选项。 在高质量模式下,使用嵌入模型将已分段的文本块转换为数字向量,帮助更加有效地压缩与存储大量文本信息。这使得即使用户的问题用词与文档不完全相同,系统也能找到语义相关的准确答案。 在经济索引方式下,每个分段使用 10 个关键词用于检索,无需调用嵌入模型,且不消耗 token。了解更多细节,阅读 指定索引方式与检索设置。
若选择的嵌入模型支持多模态,需同样选择多模态 Rerank 模型(带有 Vision 图标)。否则,检索到的图片将在重排序和检索结果中被排除。
步骤四:配置用户输入表单
用户输入表单对于收集流水线运行所需的有效初始信息非常重要。类似于工作流中的用户输入节点,这个表单从用户那里收集必要的详细信息,比如:需要上传的文件、文档处理的特定参数等,确保流水线拥有提供准确结果所需要的所有信息。 通过这种方式,你可以为不同的使用场景创建特定的输入表单,提高流水线对于不同数据源和文档处理流程的灵活性和易用性。创建用户输入表单
你可以通过下面两种方式,创建用户输入表单。-
知识流水线编排界面
点击输入字段(Input Field)开始创建和配置输入表单。\
-
节点参数面板
选中节点,在右侧的面板需要填写的参数内,点击最下方的+ 创建用户输入字段(+ Create user input) 来创建新的输入项。新增的输入项将会汇总到输入字段(Input Field)的表单内。
添加用户输入字段
非共享输入 (Unique Inputs for Each Entrance)

全局共享输入 (Global Inputs for All Entrances)

支持字段类型和填写说明
知识流水线支持以下七种类型的输入变量。
字段配置选项
所有类型的输入项包含:必填项、非必填项和更多设置,可以通过勾选设置为是否为必填。
配置完成后,点击右上角的预览按钮,你可以在弹出的表单预览界面中浏览。你可以拖拽调整字段的分组,如果出现感叹号,则表明移动后引用失效。

步骤五:为知识库命名

- 名称和图标
为你的知识库命名。
你还可以选择一个 emoji、上传图片或粘贴图片 URL 作为知识库的图标。 - 知识库描述
简要描述您的知识库。这有助于 AI 更好地理解和检索您的数据。如果留空,Dify 将应用默认的检索策略。 - 权限
从下拉菜单中选择适当的访问权限。
步骤六:测试
你马上就要完成了!这是知识流水线编排的最后一步。 在完成编排后,你需要先验证配置的完整性,然后测试流水线运行效果,确认各项设置正确无误,最后发布知识库。检查配置完成度
在进行测试前,建议先检查配置的完整性,避免因遗漏配置而导致测试失败。 点击右上角的检查清单按钮,系统会显示遗漏部分。
测试运行 (Test Run)

- 开始测试:点击右上角的测试运行(Test Run)按钮
- 导入测试文件:在右侧弹出的数据源窗口中,导入文件
- 填写参数:导入成功后,根据你之前配置的用户输入表单填写对应参数
- 开始试运行:点击下一步,开始测试整个流水线

