Dify的知识库优化方式
1. 知识库文件的格式
推荐使用 Markdown 格式,或者 txt 格式。
问:如何转化为markdown格式的文件?
表格内容:
https://www.eogee.com/tomd
注意:单元格内容的内容不要换行,否则会导致格式错误。
文本内容:minerU
https://github.com/opendatalab/MinerU
部署到本地,上传pdf word ppt 转化为md格式。
图片:
建议使用类似于gemma3等多模态识图模型,将图片内容结构化为文本内容。
最笨的办法:人为描述。
证明:知识库的搭建是个工程级别的工作,需要有专业的知识库工程师进行知识库的搭建,知识库的优化也是需要专业的知识库工程师进行的。
比如乙方,建议给甲方培训,或作为长期服务项目。
2. 分块的方式
2.1 按主题分块
dify默认使用 \n\n
进行分块,那么,就可以根据这种方式,自行对长文本内容进行自定义分块:
# 第一部分\n\n## 第一章### 第一节知识库的优化,是指对知识库的结构、内容、组织方式进行优化,以提高知识库的效率、准确性、及时性。其他的优化的内容还有:- 结构优化- 内容优化- 组织优化### 第二节知识库的优化,主要分为三个方面:结构优化、内容优化、组织优化。#### 结构优化结构优化,是指对知识库的层次结构进行优化,以提高知识库的易理解性、易检索性。#### 内容优化内容优化,是指对知识库的条目内容进行优化,以提高知识库的准确性、完整性。#### 组织优化组织优化,是指对知识库的组织方式进行优化,以提高知识库的易用性、易维护性。
2.2 块的长度
建议直接拉满,3999tokens,尽量保证每一块都是同一类型的知识。
分段重叠长度使用默认即可。
可以点击分块预览
查看分块效果。
2.3 块内的内容
经过大量验证,以下形式,问答响应效果较好:
### 知识库优化| 问题(question) | 内容(answer) || --- | --- || 如何转化为markdown格式的文件? | https://www.eogee.com/tomd || minerU | https://github.com/opendatalab/MinerU || 建议使用类似于gemma3等多模态识图模型,将图片内容结构化为文本内容。 | 最笨的办法:人为描述。 |### 知识库结构优化| 问题(question) | 内容(answer) || --- | --- || 知识库的优化,是指对知识库的结构、内容、组织方式进行优化,以提高知识库的效率、准确性、及时性。 | 其他的优化的内容还有:结构优化、内容优化、组织优化。 || 结构优化 | 结构优化,是指对知识库的层次结构进行优化,以提高知识库的易理解性、易检索性。 || 内容优化 | 内容优化,是指对知识库的条目内容进行优化,以提高知识库的准确性、完整性。 || 组织优化 | 组织优化,是指对知识库的组织方式进行优化,以提高知识库的易用性、易维护性。 |
3.推荐的嵌入模型
bge-m3
4.检索方式
4.1 向量检索
默认的原始rag检索办法,一堆一块儿呈现,大部分场景下,效果不好。
当文件内容,多次出现请求内容的关键词的时候,复杂的被向量了的知识结果(检索结果)因为本不相干,导致大模型的回答内容幻觉严重。
4.2 全文检索
类似于对于全文进行综合全面检索,对精准问题或关键字响应较好,但对于结构性、分析性的检索请求效果很差。
4.3 混合检索(推荐)
语义+向量的综合检索方式,占比需要根据知识库文件的内容及形式作反复判断和调整。0.3+0.7的比例还是0.7+0.3的比例呢?
5.超级长文本
结合脚本工具,对内容进行分割
根据长文本的目录或其他提示性结构内容,构建
知识库结构
或知识图谱
大模型作对应分析解答时,如果是片面的内容,则通过
知识库结构
再去结合具体内容,进行分析,注意此时使用的技术可能不是rag而是简单的上下文
;如果是全面的分析请求,则以知识库结构
为主并配合必要的解释说明,进行分析。
6.知识库检索效果优化
时间换空间:可以通过流程进行知识库或上下文的分类;对有层次递进的知识库,可以采用多节点渐进式访问;可以配合与用户的交互,进行范围的缩小和精准化检索。
7.知识图谱+上下文
知识图谱:为知识库内容构建结构化索引
上下文:将调取到的篇幅较小的内容,直接通过上下文的方式给到大模型进行分析,提高分析效率和准确率。
通俗讲:结构化之后的只是内容可以被一次性消化的话,就不去进行rag检索了,而是直接通过上下文的方式进行分析。