从 0 打造企业级知识库,接入钉钉,使用最强DeepSeek R1、Claude 3.7等模型(硬核·玩转大模型 09)

从 0 打造企业级知识库,接入钉钉,使用最强DeepSeek、Claude 3.7等模型(硬核·玩转大模型 09)

本期教程所用到的项目:

  • LangBot:
  • Dify:
    • https://dify.ai/zh
    • 全球领先的开源的 LLM 应用开发平台

第一部分:安装 LangBot 和 Dify

连接云服务器

没有服务器的,参考此教程:https://blog.thelazy.top/archives/1737724407243

⚠️⚠️⚠️ 注意!!!!

⚠️⚠️⚠️ 注意!!!!

⚠️⚠️⚠️ 注意!!!!

Dify 要求机器至少(否则会死机):

  • CPU >= 2 Core
  • RAM >= 4 GiB

image-20250301165935545

安装宝塔

打开阿里云控制台

进入服务器管理界面

点击远程连接

打开宝塔安装页面:https://www.bt.cn/new/download.html

在服务器输入这条指令

然后输入 y 并回车

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

打开提示的外网地址,输入用户名、密码即可

⚠️如果打不开,很有可能是没放行端口

打开阿里云控制台,进入服务器管理页面

点击安全组

image-20250301164538946

点击管理规则

image-20250301164632422

点击手动添加

目的:输入你要放行的端口,例如 5300 之类,可以用逗号隔开多个

源:选择所有IPv4

image-20250301164851279

安装 LangBot

点击侧边栏的Docker -> 应用商店,搜索LangBot(注意大小写),点击安装,使用默认配置

稍等一段时间,可以看到提示名为langbot_XXXX的容器显示运行中

bt_langbot_01.vG4vkN3I

点击上图中红色圆圈查看运行日志

查看LangBot容器运行日志

可以看到WebUI的配置页面(可视化配置页面)的外网和内网访问路径,复制公网地址,例如http://xxx.xxx.xxx.xxx:5300(xxx.xxx.xxx.xxx为宝塔面板IP,5300为端口号,可能变化,具体如图)

打开后输入管理员邮箱和密码,然后点击初始化

然后就可以在可视化界面进行配置了

安装 Dify

写此文字教程是,dify 最新版本为 v1.0.0,但是 bug 疑似有点多,保守起见使用了上个版本 v0.15.3

点击宝塔面板左侧的 终端

依次输入以下指令

git clone https://github.com/langgenius/dify.git --branch 0.15.3
cd dify/docker
cp .env.example .env
sed -i "/^EXPOSE_NGINX_PORT=/c\EXPOSE_NGINX_PORT=8088" .env
docker compose up -d

耐心等待容器创建完成

然后打开http://xxx.xxx.xxx.xxx:8088,xxx 为你的服务器公网 ip

第二部分:构建知识库助手

打开http://xxx.xxx.xxx.xxx:8088,xxx 为你的服务器公网 ip

输入信息,创建一个管理员

设置模型

点击右上角头像

点击模型供应商

找到OpenAI-API-compatible

image-20250301190645972

点击 此页面,获取 API 令牌(选择标准分组,设置无限额度,千万不要限制模型)

没有账户的话,先去注册一个

点击注册:注册页面

