一、任务介绍
- 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手,并使用 Gradio 界面完成 2 轮问答(问题不可与教程重复,作业截图需包括 gradio 界面问题和茴香豆回答)。知识库可根据根据自己工作、学习或感兴趣的内容调整,如金融、医疗、法律、音乐、动漫等(优秀学员必做)。
二、根据文档内容搭建环境
https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/Huixiangdou/readme.md
2.1、搭建茴香豆知识库
OpenXLab浦源 - 应用中心
2.2、上传文档到知识库
2.3、测试知识助手的效果
①中国神话故事
②年报数据
建议:上传的文档能够查看原文
2.4、通过配置正反例调优知识助手效果
在真实的使用场景中,调试知识助手回答相关问题和拒答无关问题(如闲聊)是保证回答准确率和效率十分重要的部分。茴香豆的架构中,除了利用 LLM 的功能判断问题相关性,也可以通过手动添加正例(希望模型回答的问题)和反例(希望模型拒答的问题)来调优知识助手的应答效果。
在 Web 版茴香豆中,点击添加正反例下的 查看或编辑
按钮,进入正反例添加页面:
添加好正反例,我们来测试一下:
对于正例相似问题,茴香豆会在知识库中尽量搜寻相关解答,在没有相关知识的情况下,会推测答案,并在回答中提示我们该回答并不准确。这保证了回答的可追溯性。
对于反例问题,茴香豆拒绝作答,这保证了在对话,尤其是企业级群聊中的闲聊、非问题和无关问题触发回答带来的回答混乱和资源浪费。
建议:添加完正反例之后需要刷新界面,重新进入才能生效,而不是实时生效
三、茴香豆本地标准版搭建
3.1、搭建环境
参考教程搭建
Tutorial/docs/L2/Huixiangdou/readme.md at camp3 · InternLM/Tutorial · GitHub
3.2、安装茴香豆
3.2.1、首先安装茴香豆所需依赖:
conda activate huixiangdou # parsing `word` format requirements apt update apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev # python requirements pip install BCEmbedding==0.15 cmake==3.30.2 lit==18.1.8 sentencepiece==0.2.0 protobuf==5.27.3 accelerate==0.33.0 pip install -r requirements.txt # python3.8 安装 faiss-gpu 而不是 faiss
3.2.2、下载模型文件
茴香豆默认会根据配置文件自动下载对应的模型文件,为了节省时间,本次教程所需的模型已经提前下载到服务器中,我们只需要为本次教程所需的模型建立软连接,然后在配置文件中设置相应路径就可以:
# 创建模型文件夹 cd /root && mkdir models # 复制BCE模型 ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/models/bce-embedding-base_v1 ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/models/bce-reranker-base_v1 # 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行) ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
3.2.3 更改配置文件
茴香豆的所有功能开启和模型切换都可以通过 config.ini
文件进行修改,默认参数如下:
执行下面的命令更改配置文件,让茴香豆使用本地模型:
sed -i '9s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini sed -i '15s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini sed -i '43s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini
3.3 知识库创建
修改完配置文件后,就可以进行知识库的搭建,本次教程选用的是茴香豆和 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 用来存放原始文档特征提取到的向量知识库。
3.4 测试知识助手
3.4.1 命令行运行
运行下面的命令,可以用命令行对现有知识库问答助手进行测试:
python3 -m huixiangdou.main --standalone
通过命令行的方式可以看到对话的结果以及中间的过程,便于我们确认知识库是否覆盖需求,正反例是否合理。
3.4.2 Gradio UI 界面测试
在运行茴香豆助手的服务器端,输入下面的命令,启动茴香豆 Web UI:
conda activate huixiangdou cd /root/huixiangdou python3 -m huixiangdou.gradio
问题1:茴香豆是什么
问题2:河北省的省会是在哪里
3.5 开启网络搜索
北京今天的天气怎么样
后台有结果,不知道页面上为什么没有回答