茴香豆:企业级知识库问答工具
基础任务(完成此任务即完成闯关)
- 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手,并使用 Gradio 界面完成 2 轮问答(问题不可与教程重复,作业截图需包括 gradio 界面问题和茴香豆回答)。知识库可根据根据自己工作、学习或感兴趣的内容调整,如金融、医疗、法律、音乐、动漫等(优秀学员必做)。
知识库创建
修改完配置文件后,就可以进行知识库的搭建,本次教程选用的是茴香豆和 MMPose 的文档,利用茴香豆搭建一个茴香豆和 MMPose 的知识问答助手。
conda activate huixiangdou
cd /root/huixiangdou && mkdir repodir
git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou
git clone https://github.com/open-mmlab/mmpose --depth=1 repodir/mmpose
# Save the features of repodir to workdir, and update the positive and negative example thresholds into `config.ini`
mkdir workdir
python3 -m huixiangdou.service.feature_store
在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库。
上传自己的数据
上传一本关于哲学的书
和 Web 版一样,本地版也可以通过编辑正反例来调整茴香豆的拒答和响应,正例位于 /root/huixiangdou/resource/good_questions.json
文件夹中,反例位于/root/huixiangdou/resource/bad_questions.json
。
配置自己的good_question.json
import json
# 在列表中填入自己的问题并用逗号分隔
data = [
"question1",
"......" ,
"question20"
]
# 将字典转换为JSON字符串,并保存到文件
with open('new_good_questions.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store
命令进行向量知识库的重新创建和应答阈值的更新。
代码在huixiangdou/service/feature_store.py中,实现逻辑是判断文件类型,如果是文字类型的文件就将里面的文字进行读取,否则跳过。
运行修改后的内容,更新知识库
python3 -m huixiangdou.service.feature_store --good_questions resource/new_good_questions.json
测试知识助手
命令行运行
运行下面的命令,可以用命令行对现有知识库问答助手进行测试:
conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.main --standalone
通过命令行的方式可以看到对话的结果以及中间的过程,便于我们确认知识库是否覆盖需求,正反例是否合理。
Gradio UI 界面测试
茴香豆也用 gradio
搭建了一个 Web UI 的测试界面,用来测试本地茴香豆助手的效果。
本节课程中,茴香豆助手搭建在远程服务器上,因此需要先建立本地和服务器之间的透传,透传默认的端口为 7860
,在本地机器命令行中运行如下命令:
ssh -CNg -L 7860:127.0.0.1:7860 root@ssh.intern-ai.org.cn -p <你的ssh端口号>
在运行茴香豆助手的服务器端,输入下面的命令,启动茴香豆 Web UI:
conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.gradio
运行截图
成功匹配到需要检索的文档