第三课:茴香豆:零代码搭建你的 RAG 智能助理作业

讲师:北辰老师

文档地址:https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/readme.md

B站视频课程地址:https://www.bilibili.com/video/BV1QA4m1F7t4/?spm_id_from=333.788&vd_source=0857df4802ce9a14ce09f1a529b8a6e8

internstudio地址:https://sso.openxlab.org.cn/login?redirect=https://studio.intern-ai.org.cn/console/instance/new&clientId=plzdwkzlqe33bkrgoxq3

3.3.1配置部署茴香豆

3.3.1.1创建开发机

2.进入开发机后,从官方环境复制运行 InternLM 的基础环境,命名为 InternLM2_Huixiangdou,在命令行模式下运行:

studio-conda -o internlm-base -t InternLM2_Huixiangdou

复制完成后,在本地查看环境。

conda env list

运行 conda 命令,激活 InternLM2_Huixiangdou python 虚拟环境:

conda activate InternLM2_Huixiangdou(关机退出环境后常用)

3.3.1.2下载基础文件

复制茴香豆所需模型文件,为了减少下载和避免 HuggingFace 登录问题,所有作业和教程涉及的模型都已经存放在 Intern Studio 开发机共享文件中。本教程选用 InternLM2-Chat-7B 作为基础模型。

创建模型文件夹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

ll root / models

3.3.1.3 下载安装茴香豆

安装茴香豆运行所需依赖。

安装 python 依赖# pip install -r requirements.txt

pip install protobuf==4.25.3 accelerate==0.28.0 aiohttp==3.9.3 auto-gptq==0.7.1 bcembedding==0.1.3 beautifulsoup4==4.8.2 einops==0.7.0 faiss-gpu==1.7.2 langchain==0.1.14 loguru==0.7.2 lxml_html_clean==0.1.0 openai==1.16.1 openpyxl==3.1.2 pandas==2.2.1 pydantic==2.6.4 pymupdf==1.24.1 python-docx==1.1.0 pytoml==0.1.21 readability-lxml==0.8.1 redis==5.0.3 requests==2.31.0 scikit-learn==1.4.1.post1 sentence_transformers==2.2.2 textract==1.6.5 tiktoken==0.6.0 transformers==4.39.3 transformers_stream_generator==0.0.5 unstructured==0.11.2

因为 Intern Studio 不支持对系统文件的永久修改,在 Intern Studio 安装部署的同学不建议安装 Word 依赖,后续的操作和作业不会涉及 Word 解析。## 想要自己尝试解析 Word 文件的同学,uncomment 掉下面这行,安装解析 .doc .docx 必需的依赖# apt update && apt -y install python-dev python libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev

3.3.1.4从茴香豆官方仓库下载茴香豆。

cd /root

下载 repo

git clone https://github.com/internlm/huixiangdou && cd huixiangdou

git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440

茴香豆工具在 Intern Studio 开发机的安装工作结束。如果部署在自己的服务器上,参考上节课模型下载内容或本节 3.4 配置文件解析 部分内容下载模型文件。

部署成功

3.3.2使用茴香豆搭建 RAG 助手

3.3.2.1修改配置文件

用已下载模型的路径替换 /root/huixiangdou/config.ini 文件中的默认模型,需要修改 3 处模型地址,分别是:

命令行输入下面的命令,修改用于向量数据库和词嵌入的模型

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

3.3.2.2 创建知识库

本示例中,使用 InternLMHuixiangdou 文档作为新增知识数据检索来源,在不重新训练的情况下,打造一个 Huixiangdou 技术问答助手。

首先,下载 Huixiangdou 语料:

cd /root/huixiangdou && mkdir repodir

git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou

再创建一个测试用的问询列表,用来测试拒答流程是否起效:

cd /root/huixiangdou

echo '["huixiangdou 是什么?","你好,介绍下自己"]' > ./test_queries.json

3.3.2.3创建知识向量库

在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库:

创建向量数据库存储目录cd /root/huixiangdou && mkdir workdir

分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir

python3 -m huixiangdou.service.feature_store --sample ./test_queries.json

向量数据库的创建需要等待一小段时间,过程约占用 1.6G 显存。

完成后,Huixiangdou 相关的新增知识就以向量数据库的形式存储在 workdir 文件夹下。

检索过程中,茴香豆会将输入问题与两个列表中的问题在向量空间进行相似性比较,判断该问题是否应该回答,避免群聊过程中的问答泛滥。确定的回答的问题会利用基础模型提取关键词,在知识库中检索 top K 相似的 chunk,综合问题和检索到的 chunk 生成答案。

3.3.3 运行茴香豆知识助手

我们已经提取了知识库特征,并创建了对应的向量数据库。现在,让我们来测试一下效果:

命令行运行:

填入问题

sed -i '74s/.*/ queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py

运行茴香豆cd /root/huixiangdou/

python3 -m huixiangdou.main --standalone

  • 28
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值