九章智算云

用 Dify 搭一个带知识库的 RAG 客服

Dify 是一个开源的 LLMOps 平台,不需要深厚的 AI 背景就能搭起一个 AI 应用,自带知识库管理、Prompt 编排、模型供应商切换等能力。本文演示在 VKS 上部署 Dify,并基于自家业务数据搭一个智能客服。

不同智算中心的 YAML 配置可能因建设差异而有所变化。本实践以"北京一区/二区/三区"为例,实际应用时请根据目标智算中心的具体信息调整YAML文件中的相关配置。

前提条件

  • 用户已开通弹性容器集群,且集群可正常使用。如尚未开通,可参考开通弹性容器集群完成开通。

  • 用户已连接弹性容器集群,如尚未连接,可参考使用弹性容器集群

  • 准备好待使用的业务数据,格式可为:PDF、Word或者文本。

一键部署 Dify

按 VKS 所在分区下载对应的部署文件(北京一区/二区/三区分别有各自 yaml)。下面以北京一区为例:

北京一区-部署文件
北京二区-部署文件
北京三区-部署文件

执行以下命令,完成Dify的启动。

kubectl apply -f dify.yaml

启动成功后查询访问地址:

kubectl describe serviceexporter dify-web-se -n dify

输出里url 字样后面就是网页链接。注意 VKS 对外端口固定为 22443,访问形如:

https://<域名>:22443

首次进入系统的初始密码为 password

Dify 应用

申请大模型 API Key

  1. 每一次大模型信息的调用都需要消耗对应的token,需要通过各个大模型供应商的官方渠道申请对应的API Key。API Key申请成功后,在设置/模型供应商选择对应的供应商,然后添加模型,模型类型、模型名称都要以模型供应商的为准,最后填入申请的API Key,保存即可。

    添加模型

  2. 如果要接入自己用 Xinference 部署的模型(比如 QwQ),按下图选择 Xorbits Inference

    Xinference 供应商

  3. 然后根据xinference的部署情况填写模型名称、服务器URL以及模型UID,保存后即可使用通过xinference部署的模型。

    Xinference 接入

创建知识库

在知识库中可以构建包含自己业务数据的知识。

  1. 首先选择数据源,可以从现有的文件、Notion以及Web站点导入,也可以直接创建一个空的知识库。

    创建知识库 - 选源

  2. 然后可以将相关业务数据的文档上传到知识库中,Dify会帮助你完成文本的分段与清洗,索引方式有高质量和经济两种,我们推荐使用高质量的方式(需申请模型供应商的API Key),虽然它会消耗一定的token,但是能够大大提高准确性。 创建知识库 - 索引

  3. 最后保存并处理,等待文本嵌入后即可完成知识库的创建。

    创建知识库 - 完成

创建应用

Dify启动后,可以在工作室中,选择创建空白应用,基于使用场景选择应用类型以及编排方法,填写应用的名称描述,即可完成基础应用的创建

创建应用

应用创建完成,可以进行Prompt编排、添加开场白、绑定知识库、模型选择以及对话聊天。

  • Prompt编排:让应用扮演智能客服的角色与用户进行交流,可以对应用进行限定,如使用的语气、回答问题的范围等。
  • 添加开场白:旨在用户打开聊天窗口时,应用会先与用户打招呼,增加聊天的亲切感。
  • 绑定知识库:添加上传的业务数据知识库。
  • 模型选择:选择不同供应上的模型,在此基础上调节该模型的参数。
  • 对话聊天:在一系列初始化完成后,可以基于业务数据对应用进行问答。

应用对话

应用绑定知识库

我们回到创建的应用,在上下文处添加选择创建好的业务数据相关的知识库,添加后即可完成知识库的绑定。

绑定知识库

调试并发布

通过对话调试看回答是否符合预期;OK 后点发布,就能拿到对外的 Web/API 入口给业务方接入。

总结

Dify 的卖点是把 LLM、知识库、Prompt 模板、调用接口拼到一个 UI 里,让搭智能客服这件事从「写一堆 RAG 代码」变成「点点鼠标」。配合 VKS,模型推理和应用本身都可以跑在同一个集群里,数据不出域。

最后更新于

这篇文档对你有帮助吗?

目录