书生浦语训练营二期第三次作业

文章目录

  • 基础作业
    • 1. 在茴香豆 Web 版中创建自己领域的知识问答助手
      • 第一轮对话
      • 第二轮对话
      • 第三轮对话
      • 第四轮对话
      • 第五轮对话
    • 2.在 InternLM Studio 上部署茴香豆技术助手
      • 修改配置文件
      • 创建知识库
      • 运行茴香豆知识助手


基础作业

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

我上传了某机器人的控制接口协议文档

第一轮对话

在这里插入图片描述
回答正确:
在这里插入图片描述

第二轮对话

在这里插入图片描述
在这里插入图片描述
虽然没有返回JSON,但是设计的API调用顺序逻辑很合理

第三轮对话

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前后对话记忆的效果也很好。

第四轮对话

在这里插入图片描述
正确,并且还给出了解释
在这里插入图片描述

第五轮对话

在这里插入图片描述
对于没有直接列出,而是在文档中用数量范围表示的代码也能精准检索。
在这里插入图片描述

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

修改配置文件

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

  1. 命令行输入下面的命令,修改用于向量数据库和词嵌入的模型
sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
- `sed -i` 表示直接修改文件内容,而不是输出到终端。
  • 6s 表示要替换第6行的内容。
  • # 用作分隔符,可以替代常用的 /,以避免与路径中的 / 冲突。
  • .* 匹配任意字符,表示替换整行的内容。
  • embedding_model_path = "/root/models/bce-embedding-base_v1" 是要替换的新内容,设置了用于向量数据库和词嵌入的模型路径。

这条命令的作用是将 /root/huixiangdou/config.ini 文件的第6行修改为 embedding_model_path = "/root/models/bce-embedding-base_v1",设置了向量数据库和词嵌入使用的模型路径。

  1. 用于检索的重排序模型
sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini

与第一条命令类似,这条命令将 /root/huixiangdou/config.ini 文件的第7行修改为 reranker_model_path = "/root/models/bce-reranker-base_v1",设置了用于检索的重排序模型的路径。

  1. 和本次选用的大模型
sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini

与前两条命令类似,这条命令将 /root/huixiangdou/config.ini 文件的第29行修改为 local_llm_path = "/root/models/internlm2-chat-7b",设置了本次选用的大模型的路径。
在这里插入图片描述
现在config.ini中的地址信息都被更改了:

在这里插入图片描述

创建知识库

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

首先,下载 Huixiangdou 语料:

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

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

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

  • 接受问题列表,希望茴香豆助手回答的示例问题

    • 存储在 huixiangdou/resource/good_questions.json 中
      在这里插入图片描述
  • 拒绝问题列表,希望茴香豆助手拒答的示例问题

    • 存储在 huixiangdou/resource/bad_questions.json 中
    • 其中多为技术无关的主题或闲聊
    • 如:“nihui 是谁”, “具体在哪些位置进行修改?”, “你是谁?”, “1+1”
      在这里插入图片描述
      运行下面的命令,增加茴香豆相关的问题到接受问题示例中:
cd /root/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/huixiangdou/resource/good_questions.json

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

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

在确定好语料来源后,运行下面的命令,创建 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 生成答案。
运行截图:
在这里插入图片描述
拒答流程测试中,第一个问题“huixiangdou是什么?”顺利的通过了测试,检索模块也搜寻到了相关的语料。
在这里插入图片描述

第二个问题,被拒答模块成功的拒绝了:
但是我在跟着文档走的时候遇到了一个问题,提示
在这里插入图片描述
断言语句 assert (len(context) <= context_max_length) 用于确保上下文的长度(len(context))小于或等于允许的最大上下文长度(context_max_length)。如果条件不满足,就会引发 AssertionError。
我把retriver.py中的context_max_length变长了,之后可以实现和视频中一样的运行流程。
在这里插入图片描述
在这里插入图片描述

运行茴香豆知识助手

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

命令行运行:

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

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

  1. 首先,通过命令 python3 -m huixiangdou.main --standalone 启动茴香豆程序。--standalone 参数表示以独立模式运行。

  2. 程序开始加载各种模型和配置:

    • 加载了一些自然语言处理的模型,如 SentenceTransformer 和 BCEmbedding 的 RerankerModel。
    • 加载了一些配置文件,如 config.ini,其中包含了模型路径、数据路径和日志路径等设置。
  3. 程序启动了一个 HTTP 服务,监听在 0.0.0.0:8888,等待客户端的请求。

在这里插入图片描述

  1. 收到一个问题 “huixiangdou 是什么?”,程序开始处理(使用Prompt和internlm2-7b进行交互):
    • 首先判断这是一个有主题的疑问句,得分(这里打分好像失败了,模型回复无法进行打分)。
    • 然后提取出问题的主题是 “huixiangdou 的含义或定义”。
    • 在知识库中搜索相关的材料,找到了 README.md 文件,判断问题和材料的相关度为8分。
    • 使用 InternLM2-chat-7b 模型根据材料生成了一个回答,解释了 HuixiangDou 的定义和特点。
    • 将问题、回答和相关材料返回给客户端。
      在这里插入图片描述
      在这里插入图片描述

