之前介绍了茴香豆的web版部署,这次是代码部署,以InternStudio平台为例。
茴香豆技术助手部署笔记
茴香豆是一款基于RAG(Retrieval Augmented Generation)技术的问答助手,能够生成准确而全面的答案,克服了传统大型语言模型(LLM)在处理知识密集型任务时所面临的挑战。
环境配置
首先,需要建立一个虚拟环境,这包括以下步骤:
- 配置开发机环境,
从官方环境复制运行 InternLM 的基础环境,命名为
InternLM2_Huixiangdou
,在命令行模式下运行:studio-conda -o internlm-base -t InternLM2_Huixiangdou
- 根据教程的命令行,复制茴香豆所需模型文件,为了减少下载和避免 HuggingFace 登录问题,所有作业和教程涉及的模型都已经存放在
Intern Studio
开发机共享文件中。本次选用 InternLM2-Chat-7B 作为基础模型。 - 安装茴香豆运行所需依赖,从茴香豆官方仓库下载茴香豆。
使用茴香豆搭建 RAG 助手
本示例中,使用 InternLM 的 Huixiangdou 文档作为新增知识数据检索来源,在不重新训练的情况下,打造一个 Huixiangdou 技术问答助手。需要先下载语聊,构建知识库,数据库向量化的过程应用到了 LangChain 的相关模块,默认嵌入和重排序模型调用的网易 BCE 双语模型,如果没有在 config.ini
文件中指定本地模型路径,茴香豆将自动从 HuggingFace 拉取默认模型。
然后再建立接受和拒答两个向量数据库,用来在检索的过程中更加精确的判断提问的相关性,这两个数据库的来源分别是:
- 接受问题列表,希望茴香豆助手回答的示例问题
- 存储在
huixiangdou/resource/good_questions.json
中
- 存储在
- 拒绝问题列表,希望茴香豆助手拒答的示例问题
- 存储在
huixiangdou/resource/bad_questions.json
中 - 其中多为技术无关的主题或闲聊
- 如:"nihui 是谁", "具体在哪些位置进行修改?", "你是谁?", "1+1"
- 存储在
需要运行提供的命令,增加茴香豆相关的问题到接受问题示例中。
再创建一个测试用的问询列表,用来测试拒答流程是否起效。
示例:
cd /root/huixiangdou
echo '[
"huixiangdou 是什么?",
"你好,介绍下自己"
]' > ./test_queries.json
在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库:
示例:
# 创建向量数据库存储目录
cd /root/huixiangdou && mkdir workdir
# 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json
完成后,新增知识就以向量数据库的形式存储在 workdir
文件夹下。
检索过程中,茴香豆会将输入问题与两个列表中的问题在向量空间进行相似性比较,判断该问题是否应该回答,避免群聊过程中的问答泛滥。确定的回答的问题会利用基础模型提取关键词,在知识库中检索 top K
相似的 chunk
,综合问题和检索到的 chunk
生成答案。
提取了知识库特征,并创建了对应的向量数据库。现在,让我们来测试一下效果:
命令行运行:
# 填入问题
sed -i '74s/.*/ queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py
# 运行茴香豆
cd /root/huixiangdou/
python3 -m huixiangdou.main --standalone
RAG 技术的优势就是非参数化的模型调优,这里使用的仍然是基础模型 InternLM2-Chat-7B
, 没有任何额外数据的训练。面对同样的问题,我们的茴香豆技术助理能够根据我们提供的数据库生成准确的答案。
到此我们就完成了一个 茴香豆知识助手 的服务器端部署的全部内容。
后面可以根据自己的实际需求,学习茴香豆的进阶应用或者阅读茴香豆文档将茴香豆链接到即时通讯软件或打造自己的茴香豆 Web 版。
总结步骤:
- 修改配置文件:根据实际需求,可能需要对配置文件进行相应的修改。
- 创建知识库:通过收集领域内相关的资料和信息,为茴香豆助手构建一个丰富的知识库。
- 运行助手:根据配置文件中的设置运行茴香豆,开始进行问答。
实战体验
(最终效果如图)
在真实世界的部署过程中,我发现茴香豆作为一个智能知识助理,表现非常出色。它能够快速而准确地响应问题,大大提高了群组沟通的效率。
例如:
# 提问示例
- 问题:"茴香豆怎么部署到微信群?"
- 回答:“需先在InternLM Studio中设置好相关配置...”
值得强调的是,茴香豆甚至可以部署到微信群中,需要特别注意的步骤:
- 用茴香豆生成微信回调的地址,配置必要的回调URL。
- 下载安卓app,用小号试用,注意微信版本。
结语
通过茴香豆项目,任何人都可以轻松构建一个针对特定领域的问答助手,并且部署过程简便,即使是不熟悉编程的人也能轻松上手,欢迎大家尝试并给原项目点个star★