茴香豆:企业级知识问答工具实践

一、茴香豆介绍

茴香豆 是由书生·浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成本。在实际的生产和生活环境需求,对 RAG 系统的开发、部署和调优的挑战更大,如需要解决群应答、能够无关问题拒答、多渠道应答、更高的安全性挑战。因此,根据大量国内用户的实际需求,总结出了三阶段Pipeline的茴香豆知识问答助手架构,帮助企业级用户可以快速上手安装部署。

茴香豆特点

  • 三阶段 Pipeline (前处理、拒答、响应),提高相应准确率和安全性

  • 打通微信和飞书群聊天,适合国内知识问答场景

  • 支持各种硬件配置安装,安装部署限制条件少

  • 适配性强,兼容多个 LLM 和 API

  • 傻瓜操作,安装和配置方便

二、环境搭建

1.克隆仓库

git clone https://github.com/InternLM/HuixiangDou.git && cd HuixiangDou

2.安装依赖

# 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

3.下载模型文件、修改配置等请参考官方readme

三、知识库创建

1.创建 repodir 文件夹,用来储存知识库原始文档。

2.创建 文件夹 workdir 用来存放原始文档特征提取到的向量知识库。

执行下面的脚本即可完成原始文档特征向量化,并保存到faiss中:

python3 -m huixiangdou.service.feature_store

知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,关于“mmpose 安装”的问题,测试结果可以很好的反馈相应答案和对应的参考文件,但关于“std::vector 使用”的问题,因为属于 C++ 范畴,不再在知识库范围内,测试结果显示拒答,说明我们的知识助手工作正常。

和 Web 版一样,本地版也可以通过编辑正反例来调整茴香豆的拒答和响应,正例位于 resource/good_questions.json 文件夹中,反例位于resource/bad_questions.json

需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store 命令进行向量知识库的重新创建和应答阈值的更新。

四、测试知识助手

为了方便展示,使用gradio界面:

python3 -m huixiangdou.gradio

程序内部首先启动本地internlm2_5 7B模型(根据config配置的不同会启动不同模型)

可以看到服务已经启动成功。

然后,在本地配置端口转发:

ssh -p 你的开发机端口 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

最后,我们通过 http://127.0.0.1:7860/来访问知识库

测试问题1:申请驾照是个什么流程?

茴香豆准确找到了参考资料,并给出了出处,同时也输出了Pipeline中各节点的debug信息:

测试问题2:考驾照需要多少钱?

对于文档中没有提到的内容,没有说不知道,二是检索到一些看似相关,但不一样的内容。

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值