在Dify里折腾问答的知识库,十次翻车有九次都是因为一个问题:文件里的文本太“脏”了。PDF里那堆奇奇怪怪的换行符、扫描件上认错的字、网页抓下来残留的HTML碎屑,这些东西被直愣愣地塞进向量库,模型不懵才怪。90%的问答错乱、关键词检索失效,根子就在这儿。
解决起来其实不复杂,关键是知道在哪步动手。先说一个结论:必须在知识库创建或编辑流程中、点击“保存并处理”按钮之前搞定清洗,之后再想回炉可没这扇门了。

定位并启用内置清洗工具
入口藏得不算深。进Dify控制台,点左侧【知识库】,新建一个或编辑现有的,在上传文件的下方就会看到【文本分段与清洗】这个区域。把它展开,里面就是所有配置项。
有必要先明确一点:这功能只在创建/编辑流程的特定步骤中间出现,点下“保存并处理”那刻,它就功成身退了。所以,动手前一定确认配置已经做完。
一键启用基础清洗规则
最省心的操作,是先勾上下面这三条默认规则。这能解决差不多80%的常见噪音问题:
- 移除多余空白字符:连续空格、全角空格、制表符,一键抹平。
- 移除HTML标签:网页源码里的
、残留标记,清掉。 - 移除URL和邮箱地址:避免这些链接文本干扰语义向量化。
勾上就行,后台自动用re.sub处理,不影响上传速度。简单直接,效果立竿见影。
针对PDF/扫描件的OCR错字专项清洗
如果文档是扫描件或PDF转过来的,那些常见的OCR识别错误才是真正的硬骨头。可以用两种方法打补丁。
方法一:正则替换高频OCR错误
在【自定义清洗规则】输入框里贴这些正则,系统会按规则逐条替换:
r'3.l4%' → '3.14%'
r'0C' → '0°C'
r'1O' → '10'
r'5ec' → 'sec'方法二:批量修正数字与单位粘连
启用【移除数字与单位间非法空格】规则。系统能自动识别出“10 000 元”这种断裂写法,修复为“10000元”;把“2 5 . 4 mm”恢复成“25.4mm”。对技术文档、价格报表这类文本特管用。
不过要当心一点:正则替换对大小写和转义符号很敏感。比如匹配“3.14%”,严格写成r'3.14%',漏了反斜杠的话,所有数字都会被误删,那就不是清洗是破坏。
保留关键结构信息的清洗策略
清洗就像打扫房间,既要扫干净尘土,又不能把家具格局给改没了。尤其对于技术文档、参数表、操作手册这类内容,段落结构和标题层级本身就是重要的语义线索。
以下几步可以保证结构与内容两不误:
- 关闭【移除所有换行符】选项——这是保护段落边界的第一道防线。
- 在分段设置中将分隔符设为“nn”(两个换行符)。这样系统能准确识别段落之间的自然分隔。
- 启用【保留标题层级标识】规则。系统会识别“### 产品参数”“## 故障排查”这类Markdown标题语法,清洗后保留其语义权重标记。
- 手动添加保护性正则。在【自定义清洗规则】中加入一个正则,专门处理孤立的结构指引:
r'(?。这样只会删除单独出现的“表1 功能说明”字样,不会动正文里的“表格第1列”。
经过这四步处理,清洗后的文档既干净又保留了分层结构。后续按章节分段时,能精准定位到“参数表”“警告项”“操作步骤”这类高价值区块。
验证清洗效果的实时预览
光说不练假把式。上传一个包含页眉、乱码、换行错乱的PDF样本,点击【解析预览】按钮,左侧显示原始文本流,右侧同步呈现清洗后结果。两相对比,一目了然。
务必重点检查三处:
- 页眉页脚是否消失;
- “营n业收n入”这类断裂文本是否已合并为“营业收入”;
- 中文顿号、引号是否仍为全角(如果业务要求保留,就不要开启全角转半角规则)。
测试通过,再点击“保存并处理”,知识库的数据质量就有了第一道保障。后面的问答准确性,也不会再被那些隐藏的文本垃圾拖后腿了。
