Dify大模型,知识库解析父子分段模式,召回率提升
发布于 作者:苏南大叔 来源:程序如此灵动~
在知识库初步建立,填充内容并分割解析的时候,就已经决定了召回率的高低(知识库的质量好坏)。这是因为知识库对文档的分割方式,就直接决定了知识库的向量组织方式。默认知识库文档分割方式,必然不是先进的,否则也不会出现后续的“父子分段”模式。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10@22h2,docker@28.0.4,dify@1.3.1,weaviate@1.19.0。【知识库】在dify里面有两个角色,一是为其他插件提供上下文,另外也可以独立发布。本文主要探讨dify的【知识库】中的【父子分段】的切割模型,看看它如何提升召回率。
前文回顾
在本文中,是以dify平台的知识库搭建为前提的。前置阅读文章如下:
docker,https://newsn.net/say/docker-win.htmldify,https://newsn.net/say/dify.html- 知识库,https://newsn.net/say/dify-weaviate.html
- 召回率,https://newsn.net/say/dify-recall.html
召回测试
除了传统的agent对话测试方式外,
还可以使用“召回测试”功能。参考下图:
传统分割方式
传统分割方式,最大的特点就是按段落分隔符进行划分,比如:\r\n,或者\n\n。然后子段是使用,。!;等进行分割。
经常做数据抓取的小伙伴,可能知道:这些标点符号,有全角半角的说法。换行符也有windows版本和unix版本的区别。所以,在上传到dify平台之前,最好对原文档进行一定的预处理,才能期待达到更好的效果。
这里的处理方式是:
- 遇到设置中的截止符号。【因地制宜的截止符号】
- 或者到达一定的字符数(
token)。【这个就显得比较生硬了,对吧?】
父子分段方式
父子分段模式是新出的分割模式,在这种模式下,就和写论文的感觉差不多。“标题二”就是父级别,“标题三”就是子级别。
对比效果
以“召回测试”为功能界面,同样的测试用户提问。同样的文档,但是采用不同的分割方式。
可以看到:后者“父子分段”得到了较高的召回率结果。
结语
“父子分段”模式得到了较高的召回率的同时,初始化知识库的时候,耗费的分割时间也是相对较多的。值得庆幸的是:对于用户来说,这个耗时并不存在。
更多dify经验文章,请参考: