Skip to content

QiZhenGPT: An Open Source Chinese Medical Large Language Model|一个开源的中文医疗大语言模型

License

Notifications You must be signed in to change notification settings

eddie201906/QiZhenGPT

 
 

Repository files navigation

启真医学大模型 & MedCopilot

QiZhenGPT

QiZhenGPT: An Open Source Chinese Medical Large Language Model

本项目利用启真医学知识库构建的中文医学指令数据集,并基于此在Chinese-LLaMA-Plus-7BCaMA-13BChatGLM-6B模型上进行指令精调,大幅提高了模型在中文医疗场景下效果,首先针对药品知识问答发布了评测数据集,后续计划优化疾病、手术、检验等方面的问答效果,并针对医患问答、病历自动生成等应用展开拓展。

MedCopilot

MedCopilot是一款基于启真医学大模型启真医学知识库医疗临床数据研发的智慧医疗助手,旨在为患者、医生和医院管理提供全面的智慧支持。通过整合先进的人工智能技术、丰富的医学知识和临床数据,MedCopilot将成为医疗行业的新质生产力。

MedCopilot目前已在浙江大学第二附属医院正式上线使用

image-20230525165523821

更新记录

更新

[2024/08/09] 更新MedCopilot相关信息;

[2023/06/27] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-12400),旨在提高医学领域疾病、药品知识问答的准确性;

[2023/06/09] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-6000),旨在提高医学领域药品知识问答的准确性;

[2023/06/02] 开源启真医学大模型体验版(QiZhen-CaMA-13B-Checkpoint-3600),旨在提高医学领域药品知识问答的准确性;

[2023/05/30] 开源20k训练数据(该数据集来自于启真医学知识库收集整理的真实医患知识问答数据以及在启真医学知识库的药品文本知识基础上,通过对半结构化数据设置特定的问题模板构造的指令数据);

[2023/05/30] 开源启真医学大模型体验版(QiZhen-ChatGLM-6B- Checkpoint-2500),旨在提高医学领域药品知识问答的准确性;

[2023/05/25] 开源药品适应症评测数据集;

[2023/05/24] 开源启真医学大模型体验版(QiZhen-Chinese-LLaMA-7B- Checkpoint-6000),旨在提高医学领域药品知识问答的准确性;

[2023/05/23] 开源启真医学大模型体验版(QiZhen-Chinese-LLaMA-7B- Checkpoint-3500),旨在提高医学领域药品知识问答的准确性;

MedCopilot功能细节

1. 功能清单助手

MedCopilot与 HIS系统和电子病历系统深度融合,利用启真医学大模型分析各个系统数据,自动汇总医生当日重要的工作事项。

  1. 入院患者统计与分析;
  2. 手术情况统计与分析;
  3. 会诊情况统计与分析;
  4. 文书书写情况统计与分析;
  5. 重点患者统计与分析;

2. 辅助诊疗助手

MedCopilot结合启真医学知识库和患者临床数据,提供个性化诊断和治疗建议,帮助医生做出更准确的医疗决策。

3. 医疗质量助手

MedCopilot依据国家医疗质量政策,实时监控医疗过程数据,及时发现和纠正潜在问题,提升整体医疗质量。

4. 病历文书助手

MedCopilot综合分析患者诊疗数据,自动生成符合规范的病历文书,减少医生的重复性工作,提高工作效率。

5. 其他功能

  1. 科研助手:论文解读
  2. 健康助手:报告解读、慢病管理

QizhenGPT细节

指令数据集构建

目前大多数开源的ChatLLM项目使用的是其他模型(如:ChatGPT)生成的指令数据,其不可避免的存在数据幻想的问题,数据幻想问题将严重影响LLM在实际场景中的应用和拓展。因此,本项目为了提高医疗领域的知识问答的准确性,使用如下方式构造指令数据集:

  1. 启真医学知识库收录的真实医患知识问答数据(疾病、药品、检查检验、手术、预后、食物等),共计560K条指令数据;
  2. 药品知识数据:在启真医学知识库的药品文本知识基础上,通过对半结构化数据设置特定的问题模板(如:“{药品}的适应病症是什么?”)构造指令数据集,共计180K条指令数据;
  3. 疾病知识数据:在启真医学知识库的疾病文本知识基础上,通过对半结构化数据设置特定的问题模板(如:“{疾病}的典型症状是什么?”)构造指令数据集,共计298K条指令数据;

训练细节

  1. QiZhen-Chinese-LLaMA-7B- Checkpoint-3500:本项目基于Chinese-LLaMA-Plus-7B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第3500 steps(训练23h50min) ;
  2. QiZhen-Chinese-LLaMA-7B- Checkpoint-6000:本项目基于Chinese-LLaMA-Plus-7B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第6000 steps(训练40h56min);
  3. QiZhen-ChatGLM-6B- Checkpoint-2500:本项目基于ChatGLM-6B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第2500 steps(训练16h20min);
  4. QiZhen-CaMA-13B-Checkpoint-3600:本项目基于CaMA-13B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第3600 steps(训练37h37min)。
  5. QiZhen-CaMA-13B-Checkpoint-6000:本项目基于CaMA-13B进行指令微调,该项目在7张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第6000 steps(训练54h30min)。
  6. QiZhen-CaMA-13B-Checkpoint-12400:本项目基于CaMA-13B进行指令微调,该项目在6张A800(80G)上进行训练,本次开源的是LoRA权重为训练过程中的第12400 steps(训练114h46min)。

模型下载

模型 指令数据集 Base Model LoRA下载
QiZhen-Chinese-LLaMA-7B- Checkpoint-3500 740K Chinese-LLaMA-Plus-7B 百度网盘
QiZhen-Chinese-LLaMA-7B- Checkpoint-6000 740K Chinese-LLaMA-Plus-7B 百度网盘
QiZhen-ChatGLM-6B- Checkpoint-2500 740K ChatGLM-6B 百度网盘
QiZhen-CaMA-13B-Checkpoint-3600 740K CaMA 百度网盘
QiZhen-CaMA-13B-Checkpoint-6000 740K CaMA 百度网盘
QiZhen-CaMA-13B-Checkpoint-12400 1038K CaMA 百度网盘

A Quick Start

QiZhen-Chinese-LLaMA-7B

  1. 环境安装;
pip install -r requirements.txt
  1. 获取Chinese-LLaMA-Plus-7B,详情见这里

  2. 下载LoRA,将模型下载并放在lora目录下;

  3. 执行scripts/merge_llama_plus.sh 脚本;

sh scripts/merge_llama_plus.sh
  1. 修改gradio_chinese-llama_demo.py里的模型位置参数;
  2. 启动demo;
python gradio_chinese-llama_demo.py

QiZhen-ChatGLM-6B

  1. 环境安装;
pip install -r requirements.txt
  1. 获取ChatGLM-6B,详情见这里

  2. 下载LoRA,将模型下载并放在lora目录下;

  3. 修改gradio_chatglm_demo.py里的模型位置参数;

  4. 启动demo;

python gradio_chatglm_demo.py

QiZhen-CaMA-13B-Checkpoint-3600

  1. 环境安装;
pip install -r requirements.txt
  1. 获取CaMA,详情见这里

  2. 下载LoRA,将模型下载并放在lora目录下;

  3. 修改gradio_cama_demo.py里的模型位置参数;

  4. 启动demo;

python gradio_cama_demo.py

预研

启真医学大模型坚持“数据+知识双轮驱动”的技术路线,通过大模型技术和医学知识库的紧密结合,融合医疗应用场景中的实际需求,从医学数据治理、医学推理、医患问答、病历自动生成、临床决策辅助支持系统等方面开展迭代研发,助力大模型技术在医疗行业的落地和应用实践。下图是“启真医学知识库辅助大模型生成答案”的案例,该项技术在测试后择机发布。

image-20230525165523821

image-20230525165523821

模型效果对比

测试1

  • input:非布司他能治疗什么疾病
  • ChatGLM:非布司他是一种用于治疗哮喘的新药,属于β2受体激动剂。它已经被批准用于治疗以下疾病: 1. 哮喘:非布司他是一种β2受体激动剂,可以刺激β2受体,从而缓解哮喘症状,包括呼吸困难、气促和胸闷。 2. 慢阻肺:非布司他也可以用于缓解慢阻肺引起的症状,包括呼吸急促、气促和咳嗽。 3. 过敏性鼻炎:非布司他可以减轻过敏性鼻炎引起的症状,包括鼻塞、流涕和打喷嚏。 4. 其他疾病:非布司他也被用于治疗其他疾病,如胡萝卜素血症和皮肤划痕症等。 需要注意的是,非布司他是一种药物,其治疗效果和安全性因人而异,最好在医生的指导下使用。
  • ChatGPT:非布司他(Fubuxitam)是一种药物,目前我的知识截至于2021年,不包括最新的医学研究和药物进展。根据我了解到的信息,非布司他是一种血小板凝集抑制剂,通常用于预防和治疗血栓性疾病。它可用于预防心脏病、脑血管疾病(例如中风)、静脉血栓栓塞(例如深静脉血栓形成和肺栓塞)以及其他与血栓形成有关的情况。

    然而,由于我无法提供最新的医学信息,我建议您咨询医疗专业人士或药剂师以获取关于非布司他的最新信息,并确切了解它在治疗特定疾病方面的适应症和有效性。
  • QiZhen-Chinese-LLaMA-7B- Checkpoint-3500:本品用于痛风患者高尿酸血症的长期治疗。
    本品为处方药,必须由医生根据病情开处方拿药,并遵医嘱用药,包括用法、用量、用药时间等。不得擅自按照药物说明书自行用药。
  • QiZhen-CaMA-13B-Checkpoint-3600:本品用于痛风患者高尿酸血症的长期治疗。

测试2

  • Input:氟奋乃静癸酸酯注射液的适应症

  • ChatGLM:氟奋乃静癸酸酯注射液是一种药物,适应症如下: 1. 用于治疗抑郁症、焦虑症和失眠等神经精神症状; 2. 用于治疗癫痫、脑外伤和脑动脉硬化等神经系统疾病; 3. 用于缓解慢性疼痛,如痛经、关节炎等疼痛性疾病; 4. 用于改善学习能力和记忆能力,可用于儿童和青少年的智力开发和改善学习效果; 5. 用于预防艾滋病病毒感染和治疗艾滋病。 氟奋乃静癸酸酯注射液是一种口服用药,通常用于治疗抑郁症、焦虑症和失眠等疾病。需要根据医生的建议来制定治疗方案。使用氟奋乃静癸酸酯注射液时,应遵循医生的建议和药品说明书中的用药方法和剂量。

  • ChatGPT:氟奋乃静癸酸酯注射液(Flumazenil Injection)是一种用于治疗苯二氮䓬类药物(如安定类药物)过量或过度使用所引起的镇静或催眠状态的药物。它作为一种苯二氮䓬类受体拮抗剂,能够逆转苯二氮䓬类药物的中枢神经系统抑制作用。<氟奋乃静癸酸酯注射液主要用于以下适应症:

    1. 苯二氮䓬类药物过量:当患者因安定类药物过量或过度使用而出现昏迷、嗜睡、呼吸抑制等症状时,氟奋乃静癸酸酯注射液可用于逆转这些症状。

    2. 麻醉中逆转:氟奋乃静癸酸酯注射液可用于在手术或其他麻醉操作结束后逆转苯二氮䓬类药物的镇静效果,帮助患者恢复清醒状态。

    3. 诊断用途:氟奋乃静癸酸酯注射液还可用于辅助诊断苯二氮䓬类药物中毒或过量情况。

    请注意,氟奋乃静癸酸酯注射液应由专业医生根据具体情况进行合理的使用和监控。在使用该药物之前,应仔细阅读并遵循药物说明书,并遵循医生的指导和建议。

  • QiZhen-Chinese-LLaMA-7B- Checkpoint-3500:本品用于精神分裂症、躁狂症等。 也可用于肌紧张性疼痛。

  • QiZhen-CaMA-13B-Checkpoint-3600:本品用于精神分裂症的各种表现。

测试3

  • input:藏青果茶有哪些主要作用?

  • ChatGLM:藏青果茶是一种天然的饮品,主要由青果、茶叶、蜂蜜等多种材料制成。它的主要作用包括: 1. 提高免疫力:藏青果茶中含有丰富的营养成分,如维生素C、维生素E等,可以增强人体的免疫力,提高身体的抵抗力,预防疾病的发生。 2. 促进消化:藏青果茶中含有丰富的纤维素,可以促进肠胃蠕动,帮助消化,预防便秘的发生。 3. 抗氧化作用:藏青果茶中的青果提取物具有较强的抗氧化作用,可以清除体内自由基,延缓衰老,预防疾病。 4. 降低血脂:藏青果茶中的茶叶提取物具有一定的降低血脂的作用,可以预防和治疗高血脂症。 5. 改善睡眠:藏青果茶中的蜂蜜具有一定的镇静作用,可以帮助缓解压力,改善睡眠质量,提高身体的自我修复能力。

  • ChatGPT:藏青果茶是一种以藏青果为主要原料制作的茶饮品,据我所知,它具有以下主要作用:

    1. 抗氧化作用:藏青果富含多种天然抗氧化剂,如多酚类化合物和维生素C,可帮助清除体内自由基,减缓细胞老化,增强免疫力。

    2. 促进消化:藏青果茶具有良好的消化刺激作用,有助于促进胃肠道蠕动,改善消化功能,缓解胃部不适和消化不良。

    3. 提供营养:藏青果富含维生素C、维生素E、维生素B群、矿物质等营养物质,饮用藏青果茶可以为身体提供所需的营养元素。

    4. 减肥瘦身:藏青果茶被认为具有减肥的效果,它可以促进新陈代谢,加速脂肪分解和燃烧,帮助减少体重和脂肪积累。

    5. 抗炎镇痛:藏青果茶含有一些具有抗炎和镇痛作用的成分,可以缓解关节疼痛、肌肉酸痛和头痛等不适。

    6. 改善睡眠:藏青果茶有助于放松神经系统,具有镇静和安抚作用,可以改善睡眠质量,缓解失眠问题。

    需要注意的是,以上作用主要是基于藏青果茶的传统用途和某些研究结果,具体效果因人而异,且可能受到个体差异和使用方式的影响。如果您有特定的健康问题或需要服用药物,建议咨询医生或专业保健人员的建议。

  • QiZhen-Chinese-LLaMA-7B- Checkpoint-3500:清热解毒、生津止渴。 可缓解发热、口渴、咽喉肿痛等症状。

  • QiZhen-CaMA-13B-Checkpoint-3600:藏青果茶具有清热利咽、消肿止痛的功效。

    藏青果茶可以用于缓解咽喉红肿疼痛、咽干灼热、声音嘶哑等症状。

