Dify使用教程—创建知识库

一、创建知识库

我们登录进了Dify后,选择“知识库”Tab,然后就可以看到下面页面的创建知识库卡片位置:

Dify使用教程---创建知识库

这块其实有两种,一种是直接创建知识库,另一种是链接外部知识库。我们先讲创建知识库:

1、创建知识库

点击【创建知识库】后,会跳转到创建知识库的配置选项页面,有三种数据源可以选择【导入已有文本】【同步自Notion内容】【同步自Web站点】,同时最下方可以创建一个空的知识库:

Dify使用教程---创建知识库

创建空知识库

点击“创建空知识库”,会弹出一个弹窗,填写知识库名称后,点击创建即可,在资料还没整理好的时候,可以先创建一个空知识库,在后续上传本地文档或导入在线数据:

Dify使用教程---创建知识库

创建完成后,会进入已经创建的这个空知识库内部,会显示没有文档的提示并有添加文件的按钮可以选择去添加,点击后会回到我们最开始的选择数据源的页面,只是已经没有创建空知识库的按钮选项了:

Dify使用教程---创建知识库
Dify使用教程---创建知识库

导入已有文本

无论是创建空知识库还是直接创建知识库,都需要走选择数据源这一步,所以我就一起讲了,先讲下导入已有文本。我们选择导入已有文本,然后把相关的文件拖拽或者点击选择文件去选择我们需要上传的文本文件,支持的种类也挺多,有“TXT、 MARKDOWN、 MDX、 PDF、 HTML、 XLSX、 XLS、 DOCX、 CSV、 MD、 HTM”,并且每个文件不超过15MB

Dify使用教程---创建知识库

在做这件事之前,利用火山引擎的满血DeepSeek-R1大模型帮我临时生成了一份“仪器行业的客服知识问答语料库”。

回归正题哈,我用DeepSeek帮我生成的文档,然后直接保存为MD格式(即markdown格式,以下都用简称MD),直接上传,点击下一步后,会进入到“文本分段与清洗”步骤:

Dify使用教程---创建知识库

上传完成后,需要对内容进行分段与数据清洗。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段,官方也对分段与清晰策略做了解释:

Dify使用教程---创建知识库

LLM 收到用户问题后,能否精准地回答出知识库中的内容,取决于知识库对内容块的检索和召回效果。匹配与问题相关度高的文本分段对 AI 应用生成准确且全面的回应至关重要。

分段模式

知识库支持两种分段模式:“通用模式”与“父子模式”。如果是首次创建知识库的话,建议选择父子模式。选定分段模式并完成知识库的创建后,后续无法变更分段模式,知识库内后续新增的文档也将遵循同样的分段模式。

Dify使用教程---创建知识库

在通用模式下,系统会按照用户自动以的规则将内容拆分为独立的分段。当用户输入问题后,系统自动分析问题中的关键词,并计算关键词与知识库中各内容分段的相关度。根据相关度排序,选取最相关的内容分段并发送给 LLM,辅助其处理与更有效地回答。

在该模式下,需要根据不同的文档格式或者场景要求,手动设置这三个分段规则:【分段标识符】【分段最大长度】【分段重叠长度】

分段标识符默认值为 \n,即按照文章段落进行分块。你可以遵循正则表达式语法自定义分块规则,系统将在文本出现分段标识符时自动执行分段。
分段最大长度指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens;
分段重叠长度指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%;

以及文本域处理规则,过滤知识库内部分无意义的内容。提供了两种选项,可以单选一种也可以两种都选上:

Dify使用教程---创建知识库

点击下方的“预览块”按钮,即可查看分段后的效果。可以直观地看到每个区块的字符数。如果重新修改了分段规则,需要重新点击按钮以查看新的内容分段。

Dify使用教程---创建知识库

