(提供数据集下载)基于大语言模型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!!!

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

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

相关文章

微服务-微服务API网关Spring-clould-gateway实战

1. 需求背景 在微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢? 如果根据每个微服务的地址发起调用,存在如下问题: 1.客户端多次请求不同的微服务,会增加客户端…

Linux使用C语言获取进程信息

Linux使用C语言获取进程信息 Author: OnceDay Date: 2024年2月22日 漫漫长路,才刚刚开始… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档: Linux proc目录详解_/proc/mounts-CSDN博客Linux下/proc目录介绍 - 知乎 (zhihu.com)Linux内…

大语言模型的开山之作—探秘GPT系列:GPT-1-GPT2-GPT-3的进化之路

模型模型参数创新点评价GPT1预训练微调, 创新点在于Task-specific input transformations。GPT215亿参数预训练PromptPredict, 创新点在于Zero-shotZero-shot新颖度拉满,但模型性能拉胯GPT31750亿参数预训练PromptPredict, 创新点…

openssl3.2 - 编译 - zlib.dll不要使用绝对路径

文章目录 openssl3.2 - 编译 - 编译时的动态库zlib.dll不要使用绝对路径概述测试zlib特性在安装好的目录中是否正常笔记70-test_tls13certcomp.t80-test_cms.t对测试环境的猜测从头再编译测试安装一次测试一下随便改变位置的openssl用到zlib时是否好使测试一下随便改变位置的op…

工信部等九部门:打造一批实现制造过程数字孪生的数字化转型标杆工厂

“人工智能技术与咨询” 发布 培育一批科技领军人才、青年骨干人才,以及一批既懂原材料工业又懂数字技术的复合型人才。依托职业教育提质培优行动计划,加速培育数字化转型急需紧缺的工程师和技术技能人才。支持引进数字化转型海外高端人才。 &#xff…

Codeforces Round 927 (Div. 3)

F. Feed Cats 题目大意 给一长度为的数轴,个区间在数轴上选取一些点作为特殊点在满足个区间中,每个区间内只能有一个特殊点问最多能选多少个特殊点 解题思路 对于每个点有放或不放两种状态考虑表示位置可能放或不放的最优结果若不放,若放…

蓝桥杯备赛系列——倒计时50天!

蓝桥杯备赛系列 倒计时50天! 前缀和和差分 知识点 **前缀和数组:**假设原数组用a[i]表示,前缀和数组用sum[i]表示,那么sum[i]表示的是原数组前i项之和,注意一般用前缀和数组时,原数组a[i]的有效下标是从…

罗克韦尔AB的PLC实现ModbusTCP和ModbusRTU协议标签方式通讯

本文是通过IGT-DSER智能网关读写AB罗克韦尔Compact、Control系列PLC的标签数据缓存并转为Modbus从站协议,与上位机通讯的案例。 打开智能网关的参数软件(下载地址),通过功能->数据转发与平台对接,再选择数据转发与缓存’,进入以…

Linux:Jenkins用户权限和管理

1.下载插件 由于Jenkins的默认权限管理并不是很精细所以我们安装一个插件进行权限的一个管理 插件名称为:Role-based Authorization Strategy 安装完插件我们再去配置一下 进入全局安全配置 选择这个Role-Based Strategy策略然后保存 2.创建角色 我们这里主要使…

微信小程序 --- wx.request网络请求封装

网络请求封装 网络请求模块难度较大,如果学习起来感觉吃力,可以直接学习 [请求封装-使用 npm 包发送请求] 以后的模块 01. 为什么要封装 wx.request 小程序大多数 API 都是异步 API,如 wx.request(),wx.login() 等。这类 API 接口…

KafKa3.x基础

来源:B站 目录 定义消息队列传统消息队列的应用场景消息队列的两种模式 Kafka 基础架构Kafka 命令行操作主题命令行操作生产者命令行操作消费者命令行操作 Kafka 生产者生产者消息发送流程发送原理生产者重要参数列表 异步发送 API普通异步发送带回调函数的异步发送…

微服务篇之分布式系统理论

一、CAP定理 1.什么是CAP 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标: 1. Consistency(一致性)。 2. Availability(可用性)。 3. Partition tolerance &#xff0…