任务链接:https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/Huixiangdou/task.md
文档链接:https://github.com/InternLM/Tutorial/tree/camp3/docs/L2/Huixiangdou
目录
0. 背景
1. Web 版茴香豆
1.1 茴香豆账户和密码
1.2 创建知识库
1.3 通过配置正反例调优知识助手效果
1.4 在微信群或飞书群内使用茴香豆助手
2. 茴香豆本地标准版搭建
2.1 安装茴香豆
2.2 更改配置文件
2.3 知识库搭建
2.4 测试知识助手
2.4.1 命令行运行
2.4.2 Gradio UI 界面测试
2.5 集成飞书&微信群聊(略)
3 茴香豆高阶应用
3.1 开启网络搜索
茴香豆 是由书生·浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成本。在实际的生产和生活环境需求,对 RAG 系统的开发、部署和调优的挑战更大,如需要解决群应答、能够无关问题拒答、多渠道应答、更高的安全性挑战。因此,根据大量国内用户的实际需求,总结出了三阶段Pipeline的茴香豆知识问答助手架构,帮助企业级用户可以快速上手安装部署。
登录 OpenXLab浦源 - 应用中心,可以看到 Web 版茴香豆的知识库注册页面,在对应处输入想要创建的知识库名称和密码,该名称就是 Web 版茴香豆的账户和密码。
我们来创建一个民法典助手
问一个问题
飞书教程:Docs
茴香豆的所有功能开启和模型切换都可以通过 /root/huixiangdou/config.ini 文件进行修改
执行下面的命令更改配置文件,让茴香豆使用本地模型
知识库搭建选用的是茴香豆和 MMPose 的文档,利用茴香豆搭建一个茴香豆和 MMPose 的知识问答助手。 repodir 文件夹用来储存知识库原始文档; workdir 文件夹用来存放原始文档特征提取到的向量知识库。
知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,关于“mmpose 安装”的问题,测试结果可以很好的反馈相应答案和对应的参考文件,但关于“std::vector 使用”的问题,因为属于 C++ 范畴,不再在知识库范围内,测试结果显示拒答,说明我们的知识助手工作正常。
和 Web 版一样,本地版也可以通过编辑正反例来调整茴香豆的拒答和响应,正例位于 文件夹中,反例位于。
需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 命令进行向量知识库的重新创建和应答阈值的更新。
配置中可见,在运行过一次特征提取后,茴香豆的阈值从 -1.0 更新到了 0.33。 配置文件中的 参数指定了特征提取后向量知识库存放的位置。如果有多个知识库快速切换的需求,可以通过更改该参数实现。
2.4.1 命令行运行
Example 中有两个问题:
1. 请问如何安装 mmpose ?
2. 请问明天天气如何?
显然第一个问题是可以在知识库中找到的,而第二个需要联网查询,让我们观察以下的输出:
前面拼接了一系列的 prompt,这里开始在文档中进行查询
针对第二个问题
网络搜索功能没有开启,查询失败
2.4.2 Gradio UI 界面测试
启动 Gradio
启动成功
茴香豆助手搭建在远程服务器上,因此需要先建立本地和服务器之间的透传,透传默认的端口为 ,在本地机器命令行中运行如下命令:
Gradio 界面,来问它一个问题
看一下命令行的输出
本地版茴香豆的群集成和 Web 版一样,需要有公网 IP 的服务器,微信仅支持特定 Android 版本。
飞书集成:
-
教程 HuixiangDou/docs/add_lark_group_zh.md at main · InternLM/HuixiangDou · GitHub
开启网络搜索功能需要用到 Serper 提供的 API:
-
登录 Serper ,注册:
-
进入 Serper API 界面,复制自己的 API-key
编辑 /root/huixiangdou/config.ini,替换为自己的 API-key。其中 可以设置网络搜索的范围。
开启网络搜索,再问一个问题
最后生成了我们需要的答案
再问一个问题
我们知道,网络搜索的范围主要有以下网站,没有用来查询天气的网站
检查一下命令行,是有搜索的结果的,但是没有被最终放入 prompt 中
原因是分数没有超过阈值,说明这个问题与知识库的相似度太低