🚀 目标:创建一个知识库的入门案例,实现《阿里巴巴 Java 开发手册》小助手。

⭐ DSL:阿里巴巴Java开发手册小助手.yml

准备知识库

下面,我们创建一个新的知识库,并在后续的 Chatflow 中引用它。

第 1 步:上传文档

首先,我们点击“创建知识库”按钮。

其次,我们将《阿里巴巴 Java 开发手册 1.4.0.pdf》文档上传。

然后,点击“下一步”。

第 2 步:文本分段与清洗

分段设置:选择父子分段 + 段落作为上下文。在相同文档中,采用父子检索提供的上下文信息会更全面,且在精准度方面也能保持较高水平,大大优于传统的单层通用检索方式。同时,在父子模式中,如果文本量较大,内容清晰且段落相对独立,则使用段落作为父分段,如果文本量较小,但段落间互有关联,需要完整检索全文,则采用全文作为父分段。

索引方式:选用高质量 + 混合检索方式。使用 Embedding 嵌入模型将已分段的文本块转换为数值向量,帮助更加有效地压缩与存储大量文本信息;使得用户问题与文本之间的匹配能够更加精准。将内容块向量化并录入至数据库后,需要通过有效地检索方式调取与用户问题相匹配的内容块。注意:选择高质量索引方式后,无法降级到经济索引模式。如需切换,只能重建。

第 3 步:查看创建的知识库

刚创建的知识库,还需要调用 Embedding 模型做向量化及存储,需要一点时间才能完成。

嵌入完成后的知识库如下:

第 4 步:检查分段

检查分段的目的:保证分段的质量。

  • 过短的文本分段,会导致语义缺失。
  • 过长的文本分段,导致语义噪音影响匹配准确性。
  • 明显的语义截断,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时内容缺失。

通过下面的步骤来检查分段。点击文档所在行后面的“分段设置”图标:

然后,进入到分段设置页面,点击“预览块”按钮,即可预览分块效果。

从检查结果来看,分段还算合理。

第 5 步:召回测试

召回测试的目的:检测分段质量,确定是否能召回合适的分段。

召回测试步骤

首先,召回测试也是测试的范畴,遵循基本的测试原理,即编写测试用例、执行测试用例等操作。

因此,召回测试的步骤如下:

1、设计和整理能够覆盖用户常见问题的测试用例/测试问题集/指引内容;

2、根据内容特点和使用常见(是否为问答内容、是否涉及多语言问答等),选择合适的索引策略;

3、调整召回分段数量(TopK)和召回分数阈值(Score),根据实际的应用常见、包括文档本身的质量来选择合适的参数组合。

如何配置 TopK 和 Score 参数

这两个参数调大或者调小,都会影响召回的质量,并对最终结果产生影响。

1️⃣ TopK 表示按相似度分数倒排时召回分段的最大个数。

  • TopK 调小,将召回越少的分段,可能导致召回的相关文本不全;
  • TopK 调大,将召回更多的分段,但可能找到召回语义相关性较低的分段,使得 LLM 回复质量降低

2️⃣ **Score **召回分数阈值,表示运行召回分段的最低相似分数。

  • Score 调小,将会召回更多分段,可能导致召回相关度较低的分段;
  • Score 调大,将召回更少分段,过大可能会导致无法召回分段;

实际案例

前面,我们设置了 TopK 为 3,Socre 阈值为 0.5。即召回 3 个分段,且分数必须高于 0.5。

示例 1:“日志需保留多久?”召回了 1 个子分段,Score 为 0.66。

示例 2:取消 Score 阈值限制,即不管 Score 是多少。可以看到,“生产日志级别”返回了两个子分段,一个 score 为 0.47,一个 score 为 0.28。

创建 Chatflow 应用

下面,创建一个 Chatflow,实现从知识库中检索并回复用户。

完整的工作流截图如下:

创建空白应用

首先,创建一个 Chatflow 应用。

配置“知识检索”节点

在“开始”节点后,添加“知识检索”节点并配置。

1、查询变量:使用 sys.query,即用户输入的内容。

2、知识库:引用《阿里巴巴 Java 开发手册 1.4.0》知识库

3、知识库召回设置:使用 Rerank 模型重排序,TopK 设置为 4,不限制 Score 阈值。

配置“LLM”节点

在“知识检索”节点后新增“LLM”节点并设置。

1、大模型:选择 DeepSeek-R1。

2、上下文:引用知识库的返回结果。

3、SYSTEM 提示词:告诉 LLM 要引用知识库,不知道的就说不知道。

4、USER 提示词:直接使用用户提出的问题。

配置“直接回复”节点

最后,在“LLM”节点后,配置“直接回复”节点,即直接将 LLM 的输出返回给用户。

配置“归属与引用”

点击“功能”,勾选“引用和归属”,这样回答用户的时候,就能把知识库的引用部分也显示出来。

预览应用

点击“预览”按钮,即可预览应用。输入“日志需保留多久?”即可调试。

发布应用

最后,点击“发布”,可将应用发布。点击“运行”,即可打开一个新页面,即当前 Chatflow 应用。

使用 Chatflow

点击“运行”,即可打开一个新页面,即当前 Chatflow 应用。如下图所示:

输入“日志需保留多久”,然后就会运行工作流并返回知识库的引用结果。

至此,Dify 知识库案例介绍完毕!🚀

参考

1.Dify: Leading Agentic AI Development Platform

2.Knowledge - Dify Docs

相关博文

1.第 1 篇 Linux 下部署 Dify 1.7.1
2.第 2 篇 Dify 插件离线安装
3.第 3 篇 Dify 入门示例 - 聊天助手
4.第 4 篇 Dify 示例:数据库执行Agent
5.第 5 篇 Dify 报错解决:The length of output variable xxx must be less than 30 elements
6.第 6 篇 Dify 接入大模型并使用
7.第 7 篇 Dify 应用介绍 + 聊天助手&Agent 应用关键点说明
8.第 8 篇 RAG 必知概念及原理详解
9.第 9 篇 Dify 知识库原理详解
10.第 10 篇 Dify 知识库手把手案例
11.第 11 篇 Dify 入坑记录:插件安装报错,[ERROR]init environment failed_ failed to install dependencies
12.第 12 篇 Dify 入坑记录:database插件连接未关闭
13.第 13 篇 Dify 工作流 详解
14.第 14 篇 Dify 知识库检索,如何返回完整文档?
15.第 15 篇 Dify 应用发布与被集成的7种方式
16.第 16 篇 Dify 记忆 & mem0 插件实战
17.第 17 篇 Dify 1.7.1 → 1.11.1 完整升级指南:避开那些必踩的坑

18.第 18 篇 Dify 工具调用报错:tool invoke error validation error for VariableMessage_n Value error, Only basic
19.第 19 篇 手把手教你开发 Dify 插件:从零实现一个时间工具
20.第 20 篇 Dify插件开发进阶:常规开发 & 反向调用

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