1 Web 版茴香豆
Web 版茴香豆部署在浦源平台,可以让大家零编程体验茴香豆的各种功能。这里 有作者大神亲自的视频演示。
1.1 创建 Web 版茴香豆账户和密码
登录 OpenXLab浦源 - 应用中心,可以看到 Web 版茴香豆的知识库注册页面,在对应处输入想要创建的知识库名称和密码,该名称就是 Web 版茴香豆的账户和密码,请牢记,以后对该知识助手进行维护和修改都要使用这个账户和密码。
1.2 创建 Web 版茴香豆知识库
完成账户创建或者输入已有账户密码后会进入相应知识库的开发页面,当前 Web 版茴香豆功能包括:
-
添加/删除文档
-
编辑正反例
-
打通微信和飞书群
-
开启网络搜索功能(需要填入自己的 Serper token,token 获取参考 3.1 开启网络搜索)
-
聊天测试
完成相关文档上传后,可以直接用下面的聊天测试窗口测试知识助手的效果:
1.3 通过配置正反例调优知识助手效果
在真实的使用场景中,调试知识助手回答相关问题和拒答无关问题(如闲聊)是保证回答准确率和效率十分重要的部分。茴香豆的架构中,除了利用 LLM 的功能判断问题相关性,也可以通过手动添加正例(希望模型回答的问题)和反例(希望模型拒答的问题)来调优知识助手的应答效果。
在 Web 版茴香豆中,点击添加正反例下的 查看或编辑
按钮,进入正反例添加页面:
添加好正反例,我们来测试一下:
对于正例相似问题,茴香豆会在知识库中尽量搜寻相关解答,在没有相关知识的情况下,会推测答案,并在回答中提示我们该回答并不准确。这保证了回答的可追溯性。
对于反例问题,茴香豆拒绝作答,这保证了在对话,尤其是企业级群聊中的闲聊、非问题和无关问题触发回答带来的回答混乱和资源浪费。
2 茴香豆本地标准版搭建
在第一部分中,我们利用 Web 版茴香豆实现了零代码开发部署一款 RAG 知识助手,在接下来的部分,我们要动手尝试将茴香豆从源码部署到本地服务器(以 InternlmStudio 为例),并开发一款简单的知识助手 Demo。
2.1 环境搭建
2.1.1 配置服务器
首先登录 InternStudio ,选择创建开发机:
镜像选择 Cuda11.7-conda
,资源类型选择 30% A\*100
。点击立即创建。
等服务器准备好开发机资源后,点击 进入开发机
,继续进行开发环境的搭建。
等服务器准备好开发机资源后,点击 进入开发机
,继续进行开发环境的搭建。
2.1.2 搭建茴香豆虚拟环境
命令行中输入一下命令,创建茴香豆专用 conda 环境:
studio-conda -o internlm-base -t huixiangdou
创建成功,用下面的命令激活环境:
conda activate huixiangdou
环境激活成功后,命令行前的括号内会显示正在使用的环境,请确保所有茴香豆操作指令在 huixiangdou
环境下运行。
2.2 安装茴香豆
下面开始茴香豆本地标准版的安装。
2.2.1 下载茴香豆
先从茴香豆仓库拉取代码到服务器:
cd /root # 克隆代码仓库 git clone https://github.com/internlm/huixiangdou && cd huixiangdou git checkout 79fa810
拉取完成后进入茴香豆文件夹,开始安装。
2.2.2 安装茴香豆所需依赖
首先安装茴香豆所需依赖:
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.1.5 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
2.2.3 下载模型文件
茴香豆默认会根据配置文件自动下载对应的模型文件,为了节省时间,本次教程所需的模型已经提前下载到服务器中,我们只需要为本次教程所需的模型建立软连接,然后在配置文件中设置相应路径就可以:
完成后可以在相应目录下看到所需模型文件。
2.2.4 更改配置文件
执行下面的命令更改配置文件,让茴香豆使用本地模型:
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
2.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 mkdir workdir python3 -m huixiangdou.service.feature_store
在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库。
知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,关于“mmpose 安装”的问题,测试结果可以很好的反馈相应答案和对应的参考文件,但关于“std::vector 使用”的问题,因为属于 C++ 范畴,不再在知识库范围内,测试结果显示拒答,说明我们的知识助手工作正常。
和 Web 版一样,本地版也可以通过编辑正反例来调整茴香豆的拒答和响应,正例位于 /root/huixiangdou/resource/good_questions.json
文件夹中,反例位于/root/huixiangdou/resource/bad_questions.json
。
需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store
命令进行向量知识库的重新创建和应答阈值的更新。
2.4 测试知识助手
2.4.1 命令行运行
运行下面的命令,可以用命令行对现有知识库问答助手进行测试:
conda activate huixiangdou cd /root/huixiangdou python3 -m huixiangdou.main --standalone
通过命令行的方式可以看到对话的结果以及中间的过程,便于我们确认知识库是否覆盖需求,正反例是否合理。
2.4.2 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
看到上图相同的结果,说明 Gradio
服务启动成功,在本地浏览器中输入 127.0.0.1:7860
打开茴香豆助手测试页面: