码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • (提供数据集下载)基于大语言模型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!!!

  • 相关阅读:
    django的信号signals详解
    重磅发布!RflySim Cloud 智能算法云仿真平台亮相,助力大规模集群算法高效训练
    arcgis中编码方式改变引起的shp文件乱码、字符截断问题处理
    C++11 - 8 -智能指针
    flutter是什么
    学习JAVA的第二天(基础)
    打工人办公环境布置篇
    Python分享之路径与文件 (os.path包, glob包)
    实战项目【7】MEMS惯性传感器的精度参数和单位换算
    vue-创建项目
  • 原文地址:https://blog.csdn.net/qq_39813001/article/details/136227790
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号