书生大模型实战营(第三期闯关大挑战)- 进阶岛 第五关 茴香豆:企业级知识库问答工具

news2024/9/20 1:09:46

茴香豆本地标准版搭建

茴香豆介绍

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

茴香豆特点

  • 三阶段 Pipeline (前处理、拒答、响应),提高相应准确率和安全性
  • 打通微信和飞书群聊天,适合国内知识问答场景
  • 支持各种硬件配置安装,安装部署限制条件少
  • 适配性强,兼容多个 LLM 和 API
  • 傻瓜操作,安装和配置方便

image-20240826154336043

本地环境搭建-使用InternStudio

首先登录 InternStudio ,选择30%A100 资源

image-20240825234147949

启动

image-20240825234242171

点击进入开发机

搭建茴香豆虚拟环境

studio-conda -o internlm-base -t huixiangdou
# 激活虚拟环境(注意:后续的所有操作都需要在这个虚拟环境中进行)
conda activate huixiangdou
cd /root
# 克隆代码仓库
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 79fa810
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
pip install BCEmbedding==0.1.5 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 -i https://pypi.tuna.tsinghua.edu.cn/simple/

下载模型文件

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

完成后可以在相应目录下看到所需模型文件

image-20240825235724754

更改配置文件

执行下面的命令更改配置文件,让茴香豆使用本地模型:

sed -i '9s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
sed -i '15s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini
sed -i '43s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini

修改后的配置文件如下:

image-20240826000046255

我们看到模型路径已经被替换本地模型路径地址了

知识库创建

修改完配置文件后,就可以进行知识库的搭建,本次教程选用的是茴香豆和 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
python -m huixiangdou.service.feature_store

在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库。
在这里插入图片描述

执行后效果

image-20240826144725890

workdir 出现向量化数据
在这里插入图片描述

测试知识助手

运行下面的命令,可以用命令行对现有知识库问答助手进行测试:

conda activate huixiangdou
cd /root/huixiangdou
python -m huixiangdou.main --standalone

image-20240826135612740

我们可以看到知识库助手测试验证可以使用的。

Gradio UI 界面测试

茴香豆也用 gradio 搭建了一个 Web UI 的测试界面,用来测试本地茴香豆助手的效果,启动茴香豆 Web UI

conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.gradio

image-20240826135350263

看到如上界面,启动完成。

接下来我们使用 启用端口转发到本地7860 端口

ssh -p 40552 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

image-20240826135955075

在本地浏览器中输入 127.0.0.1:7860 打开茴香豆助手测试页面
在这里插入图片描述

这里我们使用到知识库 是前面已经创建好的,正反例的信息可以在正例位于 /root/huixiangdou/resource/good_questions.json 文件夹中,反例位于/root/huixiangdou/resource/bad_questions.json 查找

image-20240826141755945

我们的问题 “如何将mmdetection2.28.2的retinanet配置文件改为单尺度的呢?” 模型给我们返回信息如下

image-20240826145918618

在问一个问题“如何使用mmpose检测人体关键点?”

image-20240826150018145

以上信息是基于知识库检索出来 然后在发给后端LLM 大模型进行推理的。上面我们主要是官方提供的例子实现的RAG增加检索。有的小伙伴可能会问了如果使用自己列子呢? 下面我们介绍一下这块如何实现。

创建自己知识库

首先我们需要找一个知识库,这里我们就以《少年歌行》小说为蓝本做测试,因为考虑这个本小说书较大,所以我们节选了小说的一部分内容。

image-20240826160332755

节选小说内容大概 3512行,总字数有153355字

image-20240826160426012

我们上面提到我们在创建知识库文档向量化的是用到了 正反例的信息。 也就是我们需要修改原项目中的/root/huixiangdou/resource/good_questions.json 和/root/huixiangdou/resource/bad_questions.json

我们打开原来的good_questions.json 和bad_questions.json

image-20240826160807656

这里的提示词信息不是我们少年歌行小说书里面的内容,这块我们需要修改。因为编写这个正反例提示词工作量也比较大,我们可以借助gpt 等大模型来实现。

使用claude3.5 生成正反例的数据

我们将要少年歌行2.txt 和good_questions.json 和bad_questions.json 三个文件发给claude3.5 让他参考文档内容改写我们要的good_questions.json 和bad_questions.json在这里插入图片描述

claude3.5 接受到消息后理解了我的意思 ,给我整理和小说内容的信息的正反提示词

image-20240826161320840

整理的结果

good_questions.json

[
  "少年歌行的主角是谁?",
  "小说中的素衣女子是什么角色?",
  "萧瑟在故事中扮演什么角色?",
  "少年歌行的主要标签是什么?",
  "小说中的红衣少年有什么特殊能力?",
  "故事中提到的'天启乘龙位'是什么?",
  "小说中描述的战斗场景有哪些特点?",
  "少年歌行的故事背景是什么样的?",
  "小说中的逆袭元素体现在哪里?",
  "作者周木楠在小说中塑造了什么样的人物形象?",
  "少年歌行的主题思想是什么?",
  "小说中的友情元素如何体现?",
  "故事中的武器描写有哪些?",
  "少年歌行的结局是怎样的?",
  "小说中的热血场景有哪些?"
]

bad_questions.json

[
  "少年歌行和哈利波特有什么关系?",
  "小说中有外星人吗?",
  "萧瑟喜欢吃什么食物?",
  "作者周木楠的生日是哪天?",
  "少年歌行的故事发生在2023年吗?",
  "小说中有没有描写现代科技?",
  "红衣少年会使用手机吗?",
  "素衣女子的衣服是哪个品牌的?",
  "小说中有没有提到COVID-19?",
  "少年歌行的故事是不是发生在美国?",
  "作者写这本书用了多长时间?",
  "小说中有没有出现汽车?",
  "故事里的角色会上网吗?",
  "少年歌行的电影版什么时候上映?",
  "小说中有没有描写太空旅行?"
]

替换正反提示词

整理的还不错,我们也只是测试,所以不需要太多提示词。将以上2个json 文件上传/root/huixiangdou/resource 目录替换原来的2个json文件

image-20240826161741222

修改测试代码

打开/root/huixiangdou/huixiangdou/service/feature_store.py 第297行test_reject 代码中把原来提示词换成我们上面的部分提示词

image-20240826162634529

重新创建知识库

​ 我们将节选小说上传到/root/huixiangdou/repodir 目录下

image-20240826162831376

输入如下命令重新创建知识库

conda activate huixiangdou
cd /root/huixiangdou
python -m huixiangdou.service.feature_store

Gradio UI 界面测试

我们参考上面的内容执行如下代码把Gradio UI 运行起来

conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.gradio

启动完成后,页面输入127.0.0.1:7860` 打开茴香豆助手测试页面

image-20240826164251951

在测试一个问题

image-20240826164710696

以上就是我们使用茴香豆创建自己知识库来实现文档检索功能。感兴趣的小伙伴可以参考文档自己做一遍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8周流水6700美元Dropshipping运营全流程曝光丨出海笔记

(之前删掉补发系列) 之前分享了一个案例《净赚4000多美元!个人卖家Dropshipping卖30天太阳镜,究竟如何做到的》,不少小伙伴觉得实操性很强,纷纷反馈意犹未尽,所以船长继续去找之前的Dropshippin…

房产系统技术功能解析

房产系统的功能设计旨在提高房地产行业的运作效率、优化资源分配,并为用户提供更便捷高效的服务体验。以下是房产系统关键技术功能的详细解析: 一、房源管理 房源信息录入与编辑:支持全面的房源信息录入,包括房屋位置、面积、户型…

C++第四十一弹---C++11新特性深度解析:让你的代码更现代、更高效(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C11简介 2. 统一的列表初始化 2.1 {}初始化 2.2 std::initializer_list 3. 声明 3.1 auto 3.2 decltype 3.3 nu…

arcgis依据字段分组

脚本代码: UniqueDict {} def isDuplicateIndex(inValue): UniqueDict.setdefault(inValue,0) UniqueDict[inValue] 1 return UniqueDict[inValue] 输出值 isDuplicateIndex( !地块编号! )

临床试验中缺失数据的问题讨论

一、数据缺失的原因: (1)AE或疗效退出; (2)结局变量不适用(无法获得结局变量); (3)失访; (4)数据采集失误&am…

云安全已经很好,但如何让它更好呢

尽管云计算很安全,但并不能完全避免数据泄露。随着云计算逐渐成为IT的重要部分,现在企业必须更认真地考虑如何加强云服务提供商默认安全基础设施的安全性。 传统云服务提供商都在努力为其客户提供强大的安全措施,他们通常会提供服务器端加密…

佰朔资本:市场转机正在逐步孕育 关注银行、电力等板块

商场起色正在逐渐孕育。中报宣布期即将以前,商场将完结盈利预期下修,一同美联储9月降息信号激烈,若协作国内方针加码发力信号,商场有望翻开向上空间。短期除高胜率的稳定盈利资产和中报超预期且景气继续方向,亦可注重中…

ES(索引数据库)导入MySQL全量(批量导入)和增量数据Canal增量数据同步利器

索引库数据管理 秒杀商品数量庞大,我们要想实现快速检索,不建议直接使用关系型数据库查找。不建议使用Redis缓存所有数据,因为秒杀商品量大,会影响Redis的性能,并且Redis的条件检索能力偏弱。我们可以使用Elasticsear…

Linux:NAT等相关问题

目录 1:NAT背景 2:NAT IP转换过程 3:NATP 4:正向代理 5:反向代理 6:NAT和代理服务器 应用场景 实现方法 1:NAT背景 IPv4地址耗尽:随着互联网的迅速发展,连接到…

[Leetcode 105][Medium] 从前序与中序遍历序列构造二叉树-递归

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 题目地址 二、整体思路 前序遍历得到的是[根结点|左子树|右子树],中序遍历得到的是[左子树|根结点|右子树] 那么可以设立一个递归函数,作用是利用前序遍历的数组和中序遍历的数组构建一个节点…

汇川技术|Inoproshop软件菜单[在线、调试]

哈喽,你好啊,我是雷工! 现如今学习资源是容易获取了,像我网盘里堆了7T的资料,有很多还没看过,总是见到了就收藏起来,但是真的看不过来啊。有时间和精力的小伙伴可以找自己感兴趣的看起来。 本…

景商场双目客流量摄像机,具有100°宽视角,识别范围广

在当今竞争激烈的商业环境中,商场管理者们一直在寻求更有效的方法来了解顾客行为、优化运营策略。商场双目客流量摄像机的出现,为商场管理带来了新的机遇。 一、功能强大 商场双目客流量摄像机具有多项强大功能。首先,它拥有 100 宽视角&…

雷达水文监测站

雷达水文监测站是一种利用雷达技术进行水文监测的设备,其功能主要包括以下几个方面: 水位监测:雷达水文监测站可以实时监测水体的水位变化,通过测量水面到雷达发射器的距离来计算水位。 流量监测:根据水位的变化&…

西门子一个PLC两个HMI分别显示不同报警内容

当前项目为一个PLC带两个HMI,功能上两个站完全分离,但是为了避免重复绘制HMI,先将两个站点报警链接到同一个HMI上,同时又需要指定站点的HMI单独显示该站点的报警;否则会出现如下情况,两个站都显示全部的报警…

传输大咖33 | 适合企业内外网文件交换系统是怎样的?

企业的内外网文件交换是企业日常运营的重要环节。然而,随着技术的发展,企业的文件数据量日益增长,文件的格式也越来越复杂多样。传统的内外网文件交换方式也逐渐显露出不足之处,对于企业来说,寻求更加高效、安全、可靠…

YOLOv9改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题: 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值,这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足: 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…

Word文件密码忘记,该如何才能编辑Word文件呢?

Word文件打开之后,发现编辑功能都是灰色的,无法使用,无法编辑,遇到这种情况,是因为Word文件设置了限制编辑导致的。一般情况下,我们只需要输入Word密码,将限制编辑取消就可以正常编辑文件了&…

LLM大模型:生成式人工智能完全指南,240页pdf

《你最后一本需要的AI书籍。我们保证!》 AI技术发展如此迅速,这本书可能已经过时了!但别担心——《生成性AI完全过时指南》依然是任何想将生成性AI从玩具变成工具的人必读的书籍。无论未来如何变化,它都能教你如何充分利用AI。你…

FL Studio24.1.1.4239中文高级版破解补丁+永久免费激活码许可证

FL Studio 24.1.1.4239中文版,音乐制作人的“瑞士军刀” 在音乐制作的世界中,有一款软件被誉为“瑞士军刀”,那就是FL Studio 24.1.1.4239中文版。它不仅功能强大,而且界面友好,让音乐制作变得简单又有趣。今天&#…

大模型如何赚钱,杀手级应用是什么、创业机会在哪里?

除了通义大模型外,MiniMax、月之暗面、智谱AI、猎户星空、零一万物、百川智能六家大模型厂商已经与钉钉达成合作。目前,钉钉生态伙伴总数超过5600家,其中AI 生态伙伴已经超过100家;钉钉AI每天调用量超1000万次。 在下午的圆桌对话…