接下来依次添加如下模型(URL 填入https://api.qhaigc.net/v1,API key 填入刚才复制的令牌)

  • deepseek-reasoner,选择 LLM

image-20250301211137800

  • claude-3-7-sonnet-20250219,选择 LLM

image-20250301211152224

  • bge-m3,选择 Text Embedding

image-20250301211217397

同理可得,添加其他平台/其他模型均可在此处找到添加方式

然后找到 Jina,如图,点击添加模型 bge-reranker-v2-m3,选择 Rerank

image-20250301211103114

image-20250301210755077

embedding 模型

https://zh.wikipedia.org/zh-cn/%E8%AF%8D%E5%B5%8C%E5%85%A5

Embedding模型是将文本(如用户查询或知识库文档)转换为向量的技术,用于语义匹配和检索。

作用:

  • 将用户查询和知识库文档编码为向量,便于通过相似度计算(如余弦相似度)快速检索出与用户问题相关的内容。
  • 支持语义检索,能够理解文本的含义,而不仅仅是关键词匹配。

rerank 模型

Rerank模型是对初步检索到的候选文档进行重新排序的模型,目的是提升检索结果的相关性和准确性。

作用:

  • 在Embedding模型召回的候选文档中,进一步筛选出与用户查询最相关的文档。
  • 优化最终输入到生成模型的文档质量,提升生成答案的准确性。

创建知识库

点击创建

上传知识库文件

视频演示中的示例知识库文件:

网盘链接:https://pan.thelazy.top/s/AOf3

密码:20250301

下载其中的 示例知识库文件.zip

通用模式

  • 场景:快速检索和简单问答,对上下文依赖较小。
  • 例子:在智能客服中,用户问题较为简单,只需从文档中提取关键信息即可回答。
  • 优势:分段简单,处理速度快,适合处理大量简单文档。
  • 适合场景:简单的FAQ文档、列表形式的内容、短篇技术文档等分段独立的文本

父子检索

  • 场景:需要精准检索且依赖上下文信息。
  • 例子:在复杂的技术支持场景中,用户问题可能涉及多个细节,需要结合上下文才能准确回答。
  • 优势:通过子分段匹配问题,父分段补充上下文,回答更准确、更完整。
  • 适合场景:文档是长篇的技术手册,用户可能需要结合上下文理解某个细节
  • 分段标识符:一个\n表示一个回车,分隔符是用于分隔文本的字符。Inln
    和\n是常用于分隔段落和行的分隔符。用逗号连接分隔符(\n\n,\n),当
    段落超过最大块长度时,会按行进行分割。你也可以使用自定义的特殊分
    隔符(例如***)
  • 分段最大长度:一个分段(一个 Chunk)的最大 Token 数量
  • 分段重叠长度:设置分段之间的重叠长度可以保留分段之间的语义关系,提升召回效果。
    建议设置为最大分段长度的10%-25%
  • 使用 Q&A 分段,就是使用 LLM 来对分段提问,把一个分段变成一个问答形式

索引方式:直接高质量就行

Embedding 模型:就是前面添加的 Text Embedding 模型

检索设置:推荐选择混合检索

  • 权重设置:考虑到大多数问题不能很准匹配关键词,我一般设置语义0.8,关键词 0.2

  • Rerank 模型:就是刚才所设置的 Rerank 模型

  • Top K:返回的符合最低 Score阈值的分段数量有几个,默认为 3 个,不是越多越好,要结合 Score 阈值和模型上下文能力一起调整

  • Score 阈值:每个分段有个 Score 值,来表示相似度,越大越相似,太低的可能就不相关了,所以通过设置这个阈值来限制低于多少的就不要了,默认一开是 0.5,分段相似度低于 0.5 的就不要了

    TopK 和 Score 阈值怎么调?

    因为不同知识库文件内容不同,所以不能固定

    方法:创建知识库完成后,可以测试,输入问题,测试,调整这两个值,再测试再调整,用多个问题反复下去,能调出一个比较理想的情况)

点击保存并处理

耐心等待知识库创建完成

创建工作流

点击工作室

点击导入 DSL

示例工作流:

网盘链接:https://pan.thelazy.top/s/AOf3

密码:20250301

下载其中的 知识库助手.yml

然后将其拖入到上传区域

image-20250301122705148

点击右上角发布

发布为 API

复制 API 密钥

第三部分:配置机器人

基础接入

打开 钉钉开放平台

登录并且进入组织

登录成功后进入开放平台

image-20250302000135847

点击上方的 应用开发,然后点击右面蓝色的按钮 创建应用,填写机器人的基本信息,点击保存

进入机器人的后台,比如我们有机器人LangBot知识库助手,那么它的管理页面是这样的:

image-20250302000421047

点击 添加应用能力其他应用能力机器人中的 配置,点击配置并且填写信息之后,如下图

image-20250302001234010

点击创建新版本,在其中设置信息,然后设置应用可见范围,点击保存

image-20250302001511453

点击应用能力机器人,记录下 RobotCode 和 机器人名称

image-20250302002005586

点击凭证与基础信息,记录Client IDClient Secret

image-20250302001355126

打开http://xxx.xxx.xxx.xxx:5300,xxx 为你的服务器公网 ip

输入一个用户名和密码,并保存

然后根据视频操作

配置钉钉机器人接入,配置完成点击应用

URL 为:http://xxx.xxx.xxx.xxx:8088/v1image-20250302003228687

关闭跟踪内容函数调用

image-20250302003730239

接下来是配置 Dify 知识库接入,配置完成点击应用

image-20250302003046137

请求运行器设置为dify-service-api

image-20250302004003116

配置完成后,回到宝塔面板的 docker 页面

image-20250302004556716

点击重启 LangBot

耐心等待一段时间就重启完成了

点击钉钉群的群管理机器人添加机器人,然后搜索机器人名称就可以在群中使用

群内@机器人即可

设置管理员

按下图查看日志

红框内的就是要填的值

image-20250302012703010

然后打开 LangBot 控制面板,填入即可

image-20250302012839973

赞助

1737883095119.jpg b28733500368d1b78092d59ce1a045c1.png

从 0 打造企业级知识库,接入钉钉,使用最强DeepSeek R1、Claude 3.7等模型(硬核·玩转大模型 09)
https://blog.thelazy.top/archives/1740895853428
作者
Administrator
发布于
2025年03月02日
更新于
2025年03月06日
许可协议