1. 创建环境
studio-conda -o internlm-base -t huixiangdou
conda activate huixiangdou
cd /root
# 克隆代码仓库
git clone https://github.com/internlm/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
2. 下载模型文件
# 复制BCE模型
ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/model/bce-embedding-base_v1
ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/model/bce-reranker-base_v1
# 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行)
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
3. 修改配置文件
文件路径/root/huixiangdou/config.ini
embedding_model_path = "/root/model/bce-embedding-base_v1"
reranker_model_path = "/root/model/bce-reranker-base_v1"
local_llm_path = "/root/models/internlm2-chat-7b"
4. 创建知识库
这里参考一位用户分享的b站会员有关acg内容相关的答题题库,利用茴香豆搭建一个动漫知识的问答助手,在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库:
cd /root/huixiangdou
mkdir repodir
# 将问题和答案整理为文档放入repodir中
更新完原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store
命令进行向量知识库的重新创建和应答阈值的更新。
mkdir workdir
python3 -m huixiangdou.service.feature_store
结果如下:
知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,关于“mmpose 安装”、“请问ncnn全称是什么”等问题,不在知识库范围内,测试结果显示拒答,说明我们的知识助手工作正常。
5. 测试知识助手
运行下面的命令,可以用命令行对现有知识库问答助手进行测试:
cd /root/huixiangdou
python3 -m huixiangdou.gradio
运行正常:
建立本地和服务器之间的透传后,打开本地浏览器中输入 127.0.0.1:7860
打开茴香豆助手测试页面:
可以看到给出的回答相对来说还是比较准确,且有出处的。不过想要回答更多问题应该还是得自己构建更加合理的领域知识库。