Skip to content

Dify实战 - 基于知识库的智能客服

知识库的概念

大语言模型的训练数据一般基于公开的数据,它的训练数据有多个互联网文本语料库,覆盖线上书籍、新闻、文章、科学论文、维基百科、社交媒体帖子等等海量的文本。 大语言模型每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。

举个例子,目前流行的企业客服智能机器人,它能够回答企业销售的产品问题。这就是知识库的应用。因为如果没有知识库,大语言模型能够回答企业销售的产品问题吗?显然是不能的,因为这些资料都是企业私有的,而大语言模型并没有提前学习这部分私有知识。

为了解决这一问题,目前通用的方案是采用 RAG(检索增强生成)技术,使用用户问题来匹配最相关的外部数据,将检索到的相关内容召回后作为模型提示词的上下文来重新组织回复。

我使用ChatGPT-4 虚拟创建了HomeSmartX1产品说明书的产品文档,点击 HomeSmartX1产品说明书.txt下载。 这个文档是公开互联网上没有的资料,刚好可以作为我们的私有知识库。

RAG流程

RAG

知识库处理

分段和清洗

分段和清洗

索引

索引

检索设置

检索设置

Rerank模型

Xinference本地部署rerank模型。

xinference

xinference

Dify配置rerank模型。

Dify

检查分段质量

文档分段对于知识库应用的问答效果有明显影响,在将知识库与应用关联之前,建议人工检查分段质量。

检查分段质量时,一般需要关注以下几种情况:

  • 过短的文本分段,导致语义缺失

过短的文本分段

  • 过长的文本分段,导致语义噪音影响匹配准确性

过长的文本分段

  • 明显的语义截断,在使用最大分段长度限制时会出现强制性的语义截断,导致召回时缺失内容

明显的语义截断

召回测试

召回测试

创建客服应用

基于工作流的聊天客服应用:

创建客服应用

召回模式

当用户构建知识库问答类的AI 应用时,如果在应用内关联了多个数据集,Dify 在检索时支持两种召回模式:N选1召回模式和多路召回模式。

  • N选1召回模式

适合数据集区分度大且数据集数量偏少的应用。

根据用户意图和数据集描述,由 Agent 自主判断选择最匹配的单个数据集来查询相关文本。

N选1召回模式

  • 多路召回模式

当创建的知识库问答应用关联了多个数据集时,我们更推荐将召回模式配置为多路召回。

多路召回模式

提示词Prompt

提示词

演示

演示

演示

演示