测试4

  • input:赖特综合征临床表现有哪些?

  • ChatGLM:赖特综合征(赖特综合征I型)是一种先天性心脏杂音,其临床表现包括:

    1. 心脏杂音:赖特综合征I型的特征性心脏杂音是卵圆孔未闭引起的右向左分流杂音,通常表现为杂音强度、位置和频率的变异性。

    2. 肺动脉高压:赖特综合征I型患者通常患有肺动脉高压,这可能导致呼吸衰竭和心脏功能衰竭。

    3. 生长发育异常:大多数赖特综合征I型患者在儿童和青少年时期会表现出生长发育异常,如身材矮小、营养不良和巨人症。

    4. 心脏结构异常:尽管杂音是赖特综合征I型的主要临床表现,但部分患者也可能患有其他心脏结构异常,如心脏瓣膜疾病和心律失常。

    5. 其他症状:赖特综合征I型患者可能还具有其他症状,如疲劳、呼吸困难、胸痛、咳嗽、腹胀和便秘等。这些症状可能与其心脏杂音和肺动脉高压有关,但也可能与其他因素有关。

      需要注意的是,赖特综合征I型是一种罕见的疾病,其临床表现可能因个体差异而有所不同。如果怀疑自己患有赖特综合征I型,请及时咨询医生进行诊断和治疗。

  • ChatGPT:赖特综合征是指胃食管反流病(GERD)引起的下食管括约肌失弛缓和食管蠕动减弱所导致的一种疾病。它的主要临床表现包括:

    1. 吞咽困难:患者在吞咽时有被卡住的感觉,需要多次咽喉才能将食物吞咽下去。

    2. 胸痛:赖特综合征的患者常常出现胸痛,特别是在吃饭或者躺下之后容易加重。

    3. 嗳气和反酸:患者常感到嗳气和反酸,特别是在吃完饭或者躺下之后。

    4. 声音嘶哑:由于口腔和喉咙区域受到反流物的刺激,患者的声音可能变得嘶哑。

    5. 喉咙痛:反流物刺激喉咙黏膜所致。

      需要注意的是,赖特综合征的症状与其他疾病相似,因此需要通过相关检查和诊断方法确定诊断。

  • QiZhen-CaMA-13B-Checkpoint-12400:赖特综合征的主要临床表现为急性或慢性关节炎、尿道炎、结膜炎及皮肤黏膜病变等。

    赖特综合征是一种病因不明的慢性非特异性炎症性疾病,属于血清阴性脊柱关节炎的一种,其特征是反复发作性、游走性、不对称性的多关节炎,可伴有尿道炎、结膜炎、皮肤黏膜及眼部病变。

    赖特综合征的主要临床表现为急性或慢性关节炎、尿道炎、结膜炎及皮肤黏膜病变等。

    1.关节炎:最常见,任何关节均可受累,以膝、踝和足部小关节多见,局部可有红、肿、热、痛和功能障碍。

    2.尿道炎:表现为尿频、尿急、尿痛、尿道口红肿、尿道分泌物增多等。

    3.结膜炎:表现为单侧或双侧结膜炎症,可有结膜充血、水肿、眼睑浮肿、分泌物增多等。

    4.皮肤黏膜病变:表现为皮肤脂溢性红斑、生殖器红斑、脓疱疹、皮肤脓疱疹、皮肤溃疡。

