1.1 创建 Web 版茴香豆账户和密码
登录 OpenXLab浦源 - 应用中心,可以看到 Web 版茴香豆的知识库注册页面,在对应处输入想要创建的知识库名称和密码,该名称就是 Web 版茴香豆的账户和密码,要牢记
2 茴香豆本地标准版搭建
在第一部分中,我们利用 Web 版茴香豆实现了零代码开发部署一款 RAG 知识助手,在接下来的部分,我们要动手尝试将茴香豆从源码部署到本地服务器(以 InternlmStudio 为例),并开发一款简单的知识助手 Demo。
2.1 环境搭建
2.1.1 配置服务器
首先登录 InternStudio ,选择创建开发机:
镜像选择 Cuda11.7-conda
,资源类型选择 30% A\*100
。输入开发机名称 huixiangdou
, 点击立即创建。
2.1.2 搭建茴香豆虚拟环境
命令行中输入一下命令,创建茴香豆专用 conda 环境:
studio-conda -o internlm-base -t huixiangdou
创建成功,用下面的命令激活环境:
conda activate 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.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
2.2.3 下载模型文件
茴香豆默认会根据配置文件自动下载对应的模型文件,为了节省时间,本次教程所需的模型已经提前下载到服务器中,我们只需要为本次教程所需的模型建立软连接,然后在配置文件中设置相应路径就可以:
# 创建模型文件夹 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
完成后可以在相应目录下看到所需模型文件。
2.2.4 更改配置文件
茴香豆的所有功能开启和模型切换都可以通过 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 # 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 用来存放原始文档特征提取到的向量知识库。
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
3 茴香豆高阶应用(选做)
茴香豆拥有者丰富的功能,可以应对不同企业的需求,下面介绍几个真实场景中常用的高阶功能。
3.1 开启网络搜索
对于本地知识库没有提到的问题或是实时性强的问题,可以开启茴香豆的网络搜索功能,结合网络的搜索结果,生成更可靠的回答。
开启网络搜索功能需要用到 Serper 提供的 API:
-
登录 Serper ,注册:
-
进入 Serper API 界面,复制自己的 API-key:
- 替换
/huixiangdou/config.ini
中的 ${YOUR-API-KEY} 为自己的API-key:
[web_search] check https://serper.dev/api-key to get a free API key x_api_key = "${YOUR-API-KEY}" domain_partial_order = ["openai.com", "pytorch.org", "readthedocs.io", "nvidia.com", "stackoverflow.com", "juejin.cn", "zhuanlan.zhihu.com", "www.cnblogs.com"] save_dir = "logs/web_search_result"
其中 domain_partial_order
可以设置网络搜索的范围。
到此茴香豆的检索回复功能就测试完成了。
下面测试多模态功能
3.3 多模态功能
最新的茴香豆支持了多模态的图文检索,启用该功能后,茴香豆可以解析上传的图片内容,并根据图片内容和文字提示词进行检索回答。
图文检索功能需要至少 10G 显存支持本地向量和重排模型运行,下面的示例使用的全部是本地模型,因此需要 40G 的显存,在 Intern-Studio 中需要选择 50% A100 * 1
服务器:
3.3.0 下载/更新茴香豆
首先,我们需要将茴香豆更新至最新版,如果之前没有下载茴香豆,可以跳过此步骤,参考2.2.1 下载茴香豆直接下载最新版茴香豆。 更新茴香豆:
conda activate huixiangdou cd huixiangdou git stash # 弃用之前的修改,如果需要保存,可将冲突文件另存为新文件名 git checkout main git pull git checkout bec2f6af9 # 支持多模态的最低版本
3.3.1 安装多模态模型和依赖
开启多模态功能需要支持图文的多模态向量和重排模型,本教程使用的是智源旗下的 BGE 开源模型家族。
这次我们使用 huggingface-cli download
的方法从 Huggingface Hub 上拉取模型到本地:
成功部署多模态