Dify使用教程(创建知识库)

Dify的应用创建在上一篇已经说过了,这一篇我们来聊聊【知识库】怎么创建。

一、创建知识库

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

图片

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

1、创建知识库

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

图片

创建空知识库

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

图片

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

图片

图片

导入已有文本

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

图片

在做这件事之前,我偷了个懒,利用火山引擎的满血DeepSeek-R1大模型帮我临时生成了一份“仪器行业的客服知识问答语料库”,在官网经常无服务的情况下,我也用过几个第三方的满血大模型,对比一下发现腾讯元宝和火山引擎的满血大模型最好用,反应速度上很快,如果还没第三方的满血DeepSeek大模型的小伙伴,可以用我的推荐码【1I4LGAPN】注册,能够得到15元的大模型代金券,正常使用可以用好久了!

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

图片

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

图片

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

分段模式

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

图片

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

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

分段标识符

默认值为 \n,即按照文章段落进行分块。你可以遵循正则表达式语法自定义分块规则,系统将在文本出现分段标识符时自动执行分段。

分段最大长度

指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens;

分段重叠长度

指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%;

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

图片

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

图片

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

其基本机制如下:

子分段匹配查询

1.将文档拆分为较小、集中的信息单元(例如一句话),更加精准地匹配用户所输入的问题。

2.子分段能快速提供与用户需求最相关的初步结果。

父分段提供上下文

1.将包含匹配子分段的更大部分(如段落、章节甚至整个文档)视作父分段并提供给大语言模型(LLM)。

2.父分段能为 LLM 提供完整的背景信息,避免遗漏重要细节,帮助 LLM 输出更贴合知识库内容的回答。

图片

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

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

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

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

图片

索引方式

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

图片

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

图片

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

图片

向量检索

向量化用户输入的问题并生成查询文本的数学向量,比较查询向量与知识库内对应的文本向量间的距离,寻找相邻的分段内容。

全文检索

关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。

混合检索

同时执行全文检索和向量检索,或 Rerank 模型,从查询结果中选择匹配用户问题的最佳结果。

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

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

图片

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

图片

图片

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

图片

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

2、链接外部知识库

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

图片

图片

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

图片

目前我手头没有可以关联的外部知识库,我知道的是RagFlow的知识库是可以作为外部知识库,有动手能力的可以去研究下,因为这块对于Dify来说实际上主要是配置设置好外部知识库的相应关键参数即可,所以我也没有太过仔细研究,等我有空部署RAGFlow的时候,到时候可以配置一下,感兴趣的小伙伴可以关注我后续的发文。

### 使用 Dify知识库搭建项目或应用 #### 选择合适的环境配置 为了确保项目的顺利运行,在开始前需确认已安装并配置好所需的依赖项和工具。对于Windows用户来说,可能会遇到一些特有的挑战,因此建议参考专门针对该操作系统的部署指南来解决可能碰到的问题[^1]。 #### 初始化Dify平台 获取访问权限后,应立即将获得的密钥集成到Dify环境中。这一步骤至关重要,因为它不仅激活了服务还解锁了一系列高级特性支持后续更复杂的应用场景构建[^2]。 #### 构建个性化知识体系 通过创建定制化的资料集合——即所谓的“知识库”,能够极大地提升应用程序的功能性和智能化水平。此过程涉及定义数据结构、上传相关文件以及设置索引参数等多个方面的工作。 #### 开发交互界面 完成上述准备工作之后便可以在工作室里着手设计具体的对话逻辑或是其他形式的人机交流机制。值得注意的是,利用提示词功能可有效引导AI产出更加贴合预期的结果,例如强制包含特定关键词句等特殊要求都能轻松实现。 #### 发布与维护 最后当一切就绪之时,则可通过简单的点击动作将其正式对外公开投入使用。与此同时持续关注反馈信息以便及时调整优化现有方案,从而保证长期稳定高效运作[^3]。 ```python # 示例代码:连接至Dify API并发送请求 import requests def query_dify_api(prompt, api_key): url = "https://api.dify.ai/v1/query" headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' } payload = {"prompt": prompt} response = requests.post(url, json=payload, headers=headers) return response.json() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wal1314520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值