作业!
基础任务
在运行茴香豆助手的服务器端,输入下面的命令,启动茴香豆 Web UI:
conda activate huixiangdou cd /root/huixiangdou python3 -m huixiangdou.gradio
选个周杰伦的知识库
zhangtao-seu/Jay_KG: 周杰伦歌曲信息的知识图谱问答系统 (github.com)
挑战任务
在微信群或飞书群内使用茴香豆助手
下载huixiangdou.apk传到手机然后开权限:
试下效果:
反应稍微要点时间,而且会读取全部的信息 - -
学习部分
茴香豆 是由书生·浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成本。在实际的生产和生活环境需求,对 RAG 系统的开发、部署和调优的挑战更大,如需要解决群应答、能够无关问题拒答、多渠道应答、更高的安全性挑战。因此,根据大量国内用户的实际需求,总结出了三阶段Pipeline的茴香豆知识问答助手架构,帮助企业级用户可以快速上手安装部署。
茴香豆特点:
-
三阶段 Pipeline (前处理、拒答、响应),提高相应准确率和安全性
-
打通微信和飞书群聊天,适合国内知识问答场景
-
支持各种硬件配置安装,安装部署限制条件少
-
适配性强,兼容多个 LLM 和 API
-
傻瓜操作,安装和配置方便
Web 版茴香豆
创建 Web 版茴香豆账户和密码
创建 Web 版茴香豆知识库
当前 Web 版茴香豆功能包括:
-
添加/删除文档
-
编辑正反例
-
打通微信和飞书群
-
开启网络搜索功能(需要填入自己的 Serper token,token 获取参考 3.1 开启网络搜索)
-
聊天测试
试着传了个简历上去:
通过配置正反例调优知识助手效果
在真实的使用场景中,调试知识助手回答相关问题和拒答无关问题(如闲聊)是保证回答准确率和效率十分重要的部分。茴香豆的架构中,除了利用 LLM 的功能判断问题相关性,也可以通过手动添加正例(希望模型回答的问题)和反例(希望模型拒答的问题)来调优知识助手的应答效果。
在 Web 版茴香豆中,点击添加正反例下的 查看或编辑
按钮,进入正反例添加页面:
添加完后试试:
在微信群或飞书群内使用茴香豆助手
下载huixiangdou.apk传到手机然后开权限:
试下效果:
反应稍微要点时间,而且会读取全部的信息 - -
茴香豆本地标准版搭建
在第一部分中,我们利用 Web 版茴香豆实现了零代码开发部署一款 RAG 知识助手,在接下来的部分,我们要动手尝试将茴香豆从源码部署到本地服务器(以 InternlmStudio 为例),并开发一款简单的知识助手 Demo。
环境搭建和安装茴香豆
先搭环境
先从茴香豆仓库拉取代码到服务器:
首先安装茴香豆所需依赖:
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
下载模型文件
茴香豆默认会根据配置文件自动下载对应的模型文件,为了节省时间,本次教程所需的模型已经提前下载到服务器中,我们只需要为本次教程所需的模型建立软连接,然后在配置文件中设置相应路径就可以:
前面有models了,改一下文件夹名称
# 复制BCE模型 ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/models0829/bce-embedding-base_v1 ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/models0829/bce-reranker-base_v1 # 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行) ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models0829/internlm2-chat-7b
更改配置文件
茴香豆的所有功能开启和模型切换都可以通过 config.ini
文件进行修改
执行下面的命令更改配置文件,让茴香豆使用本地模型:
sed -i '9s#.*#embedding_model_path = "/root/models0829/bce-embedding-base_v1"#' /root/huixiangdou/config.ini sed -i '15s#.*#reranker_model_path = "/root/models0829/bce-reranker-base_v1"#' /root/huixiangdou/config.ini sed -i '43s#.*#local_llm_path = "/root/models0829/internlm2-chat-7b"#' /root/huixiangdou/config.ini
注意!配置文件默认的模型和下载好的模型相同。如果不修改地址为本地模型地址,茴香豆将自动从 huggingface hub 拉取模型。如果选择拉取模型的方式,需要提前在命令行中运行 huggingface-cli login 命令,验证 huggingface 权限。
知识库创建
修改完配置文件后,就可以进行知识库的搭建,本次教程选用的是茴香豆和 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
。
需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store
命令进行向量知识库的重新创建和应答阈值的更新
测试知识助手
运行下面的命令,可以用命令行对现有知识库问答助手进行测试:
conda activate huixiangdou cd /root/huixiangdou python3 -m huixiangdou.main --standalone
(对于之前每次进终端都是xtuner的问题,大佬给了方法:
conda init
source ~/.bashrc
)
搞了半天终于好了,好像是protobuf没装好 - -
Gradio UI 界面测试
在运行茴香豆助手的服务器端,输入下面的命令,启动茴香豆 Web UI:
conda activate huixiangdou cd /root/huixiangdou python3 -m huixiangdou.gradio