一、知识库构建的分段方式

!!本文基于Dify中的知识库进行操作分析与讲解,需要对Dify有一定的基础,如果有需要,可以在评论区或者私信我,我会另写一篇有关Dify的内容,当然,相关内容在网上也有很多。!!

1.1 为什么要分段

在构建知识库的过程中,分段(Chunking)是指将大块的文本、数据或信息拆分成更小、更易管理的分段(Chunk)(即“段落”或“片段”),以便于存储、检索和分析。分段是知识库构建的核心步骤之一,直接影响后续的搜索、问答和AI理解的效果。

知识库分段的主要目的有如下几点:

  • 提高检索效率短文本比长文本更容易被搜索引擎或AI模型处理
  • 增强语义理解合理分段能让AI更精准地理解上下文,避免信息混杂
  • 优化存储结构结构化数据更易于管理和更新

常见的分段方法:

1、按固定长度分割(Fixed-size Chunking)

例如:每200字或500字切分一次。

适用场景:标准化文档(如法律条文、技术手册)。

2、按自然段落分割(Paragraph-based Chunking)

根据换行符或段落标记(如`\n\n`)拆分。

适用场景:文章、报告、网页内容等。

3、按语义分割(Semantic Chunking)

使用NLP模型识别语义边界,确保每个片段表达完整意思。

适用场景:复杂文本(如研究论文、用户咨询记录)。

4、按标题/章节分割(Hierarchical Chunking)

依据文档结构(如H1/H2标题)划分。

适用场景:书籍、技术文档、带目录的长文。

5、滑动窗口分割(Sliding Window)

允许部分内容重叠,避免关键信息被切断。

适用场景:对话记录、连续日志。

分段时的注意事项:

  • 避免信息碎片化确保每个片段有独立意义,而非零散句子
  • 结合业务需求问答系统需要更细的分段,而摘要生成可能适合大段落
  • 测试与优化不同分段方式影响AI回答质量,需通过实验选择最佳策略

示例对比

原始文本:“深度学习是机器学习的分支,依赖神经网络。训练时需要大量数据和GPU支持。应用场景包括图像识别、自然语言处理等。”

不好的分段(过于零碎):

C1、“深度学习是机器学习的分支。”

C2、“依赖神经网络。”

C3、“训练时需要大量数据。”

好的分段(语义完整):

C1、“深度学习是机器学习的分支,依赖神经网络。”

C2、“训练时需要大量数据和GPU支持,应用场景包括图像识别、自然语言处理等。”

1.2 什么是父子分段

在Dify的知识库中,将文本分段方法划分为通用分段和父子分段两种。父子分段(Hierarchical Chunking)是一种结构化的文本分段策略,通过建立“父分段-子分段”的层级关系,将内容按逻辑关联性组织。类似“按固定长度分割“和”按语义分割“的混合体。

  • 父分段(Parent Chunk):代表一个完整主题或章节(如“数据库备份报错处理方案”)。
  • 子分段(Child Chunk):父分段下的具体内容块(如“步骤一:XXX”、“步骤二:XXX”、……)。

父子分段的核心目的是 平衡检索精度与上下文完整性 ,解决通用分段的三大痛点:

1、上下文割裂问题

    • 通用分段可能将一个完整主题拆散(如将“操作指南”的步骤1和步骤2分到不同分段),导致大模型回答时缺失关键信息。
    • 父子分段通过层级关联,确保子分段始终能回溯到父分段的上下文(如“步骤1”属于“操作指南”大主题)。

2、长尾检索优化

    • 当用户提问涉及细分内容(如“如何配置功能A的参数?”),父子分段能精准匹配子分段,同时通过父分段补充全局信息(如功能A的适用版本)。
    • 而通用分段是针对真个分段快内容进行匹配,很可能由于召回率太低而无法找到精确的内容。

3、多粒度检索支持

    • 支持灵活查询:
      • 粗粒度:检索父分段(如“系统登录失败”)。
      • 细粒度:直接命中子分段(如“错误代码404的解决方法”)。

1.3 父子分段 vs 通用分段的区别

对比维度 父子分段 通用分段
结构 层级化(父-子关系) 扁平化(独立段落)
检索逻辑 支持跨层级关联检索 仅单段匹配
适用场景 结构化文档(手册、API文档) 短文、非结构化内容(新闻、评论)
上下文保留 子分段继承父分段的语义 依赖滑动窗口或重叠分段

1.3.1 父子分段与通用分段在相同问题下的召回率对比

以动环监控系统使用手册知识库为例,划分为父子分段和通用分段两种类型,在召回率测试中,检索设置使用向量检索,使用beg Rerank模型,Top K设置为2,Score阈值关闭。分别对两个知识库询问相同的问题,进行召回率对比测试。结果如下:

问题1:用户如何登录系统?
父子分段召回测试结果:成功召回,并且以高分召回,表示改内容与问题极其相符。没有其他内容的干扰。
在这里插入图片描述
通用分段召回测试结果:成功召回,但还额外召回了不相关的内容,这种结果可能在之后对大模型的回复造成困扰。
在这里插入图片描述
问题2:如何停用一个告警事件?
父子分段召回测试结果:召回成功,并且以高分召回,表示改内容与问题极其相符。没有其他内容的干扰。
在这里插入图片描述
通用分段召回测试结果:召回成功,但是也召回了不太相关的内容,这种结果可能在之后对大模型的回复造成困扰。
在这里插入图片描述
问题3:系统提示UPS输入电压低报警,怎么办?
父子分段召回测试结果:召回成功,并且以高分召回,表示改内容与问题极其相符。没有其他内容的干扰。
在这里插入图片描述
通用分段召回测试结果:召回成功,但是也召回了不太相关的内容,,这种结果可能在之后对大模型的回复造成困扰。
在这里插入图片描述
通过如上三个召回测试实验,可以直观地发现,使用父子分段后,知识库的召回率大幅提升,并且精度提高很多,同一问题只召回一个匹配的内容,然而通用分段的知识库虽然召回分数也不低,但是却同时召回了不太相关甚至完全不相关的内容,在后续对大模型生成内容的影响非常大。

1.4 父子分段的内容检索过程

父子分段将大段的父分段继续划分为更细粒度的子分段。在进行内容检索时,检索引擎将用户问题向量化之后,与众多子分段进行语义相似度计算(对于向量计算,显卡通过使用TensorCore,配合Tensor库方法,以及向量数据库的读取速度,可以计算得飞快,所以不用担心检索速度)。当获取到召回率最高的子分段后,会将完整的父分段返回给大模型,大模型根据父分段中的内容,生成回答返回给用户。

1.5总结

父子分段是Dify知识库针对 复杂结构化内容 的高级优化策略,尤其适合:

  • 需要保留上下文的 技术文档、产品手册
  • 长尾查询频繁的 客服知识库
  • 多层级检索需求的 企业级知识管理

建议:若内容高度结构化且检索精度要求高,优先采用父子分段;若内容简单或需快速部署,通用分段更高效。

Logo

一站式 AI 云服务平台

更多推荐