启用父子分段模式并配合参数提取节点可解决合同pdf中违约责任条款因机械切块导致的语义割裂问题:子块≤500 token用于关键词匹配,父块1500~2000 token完整包裹逻辑单元;须先停用索引再切换模式,辅以正则清洗或ui参数调优兜底。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你在Dify里上传一份30页的合同PDF,提问“违约责任条款在哪几条”,结果AI只返回了第12条,漏掉了附录里的补充约定——这不是模型不聪明,而是原始文本被机械切块后,关键语义被硬生生割裂在两个块里,向量检索时根本找不到关联片段。
启用父子分段模式(必须做)
进入知识库 → 点击对应知识库右侧「设置」→ 找到「分割设置」→ 将分块模式从默认的「通用」切换为「父子分段」。
子块控制在500 token以内,用于精准匹配问题关键词;父块保持1500~2000 token,完整包裹一个逻辑单元(比如整条违约责任条款,含正文+注释+附件引用)。
【开启前务必停用当前知识库索引】否则新配置不会生效,旧块仍会参与检索。
手动预处理超长无结构段落
方法一:用正则清洗再导入
若原文含大段无换行日志、代码或法律长句,直接上传必然触发“段落过长”报错。先用编辑器执行:sed -E 's/([。!?;])/\1\n/g' file.txt 强制在句末加换行,再导入Dify。
方法二:UI端调低参数保底线
在「分割设置」中,把「分块大小」设为300、「重叠长度」设为30,并勾选「按标点符号优先分割」。这能强制切割器避开“一口气吞整段”的错误行为。
注意:此法仅兜底,不能替代父子分段。两者必须同时启用。
用参数提取节点做语义级分块
第一步:在工作流中添加「参数提取」节点,连接你的原始长文本变量。
第二步:在提示词中明确指令:“请将以下文档按实际业务章节划分,每个章节必须包含标题、正文、相关条款编号及脚注。输出为JSON数组,每个元素含title和content字段。”
第三步:设置提取参数为Array[Object],模型选GPT-4或Claude 3 Opus——它们能识别“第5.2条”与“附件三第2款”之间的逻辑绑定关系,而不会把二者切到不同块里。
第四步:将该节点输出的数组,直接喂给后续的「向量化」或「RAG检索」节点。此时每个数组项就是一个语义完整的父块单位。
这一步跳过了Dify默认分割器的字符级暴力切分,让大模型自己理解“哪里该断、哪里必须连”。