在父子模式下,相较于通用模式,采用了双层分段结构来平衡检索的精确度和上下文信息,让精准匹配与全面的上下文信息二者兼得。其中,父区块(Parent-chunk)保持较大的文本单位(如段落),提供丰富的上下文信息;子区块(Child-chunk)则是较小的文本单位(如句子),用于精确检索。系统首先通过子区块进行精确检索以确保相关性,然后获取对应的父区块来补充上下文信息,从而在生成响应时既保证准确性又能提供完整的背景信息。你可以通过设置分隔符和最大长度来自定义父子区块的分段方式。

其基本机制如下:

子分段匹配查询1.将文档拆分为较小、集中的信息单元(例如一句话),更加精准地匹配用户所输入的问题。
2.子分段能快速提供与用户需求最相关的初步结果。
父分段提供上下文1.将包含匹配子分段的更大部分(如段落、章节甚至整个文档)视作父分段并提供给大语言模型(LLM)。
2.父分段能为 LLM 提供完整的背景信息,避免遗漏重要细节,帮助 LLM 输出更贴合知识库内容的回答。
Dify使用教程---创建知识库

父分段设置提供了【段落】和【全文】两种分段选项。

段落是根据预设的分隔符规则和最大块长度将文本拆分为段落。每个段落视为父分段,适用于文本量较大,内容清晰且段落相对独立的文档。

全文则不进行段落分段,而是直接将全文视为单一父分段。出于性能原因,仅保留文本内的前 10000 Tokens 字符,适用于文本量较小,但段落间互有关联,需要完整检索全文的场景。

子分段是在父文本分段基础上,由分隔符规则切分而成,用于查找和匹配与问题关键词最相关和直接的信息。如果使用默认的子分段规则,通常呈现以下分段效果;1.当父分段为段落时,子分段对应各个段落中的单个句子。2.父分段为全文时,子分段对应全文中各个单独的句子。

Dify使用教程---创建知识库

索引方式

索引方式提供了两种【高质量】和【经济】,并分别提供了不同的检索设置选项,如下图:

Dify使用教程---创建知识库

其中,高质量的索引方式,可以选择Embedding模型:

Dify使用教程---创建知识库

检索设置支持【向量检索】【全文检索】【混合检索】三种:

Dify使用教程---创建知识库
向量检索向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。
全文检索关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。
混合检索同时执行全文检索和向量检索,或 Rerank 模型,从查询结果中选择匹配用户问题的最佳结果。

三种方式的内部选项就不在一一赘述,大部分时候我们都是用的默认配置,感兴趣的欢迎一起留言讨论。

点击“保存并处理”后创建成功了:

Dify使用教程---创建知识库

同步自Notion内容和同步自Web站点

Dify使用教程---创建知识库
Dify使用教程---创建知识库

点击配置会弹出设置框,并定位到数据来源,可以进行绑定或设置

Dify使用教程---创建知识库

由于我没有Notion等信息,所以这块需要小伙伴们自行去尝试,也欢迎告诉我后续的步骤!

2、链接外部知识库

点击连接外部知识库,会跳转到对应的配置界面:

Dify使用教程---创建知识库
Dify使用教程---创建知识库

填写知识库名称、描述后,点击外部知识库API,会弹出添加外部知识库API的弹窗,需要填写相应配置后创建:

Dify使用教程---创建知识库

目前我手头没有可以关联的外部知识库,我知道的是RagFlow的知识库是可以作为外部知识库,有动手能力的可以去研究下,因为这块对于Dify来说实际上主要是配置设置好外部知识库的相应关键参数即可。

转载作品,原作者:wal1314520,文章来源:https://blog.csdn.net/wal1314520/article/details/145845830

(0)
打赏 微信赞赏 微信赞赏 支付宝赞赏 支付宝赞赏
上一篇 2025-04-08 09:26
下一篇 2025-04-09 14:05

相关推荐

发表回复

登录后才能评论
扫码了解
扫码了解
反馈建议
分享本页
返回顶部