实验评测

药品适应症评测

评测标准:随机选择94种药品数据,按照“{药品}的适应病症”组成指令,分别让ChatGPT(gpt3.5)、ChatGLM、QiZhe做出回答,然后请专业的医学人员对三个模型的答案该药品的药品说明书进行比对评分,以下是三个评分标准:

  • 标准1:模型答案命中一个适应症则回答正确;

  • 标准2:模型答案命中的适应症数目大于等于药品说明书适应症数目的1/2则回答正确;

  • 标准3:模型答案命中的适应症数目大于等于药品说明书适应症数目的2/3则回答正确;

模型 标准1 标准2 标准3
ChatGLM 39.36% 23.16% 14.74%
ChatGPT 47.87% 30.85% 15.96%
QiZhen-Chinese-LLaMA-7B-Checkpoint-3500 77.66% 55.32% 40.00%
QiZhen-Chinese-LLaMA-7B-Checkpoint-6000 90.43% 73.40% 65.96%
QiZhen-CaMA-13B-Checkpoint-3600 82.29% 60.62% 47.92%
QiZhen-CaMA-13B-Checkpoint-6000 90.43% 80.85% 72.34%
QiZhen-CaMA-13B-Checkpoint-12400 91.49% 82.98% 72.34%

备注:

  • 若QiZhen-Chinese-LLaMA-7B-Checkpoint-6000:回复有“复读现象”(我们正在持续修复这个问题),请将repetition_penalty参数调大;
  • QiZhen-ChatGLM-6B-Checkpoint-2500没有进行评测,因为我们在实验过程中发现ChatGLM在指令微调的过程中不能很好的满足医疗知识事实问答的要求:当要求其回复比较精准时,模型“复读”的现象比较严重;在解决“复读”的问题时,其回答的事实性很差(数据幻想严重);
  • QiZhen-CaMA-13B-Checkpoint-3600:该版本回复内容基本没有“复读”现象;
  • QiZhen-CaMA-13B-Checkpoint-6000:相较于QiZhen-CaMA-13B-Checkpoint-3600我们增大了LoRA的参数量,效果得到了有效的提升;
  • 更详细的评测细节和数据后续会开源。

疾病评测

评测标准:随机选择100种疾病数据,按照“哪些药物能治疗{疾病}?”、“{疾病}需要做哪些检查?”、“{疾病}的临床表现有哪些?”组成“治疗药物”、“检查检验”、“临床表现”指令,分别让ChatGPT(gpt3.5)、ChatGLM、QiZhen0做出回答,然后请专业的医学人员对三个模型的答案启真医学知识库疾病知识进行比对评分,以下是三个评分标准:

  • 标准1:模型答案命中一个“治疗药物”(“检查检验”、“临床表现”)则回答正确;

  • 标准2:模型答案命中的“治疗药物”(“检查检验”、“临床表现”)数目大于等于药品说明书适应症数目的1/2则回答正确;

  • 标准3:模型答案命中的“治疗药物”(“检查检验”、“临床表现”)数目大于等于药品说明书适应症数目的2/3则回答正确;

模型 临床表现标准1 临床表现标准2 临床表现标准3 检查检验标准1 检查检验标准2 检查检验标准3 治疗药物标准1 治疗药物标准2 治疗药物标准3
chatglm 90.00% 6.00% 3.00% 93.00% 11.00% 6.00% 60.00% 10.00% 5.00%
chatgpt 94.00% 11.00% 4.00% 97.00% 8.00% 5.00% 62.00% 11.00% 4.00%
QiZhen-CaMA-13B-Checkpoint-12400 95.00% 15.00% 7.00% 97.00% 20.00% 7.00% 75.00% 36.00% 23.00%

致谢

此外,本项目基于以下开源项目二次开发,在此对相关项目和研究开发人员表示感谢。

License及免责声明

License

详见LICENSE

免责声明

本项目相关资源仅供学术研究之用,严禁用于商业用途。 使用涉及第三方代码的部分时,请严格遵循相应的开源协议。模型生成的内容受模型计算、随机性和量化精度损失等因素影响,本项目不对其准确性作出保证。对于模型输出的任何内容,本项目不承担任何法律责任,亦不对因使用相关资源和输出结果而可能产生的任何损失承担责任。

引用说明

Technical paper is coming soon.

About

QiZhenGPT: An Open Source Chinese Medical Large Language Model|一个开源的中文医疗大语言模型

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.4%
  • Shell 0.6%