最后,这是茴香豆返回的最终答案:
在这里插入图片描述

  1. 收到另一个问题 “茴香豆怎么部署到微信群”,程序再次处理:
    • 判断这是一个得分为8分的疑问句,主题是 “茴香豆的微信部署”。
    • 在知识库中找到了相关的 README_zh.md 文件,问题和材料的相关度为8分。
    • 使用 InternLM2-chat-7b 模型根据材料生成了一个详细的部署步骤说明。
    • 将问题、回答和相关材料返回给客户端。
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述

茴香豆返回的最终答案:
在这里插入图片描述

  1. 收到第三个问题 “今天天气怎么样?”,程序判断这个问题与知识库无关,直接返回空答案。
    (这里判断主题相似度的prompt好像缺失了,直接就返回了空答案。)
    在这里插入图片描述

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

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

相关文章

多线程学习-等待唤醒机制

目录 1.普通生产者与消费者方式 2.加入阻塞队列 等待唤醒机制即通过wait和notify实现多线程之间的通信&#xff0c;进而实现多线程协同工作。 1.普通生产者与消费者方式 生产者和消费者是一种经典的多线程协同工作模式&#xff0c;以厨师&#xff08;生产者&#xff09;和顾…

Linux中shell脚本的学习第一天,编写脚本的规范,脚本注释、变量,特殊变量的使用等,包含面试题

4月7日没参加体侧的我自学shell的第一天 Shebang 计算机程序中&#xff0c;shebang指的是出现在文本文件的第一行前两个字符 #&#xff01; 1)以#!/bin/sh 开头的文件&#xff0c;程序在执行的时候会调用/bin/sh, 也就是bash解释器 2)以#!/usr/bin/python 开头的文件&#…

【问题处理】银河麒麟操作系统实例分享,银河麒麟高级服务器操作系统mellanox 网卡驱动编译

1.Mellanox 网卡源码驱动下载链接&#xff1a; https://www.mellanox.com/downloads/ofed/MLNX_EN-5.7-1.0.2.0/MLNX_EN_SRC-5.7-1.0.2.0.tgz 2.系统及内核版本如下截图&#xff1a; 3.未升级前 mellanox 网卡驱动版本如下&#xff1a; 4.解压 “MLNX_EN_SRC-5.7-1.0.2.0.tg…

汇编——SSE打包整数

SSE也可以进行整数向量的加法&#xff0c;示例如下&#xff1a; ;sse_integer.asm extern printfsection .datadummy db 13 align 16pdivector1 dd 1dd 2dd 3dd 4pdivector2 dd 5dd 6dd 7dd 8fmt1 db "Packed Integer Vector 1: %d, %d, %d, %d",…

蓝桥杯练习系统(算法训练)ALGO-957 P0703反置数

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾&#xff0c;那么在它的…

探索7个MAMP本地开发环境的高效替代软件

什么是本地开发环境 本地开发环境是Web开发环境中的一种类型&#xff0c;它是指开发者自己的计算机上配置的一套用于开发和测试网站或应用程序的软件集合。这套环境使得开发者可以在本地计算机上构建和测试网站&#xff0c;而无需实时部署到服务器。 创建本地开发环境有两种方…

论文阅读AI工具链

文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…

读所罗门的密码笔记13_群雄逐鹿(下)

1. 中国 1.1. 数字巨龙开始腾飞 1.1.1. 基于技术发展所创造的繁荣&#xff0c;虽然受到各方的干扰&#xff0c;但是使得大众更加支持数字政策 1.1.1.1. 数字服务广泛易得&#xff0c;并不意味着人们信任技术 1.1.2. 争取人工智能领导权的竞赛彰显了中国的雄心壮志 1.1.2.1…

[挖坟]如何安装Shizuku和LSPatch并安装模块(不需要Root,非Magisk)

2023年12月13日&#xff0c;LSPatch 停止维护 2024年1月8日&#xff0c;LSPosed 停止维护 2024年1月8日&#xff0c;ZygiskNext 停止维护 2024年1月9日&#xff0c;KernelSU 停止维护 这里使用 ColorOS 14 演示&#xff0c;其他品牌手机类似 安装 Shizuku 官网: https://shiz…

页面转word的那些事

背景 有些时候需要将页面内容或者是页面的数据通过word进行下载&#xff0c;以方便客户进行二次编辑&#xff0c;而不是直接导出图片或者是pdf。 想在页面端点击下载成word&#xff0c;那必然需要服务端来进行读写文件&#xff0c;无论是你后端编辑好的内容流&#xff0c;还是…

BMP280芯片I2C驱动开发指南

这颗芯片不太容易焊接&#xff0c;不能长时间风枪吹&#xff0c;否则容易掉壳。 第一部分 硬件连接 电路很简单&#xff0c;没什么需要注意的。 第二部分 软件驱动 本来打算使用SPL06的&#xff0c;结果焊接掉壳了&#xff0c;更换成bmp280了。函数名没有变过来。。。 void …

2.网络编程-HTTP和HTTPS

目录 HTTP介绍 HTTP协议主要组成部分 GET 和 POST有什么区别 常见的 HTTP 状态码有哪些 http状态码100 HTTP1.1 和 HTTP1.0 的区别有哪些 HTTPS 和 HTTP 的区别是什么 HTTP2 和 HTTP1.1 的区别是什么 HTTP3 和 HTTP2 的区别是什么 HTTPS的请求过程 对称加密和非对称…