Dify大模型,如何理解知识库recall召回率?知识库评价
发布于 作者:苏南大叔 来源:程序如此灵动~
知识库的建立,是一个长期且需要技巧的事情。它并不是“简单粗暴的上传文档,然后无脑生成向量数据库的数据”即可。效果好的知识库,需要对文档进行加工预处理,才能更好的进行数据匹配。
评价一个知识库的好坏,目前的标准就是召回率,英文是recall。那么,如何理解知识库的召回率呢?本文结合dify大模型平台,谈谈知识库的recall召回率。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10@22h2,docker@28.0.4,dify@1.3.1,weaviate@1.19.0。
dify分割方式
在本文中,是以dify平台的知识库搭建为前提的。前置阅读文章如下:
docker,https://newsn.net/say/docker-win.htmldify,https://newsn.net/say/dify.html- 知识库,https://newsn.net/say/dify-weaviate.html
测试情况下,会随便在知识库里面的上传一些文章使用。分割方式,可以选择:
- 默认的分割方式。
- 或者父子分段模型。
- 或者自行对文档加工后,再对分段模型参数进行调整。
知识库这些不同的调整方式,谁更加好一些呢?这个评判标准就是recall召回率。
评价标准:召回率
在dify的界面上,有召回率recall的显示位置。如下图所示:

每次用户提问,都涉及到召回率统计的问题。也就是说:召回率是针对用户的提问而产生的。召回次指的是系统成功从知识库中找到相关文档的次数,而召回率则是衡量系统能够找到所有相关文档的比例。

苏南大叔的理解:召回率(查全率),讲求一个目标数据的发现率,宁可错杀一百,不可放过一个。只要目标数据都找到,有多少被误判的都无所谓。
举例:出库的一大车食品货物里面,有一箱过期食品。结果把两大车货物又拉回来了,那么召回率是100%。即使绝大多数货物都是没有问题的。
在通用企业级知识库问答场景中,Dify的召回率约为75%。例如,在处理3000+事项的智能匹配任务时,通过向量检索和语义分析技术可缩小候选范围,但需结合大模型精排提升最终准确率。
召回模式配置
支持N选1召回模式(单知识库精准检索)和多路召回模式(多源并行检索),用户可通过优化数据集描述提升领域匹配精度。例如,技术文档库通过明确标注“包含API接口说明和开发指南”等特征,系统可精准匹配用户提问。
召回测试与调优
提供文本召回测试功能,用户输入问题后可模拟检索过程并查看内容块匹配分数。通过调整TopK值(召回分段数量)和召回阈值(最低相似分数),可平衡检索范围与相关度。例如,分数阈值设为0.8时,仅召回与问题高度相关的内容。
提升召回率
在网络上,有两种说法。
- 一种是说召回率越高越好。
- 另外一种说召回率保持在75%左右越好。
苏南大叔个人觉得既然选择召回率作为评判指标了。那么,还是应该尽可能的高一些更好吧。
影响因素:
知识库规模与质量:大规模知识库或复杂文档结构可能降低召回率,需通过分块策略(如动态分块、语义分析)优化。
模型适配与调优:接入不同大语言模型(如GPT、Llama3)时,需定制化prompt工程以减少信息丢失。
提升手段:
若需提升召回率,可优先采用混合检索架构(向量+关键词匹配),并针对高价值数据(如合同条款)进行模型微调或分块细化处理。
在金融合同条款检索等垂直领域(如Milvus混合检索),Dify的召回率可达78%,这得益于其向量检索与关系型数据库的结合使用。
分段优化(如父子模式)可进一步提升局部召回效果,例如测试中父子模式的召回率分别为0.63和0.72。
参考文章
在以前的机器学习的领域里面,也有类似的召回率概念,用于评价模型的好坏。参考文章:
结语
在本文中,苏南大叔初步引入了知识库的评价体系:recall召回率的概念。这个召回率的概念,实际上是不计成本的增加找到目标数据的方法。但是在知识库查询的时候,是有个topn的概念的,所以,这个不计成本也是有范围概念的。
召回率是评价“知识库”的,每个dify插件都是可以使用“知识库”的。所以,召回率是和“知识库”严密相关的。所以,是通过下面的位置进行查看的。
更多dify相关经验文字,请点击: