书生·浦语大模型全链路开源体系-第3课

书生·浦语大模型全链路开源体系-第3课

  • 书生·浦语大模型全链路开源体系-第3课
    • 相关资源
    • RAG 概述
    • 在 InternLM Studio 上部署茴香豆技术助手
      • 环境配置
        • 配置基础环境
        • 下载基础文件
        • 下载安装茴香豆
      • 使用茴香豆搭建 RAG 助手
        • 修改配置文件
      • 创建知识库
        • 运行茴香豆知识助手
    • 在茴香豆 Web 版中创建自己领域的知识问答助手

书生·浦语大模型全链路开源体系-第3课

为了推动大模型在更多行业落地应用,让开发人员更高效地学习大模型的开发与应用,上海人工智能实验室重磅推出书生·浦语大模型实战营,为开发人员提供大模型学习和开发实践的平台。
本文是书生·浦语大模型全链路开源体系-第3课的课程实战。

相关资源

  • InternLM项目地址

https://github.com/InternLM/InternLM

  • InternLM2技术报告

https://arxiv.org/pdf/2403.17297.pdf

  • 书生·万卷 数据

https://opendatalab.org.cn/

  • 课程链接

https://www.bilibili.com/video/BV1AH4y1H78d/

RAG 概述

RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追溯的推理过程等。提供更准确的回答、降低推理成本、实现外部记忆。

RAG 能够让基础模型实现非参数知识更新,无需训练就可以掌握新领域的知识。本次课程选用的茴香豆应用,就应用了 RAG 技术,可以快速、高效的搭建自己的知识领域助手。

在 InternLM Studio 上部署茴香豆技术助手

环境配置

配置基础环境

从官方环境复制运行 InternLM 的基础环境,命名为 InternLM2_Huixiangdou,在命令行模式下运行:

studio-conda -o internlm-base -t InternLM2_Huixiangdou

创建新的虚拟环境。

image-20240407214921836.png

安装必要的依赖库。

image-20240407220633102.png

安装完成。

image-20240407220739796.png

安装完成后,在本地查看环境。

conda env list

可以看到新创建的虚拟环境 InternLM2_Huixiangdou

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

conda activate InternLM2_Huixiangdou
下载基础文件

复制茴香豆所需模型文件,我们可以直接创建软链接,连接到share目录下默认下载好的模型文件。

# 创建模型文件夹
cd /root && mkdir modelscd /root/models# 复制BCE模型
ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 ./bce-embedding-base_v1
ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 ./bce-reranker-base_v1# 复制大模型参数(如果之前创建过软链接,这步可以不用执行)
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b ./internlm2-chat-7b# 安装 python 依赖
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# 由于重启开发机会丢失安装的系统软件,所以以下系统软件每次重启开发机都需要重新安装。如果没有必要,以下步骤可不执行。
# 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

image-20240407221255802.png

依赖安装完成。

image-20240407222116811.png

下载安装茴香豆

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

cd /root/code
# 下载 repo
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440

image-20240407222359312.png

使用茴香豆搭建 RAG 助手

修改配置文件

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

用于向量数据库和词嵌入的模型

sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/code/huixiangdou/config.ini

用于检索的重排序模型

sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/code/huixiangdou/config.ini

和本次选用的大模型

sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/code/huixiangdou/config.ini

修改好的配置文件应该如下图所示:

image-20240407224638413.png

创建知识库

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

首先,下载 Huixiangdou 语料:

cd /root/code/huixiangdou && mkdir repodirgit clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou

image-20240407225203602.png

提取知识库特征,创建向量数据库。数据库向量化的过程应用到了 LangChain 的相关模块,默认嵌入和重排序模型调用的网易 BCE 双语模型,如果没有在 config.ini 文件中指定本地模型路径,茴香豆将自动从 HuggingFace 拉取默认模型。

除了语料知识的向量数据库,茴香豆建立接受和拒答两个向量数据库,用来在检索的过程中更加精确的判断提问的相关性,这两个数据库的来源分别是:

  • 接受问题列表,希望茴香豆助手回答的示例问题
    • 存储在 huixiangdou/resource/good_questions.json
  • 拒绝问题列表,希望茴香豆助手拒答的示例问题
    • 存储在 huixiangdou/resource/bad_questions.json
    • 其中多为技术无关的主题或闲聊
    • 如:“nihui 是谁”, “具体在哪些位置进行修改?”, “你是谁?”, “1+1”

运行下面的命令,增加茴香豆相关的问题到接受问题示例中:

cd /root/code/huixiangdou
mv resource/good_questions.json resource/good_questions_bk.jsonecho '["mmpose中怎么调用mmyolo接口","mmpose实现姿态估计后怎么实现行为识别","mmpose执行提取关键点命令不是分为两步吗,一步是目标检测,另一步是关键点提取,我现在目标检测这部分的代码是demo/topdown_demo_with_mmdet.py demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth   现在我想把这个mmdet的checkpoints换位yolo的,那么应该怎么操作","在mmdetection中,如何同时加载两个数据集,两个dataloader","如何将mmdetection2.28.2的retinanet配置文件改为单尺度的呢?","1.MMPose_Tutorial.ipynb、inferencer_demo.py、image_demo.py、bottomup_demo.py、body3d_pose_lifter_demo.py这几个文件和topdown_demo_with_mmdet.py的区别是什么,\n2.我如果要使用mmdet是不是就只能使用topdown_demo_with_mmdet.py文件,","mmpose 测试 map 一直是 0 怎么办?","如何使用mmpose检测人体关键点?","我使用的数据集是labelme标注的,我想知道mmpose的数据集都是什么样式的,全都是单目标的数据集标注,还是里边也有多目标然后进行标注","如何生成openmmpose的c++推理脚本","mmpose","mmpose的目标检测阶段调用的模型,一定要是demo文件夹下的文件吗,有没有其他路径下的文件","mmpose可以实现行为识别吗,如果要实现的话应该怎么做","我在mmyolo的v0.6.0 (15/8/2023)更新日志里看到了他新增了支持基于 MMPose 的 YOLOX-Pose,我现在是不是只需要在mmpose/project/yolox-Pose内做出一些设置就可以,换掉demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py 改用mmyolo来进行目标检测了","mac m1从源码安装的mmpose是x86_64的","想请教一下mmpose有没有提供可以读取外接摄像头,做3d姿态并达到实时的项目呀?","huixiangdou 是什么?","使用科研仪器需要注意什么?","huixiangdou 是什么?","茴香豆 是什么?","茴香豆 能部署到微信吗?","茴香豆 怎么应用到飞书","茴香豆 能部署到微信群吗?","茴香豆 怎么应用到飞书群","huixiangdou 能部署到微信吗?","huixiangdou 怎么应用到飞书","huixiangdou 能部署到微信群吗?","huixiangdou 怎么应用到飞书群","huixiangdou","茴香豆","茴香豆 有哪些应用场景","huixiangdou 有什么用","huixiangdou 的优势有哪些?","茴香豆 已经应用的场景","huixiangdou 已经应用的场景","huixiangdou 怎么安装","茴香豆 怎么安装","茴香豆 最新版本是什么","茴香豆 支持哪些大模型","茴香豆 支持哪些通讯软件","config.ini 文件怎么配置","remote_llm_model 可以填哪些模型?"
]' > /root/code/huixiangdou/resource/good_questions.json

image-20240407225630809.png

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

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

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

# 创建向量数据库存储目录(该步骤可以不做,后续程序会自动创建)
cd /root/code/huixiangdou && mkdir workdir # 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json

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

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

image-20240407230020798.png

image-20240407230048939.png

运行茴香豆知识助手

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

命令行运行:

cd /root/code/huixiangdou/# 填入问题
sed -i '74s/.*/    queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/code/huixiangdou/huixiangdou/main.py# 运行茴香豆
python3 -m huixiangdou.main --standalone

image-20240407231243120.png

image-20240407231330571.png

RAG 技术的优势就是非参数化的模型调优,这里使用的仍然是基础模型 InternLM2-Chat-7B, 没有任何额外数据的训练。面对同样的问题,我们的茴香豆技术助理能够根据我们提供的数据库生成准确的答案:

image-20240407231451312.png

image-20240407231512978.png

在茴香豆 Web 版中创建自己领域的知识问答助手

茴香豆 Web 版 在 OpenXLab 上部署了混合模型的 Demo,我们可以上传自己的语料库测试效果。

首先,打开茴香豆 Web 版的网址,设置一个知识库的名称OpenXLab浦源平台服务协议,并设置一个容易记住的密码,点击前往按钮,创建一个知识库并进入。

image-20240407232320891.png

在知识库中,我们需要上传自己的知识库文件,支持PDF、Word、MarkDown、Excel等格式的文件。选择知识库文件,点击确认上传按钮进行上传。

image-20240407232423537.png

文件上传成功后,我们就拥有了一个有相关领域知识的知识库。然后我们就可以进行提问了。

image-20240407232740784.png

首先,我们来问一下协议的范围,看看茴香豆怎么说。可以看到,RAG助手可以正常从知识库中检索知识、生成回答内容。

image-20240407233048613.png

再来问问服务内容,它确实能检索并回答。

image-20240407233357925.png

如果你不知道怎么注册浦源账号,你也可以问问茴香豆,它会告诉你流程的。

image-20240407233610591.png

一定要注意自己的行为规范,科学、合理地使用平台。如果你不知道哪些地方需要注意,那就来问茴香豆吧。

image-20240407233937408.png

当然,一定要注意自己的信息保密和隐私保护哦,茴香豆会告诉你该怎么做的。

image-20240407234222341.png

至此,我们就完成了在茴香豆 Web 版中创建自己领域的知识问答助手,并且完成了几轮问题问答。

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

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

相关文章

工作日常随记-总

软件测试主管工作日常随记-总 前言 接下来,我将开始散文式地记录我作为一位从业3年多的软件测试人员的软测经验。这是我在繁忙的日常工作的中跋涉出来又又投入的另一工作(bushi)另一兴趣中去。 我将简单(偏流水线向)…

50. QT/QML中创建多线程的方式汇总

1. 说明 在QT / QML中创建线程主要有三种方式。第一种:在定义类时继承 QThread 这个类,然后重写父类的虚函数 run(),将子线程需要执行的业务代码放到 run() 函数当中即可。**注意:**这种方式官方已经摒弃了。第二种:使用moveToThread()函数将需要在子线程中执行的函数类移…

【每日练习】二叉树

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:二叉树 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 文章目录 一、100. 相同的树1. 题目简介2.…

问题汇总

一、TCP的粘包和拆包问题? TCP在发送和接受数据的时候,有一个滑动窗口来控制接受数据的大小,这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送,数据包的大小是不固定的,有时候比缓冲区大有时候…

NIST再次强调:2024-2030年,必须升级至抗量子算法

4月10日至12日,美国国家标准与技术研究院(NIST)在马里兰州罗克维尔举办第五届NIST PQC(后量子密码学)标准化会议,该会议的目的是对PQC算法进行全面讨论(包括已选定和正在评估的算法)…

如何处理ubuntu22.04LTS安装过程中出现“Daemons using outdated libraries”提示

Ubuntu 22.04 LTS 中使用命令行升级软件或安装任何新软件时,您可能收到“Daemons using outdated libraries”,“Which services should be restarted?”的提示,提示下面列出备选的重启服务,如下。 使用以下命令,能够…

LangChain - 文档加载

文章目录 一、关于 检索二、文档加载器入门指南 三、CSV1、使用每个文档一行的 CSV 数据加载 CSVLoader2、自定义 csv 解析和加载 (csv_args3、指定用于 标识文档来源的 列(source_column 四、文件目录 file_directory1、加载文件目录数据(Di…

day05-java面向对象(上)

5.1 面向对象编程 5.1.1 类和对象 1、什么是类 类是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合。 属性:就是该事物的状态信息。 行为:就是在你这个程序中,该状态信息要做什么操作,或者基于事物…

Go操作Kafka之kafka-go

Kafka是一种高吞吐量的分布式发布订阅消息系统,本文介绍了如何使用kafka-go这个库实现Go语言与kafka的交互。 Go社区中目前有三个比较常用的kafka客户端库 , 它们各有特点。 首先是IBM/sarama(这个库已经由Shopify转给了IBM),之…

Triton Server Python 后端优化

接上文 不使用 Docker 构建 Triton 服务器并在 Google Colab 平台上部署 HuggingFace 模型 MultiGPU && Multi Instance Config 追加 instance_group [{count: 4kind: KIND_GPUgpus: [ 0, 1 ]} ]Python Backend Triton 会根据配置信息启动四个实例,…

物联网数据服务平台

随着物联网技术的迅猛发展,海量数据的产生和应用成为推动工业数字化转型的核心动力。在这个数据为王的时代,如何高效地收集、处理、分析并应用这些数据,成为了企业关注的焦点。物联网数据服务平台应运而生,为企业提供了全面、高效…

CLR学习

视频链接:《CLR十分钟》系列之CLR运行模型_哔哩哔哩_bilibili 什么是 CLR 公共语言运行时(Common Language Runtime CLR) 是一个可有多种编程语言使用的 运行时,CLR 的核心功能(比如 内存管理,程序集加载…

耐受强酸碱PFA试剂瓶高纯实验级进口聚四氟乙烯材质取样瓶

PFA取样瓶作为实验室中常备器皿耗材之一,主要用来盛放、储存和运输样品,根据使用条件不同,也可叫特氟龙试剂瓶、样品瓶、储样瓶、广口瓶、进样瓶等。广泛应用于半导体、新材料、多晶硅、硅材、微电子等行业。近年来随着新兴行业的快速发展&am…

【ARM 裸机】开发环境搭建

1、Ubuntu 和 Windows 文件互传 使用过程中,要频繁进行 Ubuntu 和 Windows 的文件互传,需要使用 FTP 服务; 1.1、开启 Ubuntu 下的 FTP 服务 //安装 FTP 服务 sudo apt-get install vsftpd //修改配置文件 sudo vi /etc/vsftpd.conf//重启…

某想主站的短信轰炸漏洞

很难想象主站居然还有这漏洞 某天的一个晚上,默默的打开了电脑,娴熟的打开了Burp suite, 看到一个很熟悉的注册登录页面,开始测试。 很难想象,还有验证码时效性,于是怼了半刻钟,终于让我逮到了他的数据包…

TechTool Pro for Mac v19.0.3中文激活版 硬件监测和系统维护工具

TechTool Pro for Mac是一款专为Mac用户设计的强大系统维护和故障排除工具。它凭借全面的功能、高效的性能以及友好的操作界面,赢得了广大用户的信赖和好评。 软件下载:TechTool Pro for Mac v19.0.3中文激活版 作为一款专业的磁盘和系统维护工具&#x…

IDEA 设置类注释模板作者、日期、描述等信息(推荐标准!)

idea注释模版配置 idea作为越来越多程序员使用的开发工具,平时的代码注释也非常的关键,类上注释和方法上注释每次换电脑或者新同事入职都要统一修改,找了网上好多教程都写的乱七八糟的啥都有,为方便统一就自己写一个操作方法&…

制氧机生产厂家如何确保氧气管道安全高效

制氧机作为生产氧气的关键设备,其安全性与高效性受到了广泛关注。作为制氧机生产厂家,确保氧气管道的安全高效运行,不仅是责任所在,更是对用户生命财产安全的有力保障。那么,制氧机生产厂家如何确保氧气管道安全高效生…

期货量化交易软件:MQL5 中的范畴论 (第 15 部分)函子与图论

概述 在上一篇文章中,我们目睹了前期文章中涵盖的概念(如线性序)如何视作范畴,以及为什么它们的“态射”在与其它范畴相关时即构成函子。在本文中,我们赫兹量化软件将阐述来自前期文章中的概括,即通过查看…

浙大恩特客户资源管理系统 i0004_openFileByStream.jsp 任意文件读取漏洞复现

0x01 产品简介 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。 0x02 漏洞概述 浙大恩特客户资源管理系统 i0004_openFileByStream.jsp接口处存在任意文件读取漏洞,未经身份验证攻…