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

2024-04-08 1481阅读

文章目录

  • 基础作业
    • 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 repodir
            git 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.json
                  echo '[
                      "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/huixiangdou
                  echo '[
                  "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)

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]