1 前期准备,包含新建环境,下载模型,安装依赖,下载源码
studio-conda -o internlm-base -t InternLM2_Huixiangdou
conda activate InternLM2_Huixiangdou
# 创建模型文件夹
cd /root && mkdir models
# 复制BCE模型
#ln:这是创建链接的命令。
#-s:这是指定创建符号链接而非硬链接的选项。符号链接相较于硬链接而言,对源文件的依赖更强;如果源文件被删除,符号链接将不指向任何东西
#其基本用法是将一个文件或目录链接到另一个位置,而无需复制实际数据。
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
安装 python 依赖
cd /root
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440
pip install protobuf4.25.3 accelerate0.28.0 aiohttp3.9.3 auto-gptq0.7.1 bcembedding0.1.3 beautifulsoup44.8.2 einops0.7.0 faiss-gpu1.7.2 langchain0.1.14 loguru0.7.2 lxml_html_clean0.1.0 openai1.16.1 openpyxl3.1.2 pandas2.2.1 pydantic2.6.4 pymupdf1.24.1 python-docx1.1.0 pytoml0.1.21 readability-lxml0.8.1 redis5.0.3 requests2.31.0 scikit-learn1.4.1.post1 sentence_transformers2.2.2 textract1.6.5 tiktoken0.6.0 transformers4.39.3 transformers_stream_generator0.0.5 unstructured0.11.2
#修改配置文件
#其中sed:调用流编辑器程序。
#-i:这个选项告诉 sed 直接修改文件,而不是输出修改后的结果到标准输出(屏幕)
# 6s:代表选择文件中的第6行进行替换操作。
# #.*#:是替换命令的模式和分隔符,通常我们看到的是 s/old/new/ 形式,这里使用 # 作为分隔符是为了避免与路径中可能出现的 / 符号冲突。. 表示匹配任意字符,* 表示匹配任意数量的前面的字符,所以 .* 匹配整行内容。
sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini
sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini
#clone语料
cd /root/huixiangdou && mkdir repodir
制定clone的本地路径
git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou
创建向量数据库存储目录
cd /root/huixiangdou && mkdir workdir
分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json
程序执行
然后可以看到test_queries.json里的问题分别按照是否回答分别储存到了workdir文件夹里的两个文件里,如下图所示
修改问题重新测试
填入问题
sed -i ‘74s/.*/ queries = [“huixiangdou 是什么?”, “茴香豆怎么部署到微信群”, “今天天气怎么样?”]/’ /root/huixiangdou/huixiangdou/main.py
运行茴香豆
cd /root/huixiangdou/
python3 -m huixiangdou.main --standalone
执行效果
可以看出,对于bad_question,做了拒绝回答
3 调用远程的搜索
启用云端模式
4 利用 Gradio 搭建网页 Demo
pip install gradio4.25.0 redis5.0.3 flask3.0.2 lark_oapi1.2.4
python3 -m tests.test_query_gradio
执行成功