当前位置: 首页 > news >正文

(提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战

文章目录

  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、提示词Prompt优化
    • 本地知识库目标
    • 操作步骤
    • 问答测试的预设问题
    • 原始数据情况
    • 数据集优化:预处理,先后准备了三份数据集
      • PreData1:极简数据集,txt格式
      • PreData2:按json结构处理的数据集,txt格式
      • PreData3:整理成文档章节的PDF数据集
      • 从1到3是一个逐步优化数据集的过程
    • Tip:每次优化重新对话测试时,建议重启模型。本人GPU冒烟了,才重启。
    • 创建本地知识库时文件处理参数调整
    • 对话时知识库配置参数调整
    • Prompt提示词优化
      • Round 1
      • Round 2
      • Round 3
      • Round 4
    • 数据集地址

(提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、提示词Prompt优化

本地知识库目标

  • 创建“神经内科典型病例目录”数据集,一共3个病例信息,包括基本信息、症状、体格检查、辅助检查、诊断、诊断依据等信息。
  • LangChain+ChatGLM3-6B WebUI中加载“神经内科典型病例目录”数据集作为本地知识库。
  • 在“对话”中进行神经内科典型病例相关问答。
    在这里插入图片描述

操作步骤

  • 数据集预处理
  • 建立本地知识库后,进行问答测试
  • 调优:数据集优化、本地知识库问答参数调整、Prompt提示词优化

问答测试的预设问题

  • Q:有几个病例?
  • Q:输出病例编号、性别、年龄。
  • Q:神经内科确诊疾病有哪些,输出名称。

原始数据情况

#神经内科典型病例目录

##病例一
###病史摘要 患者女,78岁。 入院前四小时突然觉得头痛,同时发现左侧肢体乏力,左上肢不能持物,左下肢不能行走,恶心伴呕吐胃内容物数次。无意识丧失,无四肢抽搐,无大小便失禁,即送医院急诊。

体格检查:神清,BP 185/95mmHg,HR
80次/分,律齐,EKG示窦性心律.对答切题,双眼向右凝视,双瞳孔等大等圆,对光反射存在,左鼻唇沟浅,伸舌略偏左。左侧肢体肌张力增高,左侧腱反射略亢进,左侧肌力III0,右侧肢体肌张力正常,肌力V0。左侧巴氏征(+),右侧病理症(-)。颈软,克氏征(-)。
辅助检查:头颅CT示右侧颞叶血肿。

数据集优化:预处理,先后准备了三份数据集

PreData1:极简数据集,txt格式

  • 收集资料:原始数据是从网上爬的病例神经内科典型病例,复制、粘贴到的txt文件。只有3个病例。
  • 格式处理:统一标点符号,包括换行符号;处理好段落内容逻辑,处理段落内出现的换行情况。
  • 删除冗余:删除序号,如1、2、3或a、b、c等。删除多余的空格。
    在这里插入图片描述

PreData2:按json结构处理的数据集,txt格式

将数据集按json处理
曾经尝试过进行以下这一步的操作,由于没有工具辅助,非常繁琐,尤其是key值的生成。放弃了。

段落内处理:确保段落内是类似于KV结构,如“症状”:“头疼”。

处理成了偷懒模式:

{ [“症状:头疼”],
[“体格检检:口齿欠清”] ,
[“体格检查:神志朦胧”] }

在这里插入图片描述

PreData3:整理成文档章节的PDF数据集

在这里插入图片描述

从1到3是一个逐步优化数据集的过程

  • 从PreData1开始进行对话测试,回答让人一脸黑线,无法沟通交流。
    在这里插入图片描述
  • PreData2能沟通交流,也有惊喜,但是不稳定
    “有几个病例”重复问几遍,只回答对过一次。而且基于Json尝试过几种修改方案,繁琐,而且新的json文件导入本地知识库报错(懒,不想正面面对报错的问题),遂放弃了,改用PDF。
    在这里插入图片描述
  • PreData3按照文章章节编辑,插入目录,貌似很顺利
    相对来说比较稳定,但是对话测试也是那么完美。这让我想起需要从对话参数、Prompt提示词解决问题。

Tip:每次优化重新对话测试时,建议重启模型。本人GPU冒烟了,才重启。

创建本地知识库时文件处理参数调整

FAISS
bge-large-zh

以下两项默认值需要修改:

段落文本最大长度:250
相邻文本重合长度:50

改成:

段落文本最大长度:50
相邻文本重合长度:5

对话时知识库配置参数调整

以下两项需要调整:

匹配知识条数:3
知识匹配分数阈值:1

修改成:

匹配知识条数:20

知识匹配分数阈值:1可以先不改,根据回答适当调整到0.8左右,试试效果再决定。

Prompt提示词优化

直接看多轮对话下来,对话是如何有序展开的吧。

Round 1

在这里插入图片描述

Round 2

在这里插入图片描述

Round 3

在这里插入图片描述

Round 4

在这里插入图片描述
完毕!

数据集地址

神经内科典型病例目录PreData1.txt

神经内科典型病例目录PreData2.txt

神经内科典型病例目录PreData3.pdf

Enjoy!!!

相关文章:

  • 航空领域中气象常识笔记
  • 什么是跨模态
  • HTML和CSS是前端开发中最基础的两个技术[入门级]
  • 游戏平台如何定制开发?
  • Spring之AOP源码解析(上)
  • 鸿蒙原生应用元服务实战-发布时多设备选择注意事项
  • 9、内网安全-横向移动Exchange服务有账户CVE漏洞无账户口令爆破
  • MacBook的nginx出现13: Permission denied 的问题分析和解决办法
  • 蓝桥杯备赛系列——倒计时50天!
  • Neo4j导入数据之JAVA JDBC
  • 消息中间件之RocketMQ为什么写文件这么快?
  • R语言【raster】——projectRaster():映射一个Raster对象
  • Laravel02 路由基本概念和用法 给视图传递请求参数
  • Docker Image(镜像)
  • sentinel的资源数据指标是如何采集
  • 77. Combinations
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java精华积累:初学者都应该搞懂的问题
  • JS基础之数据类型、对象、原型、原型链、继承
  • MySQL几个简单SQL的优化
  • Python_网络编程
  • Python进阶细节
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端攻城师
  • 前端学习笔记之观察者模式
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 深入浅出Node.js
  • 树莓派 - 使用须知
  • 异常机制详解
  • 用jQuery怎么做到前后端分离
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Java总结 - String - 这篇请使劲喷我
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #HarmonyOS:Web组件的使用
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2)(2.10) LTM telemetry
  • (20050108)又读《平凡的世界》
  • (C++17) std算法之执行策略 execution
  • (C语言)字符分类函数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (floyd+补集) poj 3275
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)一篇文章学会Java的常用API
  • (数据结构)顺序表的定义
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式