CMB 与 CMExam — 中文医疗评测双基准 AI-Ready Wikipedia | 千方病案医数集

合计 348,958 道中文医学考试题,覆盖医师/护理/药师/医技全职业评测线

来源 香港中文大学(深圳)FreedomIntelligence 团队与阿里巴巴集团等 url: http://cmedbenchmark.llmzoo.com/发布时间: 2026-09-08最后更新: 2026-09-08 阅读 4

信息速览

数据集名称CMB 与 CMExam — 中文医疗评测双基准 AI-Ready Wikipedia | 千方病案医数集
数据类型合计 348,958 道题,CMB 280,839 题,CMExam 68,119 题,JSON 与 CSV 格式,Apache-2.0 开放下载
规模非患者数据,考试题库
接入方式香港中文大学(深圳)FreedomIntelligence 团队与阿里巴巴集团等 url: http://cmedbenchmark.llmzoo.com/
AI 就绪度

数据集封面

CMB 与 CMExam — 中文医疗评测双基准 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 中文医疗基准 CMB 与 CMExam
英文全称 CMB: A Comprehensive Medical Benchmark in Chinese;CMExam: A Comprehensive Chinese Medical Exam Dataset
别名/简称 CMB、CMB-Exam、CMB-Clin、CMExam、CNMLE 评测集
疾病分类 覆盖 ICD-11 全部 27 个疾病组(CMExam 疾病组标注直接引用 ICD-11 修订版),其中以传统医学病证(TMDP)、消化系统、感染性疾病、内分泌与循环系统题量最大
SNOMED CT 未提供官方 SNOMED CT 映射;临床科室维度采用中国《医疗机构诊疗科目名录》(DMIDTC)36 类,建议经 ICD-11 官方桥接表转换
数据模态 中文文本:医学考试选择题(题干+选项+答案)、答案解析、教科书式病例问诊对话
AI 任务类型 多选题问答(单选/多选)、医学知识评测、开放解析生成、临床问诊对话评估
样本总数 合计 348,958 道选择题:CMB 280,839 题 + 74 例病例(208 问);CMExam 68,119 题
数据大小 CMB 仓库约 250 MB(含代码与数据压缩包);CMExam CSV 共 49.29 MB
数据格式 JSON(CMB-Exam/CMB-Clin)、CSV(CMExam train/val/test)
许可证 Apache-2.0(两个官方仓库均同);CMExam 另声明仅限学术研究用途
访问级别 开放(GitHub/HuggingFace 直接下载,无需注册)
DUO 标签 NRES(无限制)+ NPUNCU(非商业非营利,仅 CMExam 伦理声明层面)
语言 中文(简体)
首发日期 CMExam 2023-06(arXiv);CMB 2023-08-01(发布日)
最后更新 CMB 仓库最后推送 2024-03-28
发布机构 香港中文大学(深圳)、深圳市大数据研究院;阿里巴巴集团、哈佛大学、港科大(广州)等
官方主页 CMB 官网CMExam GitHub
下载地址 CMB data 目录CMExam data 目录
DOI 10.48550/arXiv.2308.08833(CMB);10.48550/arXiv.2306.03030(CMExam)
引用次数 CMB 论文 174+(Google Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方划分齐全且附带评测脚本,但多选题解析、双数据集统一 schema 与污染审计需自行实现(扣分项)
页面状态 published

§0 E-E-A-T 审核与免责声明

医学审核:千方病案医学编辑部交叉审核:§2 医学背景(中国医学考试体系与 ICD-11 疾病组映射)、§7 偏倚分析。

数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CMB 与 CMExam 均通过 GitHub/HuggingFace 开放下载,其中 CMExam 官方声明仅限学术与研究用途、禁止商业滥用。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。

§1 数据集概览

§1.0 📌 30 秒速览

这是什么? 两个中文医学考试题库组成的评测双基准。CMB 由香港中文大学(深圳)团队发布,把医师、护士、药师、医技四类职业从本科、考研、规培到高级职称的考试题汇总成 280,839 道选择题,外加 74 个教科书式复杂病例的问诊任务;CMExam 由阿里巴巴集团等团队发布,收录 68,119 道中国执业医师资格考试真题,且 85.24% 的题目附带官方答案解析,测试集每题还有疾病组、科室、学科、胜任力、难度五维标注。

为什么重要? 在 2023 年之前,评测一个模型"懂不懂中文医学"主要靠翻译英文题库,存在语境错位——中医"病"与"证"的辨析、中国执业考试特有的题型,翻译题根本考不出来。CMB 与 CMExam 第一次用本土考试建立了标准化标尺:CMB 提出了"60% 准确率 = 执业及格线"的隐喻,CMExam 则给出了 GPT-4 61.6% 对人类 71.6% 的差距基线。此后几乎所有中文医疗大模型的论文都用它们报告成绩。

我能用它做什么? 如果你在训练中文医疗大模型,可以用 CMB-train(269,359 题)或 CMExam train(54,497 题)做医疗知识注入,用各自官方测试集(CMB-test 11,200 题、CMExam test 6,811 题)报告成绩;如果你在做模型选型,可以直接查 CMB 排行榜;如果你在做错误分析,CMExam 测试集的五维标注能让你按疾病组和难度切片定位弱点。

§1.1 摘要

CMB(Wang et al., NAACL 2024)与 CMExam(Liu et al., NeurIPS 2023 Datasets and Benchmarks Track)采用相似的技术路线:以真实考试为源(CMB 用公开模拟考题、课程练习与易错题汇总,主体经 medtiku.com 授权;CMExam 直接采用执业医师资格考试真题),经过格式结构化(OCR/文本抽取)、去重、清洗与人工校验后,形成"题干—选项—答案(—解析)"结构的多选题库。CMB 按 6 大类 28 子类组织并从每子类抽 400 题构成 11,200 题的固定测试集;CMExam 按 80:10:10 随机划分为 54,497/6,811/6,811,并对测试集实施"GPT-4 初标 + 两名医学专业人员复核"的五维标注。两个基准的评测协议均以选项字母的精确匹配为主指标,CMB 另设零样本/少样本 × 有/无思维链四种策略取最优,并以 GPT-4 自动评分处理 CMB-Clin 的开放问答。

两者在"为什么选考试题"上的论证几乎一致:网络问答语料(论坛、患者社区)答案质量参差且缺乏客观 ground truth,而资格考试题目具备两个稀缺性质——标准答案经命题专家审核、以及一个天然的及格线锚点(60% 准确率对应执业能力)。区别在取舍:CMB 以广度优先(四职业 × 六层级 × 174 科目,但训练集基本无解析),CMExam 以深度优先(单一考试线,但 85.24% 题目带官方解析、测试集带五维标注)。理解这组互补关系是使用它们的第一原则:评测看 CMB 的广度切片,训练与解析研究看 CMExam 的深度监督。

§1.2 战略价值

维度一:中文医疗评测的"标尺"价值。 中文医疗 LLM 的论文评审普遍要求报告 CMB 或 CMExam 成绩:CMB 的 60% 及格线隐喻把模型分数直接翻译成"能不能考过执业医师",CMExam 则提供了人类成绩(71.6%)锚点。一个模型若在英文基准 USMLE 表现好而 CMB-Exam 中医子集失分,说明其能力主要来自英文语料的迁移而非本土医学知识——这种诊断只有本土题库能给出。

维度二:训练语料的规模价值。 两者均开放训练集:CMB-train 269,359 题是当前最大的中文医学选择题训练语料之一,CMExam train 54,497 题附带 85.24% 解析率、适合"答案+解析"双目标微调。CollectiveSFT(arXiv:2407.19705)等后续工作证明,在 CMB 类题库上做监督微调可把 7B 模型推到 77 分以上——但这也正是排行榜污染的根源(见 §6.5 坑点 3)。

§1.3 同类数据集横向对比

数据集 规模 语言 标注特色 差异化定位
CMB-Exam 280,839 题 中文 单选/多选,val 带解析;职业 × 层级双轴 覆盖医师/护理/药师/医技全职业与六个考试层级
CMExam 68,119 题 中文 85.24% 带解析;测试集五维标注(ICD-11/科室/学科/胜任力/难度) 执业医师真题 + 细粒度错误分析维度
MedMCQA 193,155 题 英文 4 选 1 单选 印度 AIIMS/NEET-PG 考试,英文侧最大医学 MCQ
MLEC-QA 21,700 题 中文 人工标注 A1-A5 题型 中国执业(药师等)考试早期代表,规模小于 CMB
ShenNong-TCM-EB 3,279 题 中文 A1/A2/A3/B1 题型 专注中医执业资格考试的垂直基准

§1.4 版本时间轴

时间 事件
2023-06-05 CMExam 论文首挂 arXiv(2306.03030),初始开源
2023-07-18 CMB GitHub 仓库创建
2023-08-01 CMB 正式发布(官网/HuggingFace 数据集上线)
2023-10 CMExam 论文被 NeurIPS 2023 Datasets and Benchmarks Track 接收(12 月 10 日正式出版)
2024-03-28 CMB GitHub 仓库最后推送(当前内容版本)
2024-04 CMB 论文正式发表于 NAACL 2024 Main Conference(pp. 6184-6205)

时间轴的两点读法:CMB 的"数据内容"自 2023-08 发布后基本冻结(此后仅维护性提交,最后推送 2024-03-28),其学术影响(NAACL 2024 发表、排行榜滚动收录)反而滞后于数据;CMExam 的数据、代码与论文在 2023 年内一次性定型,后续更新以 issue 修复与多模态延伸指引为主。两库都不应期待"新版本数据",应把注意力放在 §5.3 的污染管理与自建影子题集上。

§1.5 典型应用场景

  1. 医疗大模型发布评测:新模型在 CMB-test(11,200 题,四策略取最优)与 CMExam test(6,811 题)上报告成绩,与 GPT-4 及排行榜头部对比。
  2. 医疗知识注入微调:用 CMB-train 或 CMExam train 做继续预训练/SFT,随后在同一基准测试集量化增益(如 ChatGLM 零样本 26.3% → 微调后 45.3%)。
  3. 细粒度错误分析:借 CMExam 测试集五维标注,按 ICD-11 疾病组、36 类科室、难度等级切片报告,定位系统性弱项(如中医证型类)。
  4. 思维链与提示工程研究:CMB-val(280 题带解析)是官方指定的少样本示例与 CoT 来源。
  5. 临床问诊能力评估:CMB-Clin 的 74 例病例、208 个连环问题模拟真实诊疗对话,用 GPT-4 自动评分评估诊断-治疗推理。
  6. 污染研究与方法学实验:以两基准为"静态基准代表",研究 n-gram 重叠检测、时间分隔评估等去污染方法的有效性(LiveMedBench 等工作即以此动机展开)。

§2 医学背景

§2.1 ICD-11 疾病组映射

CMExam 的疾病组标注直接引用 WHO《国际疾病分类第 11 次修订本》(ICD-11)的 27 个疾病组(章级)。测试集标注覆盖 4,493 题(65.97%),最高频的五个疾病组如下表(顺序按论文报告的频次):

数据集疾病组标注 ICD-11 对应章节 章节英文名 说明
TMDP(传统医学病证) 第 26 章 Traditional Medicine Conditions - Module 1 中医证候类条目,为最大疾病组
消化系统疾病(Digest) 第 13 章 Diseases of the Digestive System 胃肠、肝胆疾病题
感染与寄生虫病(InfDis) 第 1 章 Certain Infectious or Parasitic Diseases 传染病学与抗感染题
内分泌/营养/代谢病(Endo) 第 5 章 Endocrine, Nutritional or Metabolic Diseases 糖尿病、甲状腺等高频考点
循环系统疾病(Circ) 第 11 章 Diseases of the Circulatory System 高血压、冠心病等考点

其余 22 个疾病组沿 ICD-11 章节体系(肿瘤、呼吸、神经、精神、妊娠、损伤等)完整覆盖,未匹配 ICD-11 的题目标记为 N/A(见 §6.5 坑点 5)。

§2.1b SNOMED CT 映射状态

标签体系 数据集内维度 类目数 SNOMED CT 状态与处理建议
ICD-11 疾病组 CMExam Disease 列 27 可经 WHO 发布的 ICD-11 与 SNOMED CT 官方映射桥接;章级粒度无需逐码映射
临床科室 CMExam Department 列 36 源自中国国家卫健委《医疗机构诊疗科目名录》(DMIDTC),无官方 SNOMED 对应;建议按科室名人工映射至 SNOMED 临床专科概念
医学学科 CMExam Discipline 列 7 源自中国《研究生教育学科专业目录(2022)》;教学管理属性,无 SNOMED 对应
胜任力/难度 CMExam Competency、Difficulty 列 4/5 团队自定义分类,无外部术语映射

§2.2 中国医学考试体系与疾病覆盖简介

两个基准的"人群"不是患者,而是中国医学执业资格体系的应考者。中国的医学执业路径依次为:医学本科教育 → 研究生入学考试(西医综合/中医综合)→ 执业助理医师/执业医师资格考试(CNMLE,国家医学考试中心统一命题)→ 住院医师规范化培训结业考核 → 中级/高级职称考试;护理线为护士执业资格 → 护师 → 主管护师;药学线为执业(西/中)药师;医技线为医技士/师/主管技师。CMB 的 28 个子类正是沿这条职业轴铺开,CMExam 则聚焦其中最核心的 CNMLE。疾病覆盖上,题库以内科(含循环、消化、呼吸、内分泌)、外科、妇产科、儿科、中医(中医基础、中药方剂、针灸)为主体,辅以基础医学(解剖、生理、生化、病理、药理)与预防医学——这与 CNMLE 笔试的大纲结构一致。

CMB 团队在论文中专门论证了为何中文医疗评测必须"本土化"而非翻译英文题库,其中以中医体系最能说明问题——下表提炼了 CMB 论文给出的中医概念要点,理解它们有助于读懂中医类题目为何对英文迁移模型格外困难:

中医概念 内涵 对评测的含义
病(bìng)与证(zhèng) "病"为疾病实体,“证"为功能模式;同一"病"在不同个体可表现为不同"证” 同病异治类题目要求按"证"选方,直译英文会丢失判别线索
四诊合参 望(含舌诊)、闻、问、切(脉诊)为诊断主干 舌象、脉象描述是题干核心信息,英文基准几乎没有此类输入
辨证论治示例 风寒感冒与风热感冒的"证"不同,治法相异 模型若只会"common cold"的西医疗法即答错
中药学规模 约 13,000 种化合物、古籍记载逾 100,000 首方剂 执业中药师线的药性与配伍题构成独立知识域

§2.3 临床任务定义

数据集评测的四类"临床认知任务":

任务 对应临床能力 数据集承载
医学知识再认(单选) 知识记忆与鉴别诊断初筛 两者的单项选择题(CMExam 65,950 题;CMB 单选类)
知识综合应用(多选) 治疗方案组合、禁忌证判断 CMExam 2,169 道多选;CMB 多项选择题
解析推理(开放生成) 循证解释与患教沟通 CMExam 解析(85.24% 覆盖);CMB-val 解析
病例问诊(多轮对话) 病史采集、诊断与治疗决策 CMB-Clin 74 例 208 问

§2.4 覆盖职业与考试层级(替代患者人群表)

本数据集不包含患者个体信息;下表描述题库的命题来源结构:

维度 取值 题量(CMB) 来源性质
医师考试 住院医师/执业助理医师/执业医师/中级/高级职称 124,926(44%) 模拟题+练习题+真题风格题
本科学科 基础医学/临床医学/预防医学/中医学/护理学 62,271(22%) 课程练习题
药师考试 执业西药师/执业中药师/初/主管级 33,354(12%) 模拟题+练习题
医技考试 医技士/技师/主管技师 27,004(10%) 模拟题+练习题
护理考试 护士执业/护师/主管护师/高级护师 16,919(6%) 模拟题+练习题
研究生入学 考研政治/西医综合/中医综合 16,365(6%) 历年真题风格题
执业医师真题 CNMLE(CMExam) 68,119 国家执业医师资格考试历年真题

§2.5 临床价值

对医疗 AI 团队而言,这批题库的临床价值在于把"模型会不会说医疗行话"转化为"模型能不能答对执业考题"。60% 及格线隐喻让非技术利益相关方(医院管理者、监管者)能用直觉理解模型水平:GPT-4 在 CMB 上 59.90 分意味着"接近及格的住院医",而排行榜上针对性微调的模型 99 分则意味着"背过题库"——两者都不能等同于真实临床能力,但组合 CMExam 人类 71.6% 的锚点与 CMB-Clin 的病例问诊评分,可以近似拼出模型从知识到应用的完整画像。

§2.6 标注金标准对照表

属性 CMB CMExam
划分 test 11,200(每子类 400)/ val 280 / train 269,359 80:10:10 随机划分 54,497/6,811/6,811
标注方式 题目答案沿用来源题库,经人工校验与易错题筛查;CMB-Clin 答案由教学专家共识确定 五维标注采用 GPT-Assisted Annotation:GPT-4 初标 + 两名医学专业人员复核
标注者 官方团队人工校验;CMB-Clin 教学专家 两名医学专业人员(团队内)
性质 评测基准 + 训练语料(明确区分 test/val/train) 评测基准 + 训练语料(测试集附五维标注)

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐子集 大小 理由
与排行榜可比的模型评测 CMB-test(11,200 题)或 CMExam test(6,811 题) CMB-test 解压后约 20 MB JSON 两者均为官方固定测试集,数字可与文献直接对话
医疗知识注入训练 CMB-train 或 CMExam train 269,359 题 / 54,497 题 规模最大;注意与测试集的污染隔离(§5.3)
CoT/少样本示例 CMB-val 280 题带解析 官方指定的 few-shot 与 CoT 源
细粒度错误分析 CMExam test_with_annotations.csv 6,811 行 唯一附五维标注的划分
临床对话评测 CMB-Clin 74 例 208 问 唯一的多轮病例问诊子集
快速冒烟测试 CMB-val 或 CMExam val 280 / 6,811 题 最小可用子集,十分钟内跑通全流程

§3.1 模态详情

两个基准均为纯文本模态(中文简体)。CMB-Exam 每题包含题干(中文医学叙述,常含体检数据、化验值)、4-6 个选项(A-E/含 F)、答案字母与题型标记;CMB-Clin 每例包含病历描述(主诉、现病史、查体、辅助检查)与 1-3 个连环问题及参考解法。CMExam 每行包含 ID、题干、选项 dict(单引号字符串)、答案、解析(85.24% 覆盖)与测试集五维标注。两数据集官方均不含图像、表格或 DICOM——需要多模态医学评测时应另选基准(CMB 团队的多模态延伸是 HuatuoGPT-Vision/PubMedVision 数据集方向,而非 CMB 本身)。

§3.2 子集样本数表

子集 样本数 用途 备注
CMB-Exam/CMB-test 11,200 评测 28 子类 × 400 题
CMB-Exam/CMB-val 280 few-shot/CoT 每子类 10 题带解析
CMB-Exam/CMB-train 269,359 训练 医疗知识注入
CMB-Clin 74 例(208 问) 评测 GPT-4 自动评分
CMExam train.csv 54,497 训练 无五维标注
CMExam val.csv 6,811 调参 无五维标注
CMExam test_with_annotations.csv 6,811 评测 含五维标注

CMB-Exam 的 28 个子类完整目录(官方排行榜列名与 catalog 定义一致,括号内为该子类在题库中的所属大类):

# 子类 所属大类 # 子类 所属大类
1 住院医师 医师考试 15 初级药师 药师考试
2 执业助理医师 医师考试 16 初级中药士 药师考试
3 执业医师 医师考试 17 初级中药师 药师考试
4 中级职称 医师考试 18 主管药师 药师考试
5 高级职称 医师考试 19 主管中药师 药师考试
6 护士执业资格 护理考试 20 医技士 医技考试
7 护师执业资格 护理考试 21 医技师 医技考试
8 主管护师 护理考试 22 主管技师 医技考试
9 高级护师 护理考试 23 基础医学 专业知识考试
10 执业西药师 药师考试 24 临床医学 专业知识考试
11 执业中药师 药师考试 25 预防医学与公共卫生学 专业知识考试
12 考研政治 医学考研 26 中医学与中药学 专业知识考试
13 西医综合 医学考研 27 护理学 专业知识考试
14 中医综合 医学考研 28 初级药士 药师考试

六大类子类数为:医师 5(住院医师、执业助理医师、执业医师、中级职称、高级职称)、护理 4、药师 8(执业西药师、执业中药师、初级药士、初级药师、初级中药士、初级中药师、主管药师、主管中药师)、医技 3、专业知识 5、医学考研 3,合计 28;官方细分目录(catalog.md)进一步下钻至约 174 个考试科目。

§3.3 数据格式表

子集 格式 关键字段
CMB-Exam JSON(数组) exam_type、exam_class、exam_subject、question、option(对象)、answer、question_type
CMB-Clin JSON(数组) case_title/description、系列问答对
CMExam 三分表 CSV(UTF-8) ID、Question、Options(dict 字符串)、Answer、Explanation;测试集另含 Disease、Department、Discipline、Competency、Difficulty

CMB-Exam 单条数据的真实样例(官方 README 示例,体现字段语义):

{
  "exam_type": "医师考试",
  "exam_class": "执业医师",
  "exam_subject": "口腔执业医师",
  "question": "患者,男性,11 岁。近 2 个月来时有低热(37~38℃),全身无明显症状。查体无明显阳性体征。X线检查发现右肺中部有一直径约 0.8cm 类圆形病灶,边缘稍模糊,肺门淋巴结肿大。此男孩可能患",
  "answer": "D",
  "question_type": "单项选择题",
  "option": {
    "A": "小叶型肺炎",
    "B": "浸润性肺结核",
    "C": "继发性肺结核",
    "D": "原发性肺结核",
    "E": "粟粒型肺结核"
  }
}

三个字段阅读要点:exam_type/exam_class/exam_subject 构成三级目录定位;option 是键为选项字母的对象(CMExam 中对应字段为字符串化的 dict);answer 在多选题时为多字母串(如 “ABC”)。

§3.4 存储大小

CMB GitHub 仓库(含代码、脚本与 data/CMB.zip)约 250 MB,数据压缩包解压后为 JSON 文件;CMExam 三个 CSV 合计 49.29 MB(HuggingFace 第三方镜像统计为 62.5 MB / 68,119 行)。单卡环境下载与解压在 10 分钟内可完成,无大规模存储需求。若仅做评测(test+val),可只解压 CMB-Exam 对应目录并跳过 CMB-train,磁盘占用可控制在约 30 MB 以内;做训练时再解压全量。

§3.5 标注方式

答案标注属"沿用权威来源 + 人工校验"型:CMB 沿用题库自带答案并借助来源评论系统做严格筛选删除,CMB-Clin 参考答案由教学专家共识确定;CMExam 沿用真题标准答案,其新增五维标注采用 GPT-Assisted Annotation(GPT-4 自动初标 → 两名医学专业人员逐一复核),这是该数据集在标注工程上的主要创新。

§3.6 标注者资质与一致性

CMB-Clin 的参考答案由临床诊断教学教材与教学专家共识背书;官方论文报告其 GPT-4 自动评估与专家评估结果高度一致(用于支撑 CMB-Clin 的自动评分协议)。CMExam 的五维标注复核者为团队内两名医学专业人员;ICD-11 与 DMIDTC 维度以官方目录为参照体系,无法分类时显式标 N/A 而非强行归类。两数据集官方论文均未发布标注者间 kappa 系数,做标注质量敏感研究时建议自行抽样复标(见 §7.2)。

§3.7 采集周期

CMB 于 2023 年上半年集中采集与清洗,2023-08-01 发布,主体为发布时点可获得的模拟考题与练习题;CMExam 于 2023 年 6 月发布,收录截至发布时互联网可得的 CNMLE 历年真题。两仓库在 2023-2024 年间以修复性提交为主,CMB 最后推送为 2024-03-28,此后无大规模内容更新。

§3.8 地域覆盖

题目内容基于中国医学教育与执业考试体系(大陆),其中中医部分覆盖中医"病-证"结合的独特辨证体系;CMExam 的科室维度直接采用中国国家卫健委诊疗科目名录。对其他中文地区(港台)或日韩医疗体系的迁移性未经官方评估。

§3.9 文本规格(替代设备规格)

统计量 CMExam 全量 说明
题干长度(字符) 中位 18,均值 30.83,最大 676 中文按字符计
解析长度(字符) 中位 146,均值 192.21,最大 2,999 解析显著长于题干
答案长度 均值 1.08 字符 字母串(单选 1 字符,多选可达 5)
词汇量(字符级) 4,629 训练集覆盖 98.2%

CMB 题干长度官方未给出对应统计,从样例看与 CNMLE 题干量级相当(数十至数百字符),多选题选项可含 F 项(4-6 选项)。

§3.10 深度溯源链

溯源环节 CMB CMExam 可验证性
原始命题方 国家医学考试中心/院校教研室/题库网站命题人 国家医学考试中心(CNMLE) 公开制度,命题人不可名
聚合源 medtiku.com(获授权)+ 公开模拟题/练习题/易错题汇总 互联网公开真题汇编 论文 §3.1/§3.1.2 有述
官方预处理 OCR → 结构化 → 去重 → 清洗 → 人工校验(借助来源评论系统筛选) 排除图表题(关键词过滤)→ 去重 → 96,161 收敛至 68,119 论文方法节有述
发布渠道 GitHub(2023-08-01 起)+ HuggingFace + 官网 GitHub + NeurIPS 2023 正式出版 仓库 commit 可查
本页面 仅做结构化描述与代码封装,不修改任何题目内容 同左 §10.4 人工校验表

§4 数据结构

§4.0 目录树

两个数据集解压/克隆后的目录结构如下(CMB 以官方 unzip 指令为准;CMExam 以仓库 data/ 目录为准):

CMB/
├── data/
│   ├── CMB.zip                 # 官方数据压缩包(git clone 后手动解压)
│   ├── CMB-Exam/               # 解压后生成
│   │   ├── CMB-test/           # 28 个子类 JSON,每子类 400 题
│   │   ├── CMB-val/            # 280 题带解析 JSON
│   │   └── CMB-train/          # 269,359 题 JSON
│   └── CMB-Clin/               # 74 例病例 JSON
├── assets/                     # 图表资源
└── *.py                        # 评测与聚合脚本

CMExam/
├── data/
│   ├── train.csv               # 54,497 行
│   ├── val.csv                 # 6,811 行
│   └── test_with_annotations.csv  # 6,811 行,含五维标注
├── src/                        # 微调与评测代码(Ptuning/LoRA)
├── preprocess/                 # 提示生成脚本
└── requirements.txt

§4.1 DAIMS 字段字典

核心字段字典(覆盖 CMB-Exam 与 CMExam 的主键字段,8 列规范):

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
exam_type 文本 CMB 大类(职业线) 医师考试 分层评测切片 大类名规范化不统一风险 6 大类
exam_class 文本 CMB 子类(考试名) 执业医师 层级分析 28 子类
exam_subject 文本 CMB 细分科目 口腔执业医师 科目级错误分析 174 科目
question 文本 题干(含病例/化验数据) 患者,男性,11 岁…… 模型输入 OCR 残留字符(CMB 源自 PDF) 数十字符级
option JSON 对象/dict 字符串 选项字典 {“A”: “小叶型肺炎”, …} 构造选项 prompt CMExam 为单引号字符串需 literal_eval 4-6 项
answer 文本 正确选项字母(可多字母) D / ABD 计算准确率 空格与顺序变体 A-F 组合
question_type 文本 CMB 题型 单项选择题 单选/多选分流 仅 CMB 提供 单项/多项选择题
Explanation 文本 CMExam 官方解析 本题考查……故选 D 开放推理监督 14.76% 缺失 空/NaN=无解析 数十至三千字符
Disease 文本 ICD-11 疾病组 Circ 细粒度切片 仅测试集 N/A=不可分类 27 组
Department 文本 临床科室(DMIDTC) IM 科室切片 仅测试集 N/A=不可分类 36 类
Discipline 文本 医学学科 ClinMed 学科切片 仅测试集 无(全覆盖) 7 类
Competency 文本 胜任力维度 MedFund 能力切片 仅测试集 无(全覆盖) 4 类
Difficulty 文本/序数 难度(基于人类正确率) Easy 难度分析 仅测试集 无(全覆盖) 5 级

§4.2 标签分布

三个层面的分布值得记住:其一,CMB 的职业分布不均(医师 44% vs 考研 6%),直接在全集上求平均会被医师题主导;其二,CMExam 难度呈"易中多、难少"分布(易+中 87.5%、难 12.5%),模型总分里大部分来自简单题;其三,CMExam 测试集答案分布——官方论文未报告选项字母的边际分布,但执业考试命题惯例(长选项正确项、排除法设计)可能引入选项位置偏倚,建议在使用前自行统计 A-E 的边际频率(§6.9 代码可直接扩展)。

CMExam 测试集各标注维度的头部类目(论文报告的频次排序):

标注维度 最多的类目 次多/最少的类目 使用提示
疾病组(27 类) TMDP(传统医学证型) 消化系统、感染性疾病次之;睡眠相关最少 中医类切片单独报告
临床科室(36 类) 内科(IM) 中医科次之;康复医学最少 长尾科室合并统计
医学学科(7 类) 临床医学(ClinMed) 覆盖研究生学科目录 适合课程级分析
胜任力(4 类) 医学基础(MedFund) 团队自定义分类 能力画像分析
难度(5 级) 易/中合计 87.5% 高难仅 12.5% 别用总分代表困难题能力

§4.3 关键统计

统计项 CMB CMExam
选择题总数 280,839 68,119
单选/多选 单选+多选混合(4-6 选项) 单选 65,950 / 多选 2,169
解析覆盖率 仅 val 280 题带解析 85.24%
病例任务 74 例 / 208 问
精细标注 无(仅目录结构) 测试集 5 维
病历组标注覆盖 不适用 疾病组 65.97%、科室 72.90%

§4.4 数据层级

与影像数据集的"患者→检查→序列→切片"层级不同,本题库的层级为:职业大类(exam_type/职业线)→ 考试子类(exam_class)→ 细分科目(exam_subject)→ 题目(CMB,6→28→174→280,839);CMExam 为扁平的"题目→五维标注"结构(每题一个 ID)。题目之间不存在共享的病例实体——同一病例连续设问的形式只出现在 CMB-Clin(74 例内含多问,评测时需按 case 组织对话上下文)。

层级结构对工程的直接影响:CMB 的三级目录是天然的分层抽样与分层报告骨架(官方 test 即按子类分层抽 400 题),基于文件的 split 使"按子类加载"成为最自然的分片单位;CMExam 的扁平结构则要求使用者在分析前自行建立"虚拟分组"(用五维标注列做 groupby)。两库合并时,建议以"source + 原生 ID"构造全局唯一键,不要试图把两套目录强行对齐。

§4.5 缺失值与信息性缺失

字段 缺失率 信息性缺失含义 处理建议
CMExam Explanation 14.76%(train/val/test 合并口径) 空=官方未给出解析,非数据错误 解析生成任务过滤空值即可,勿以 0 填充
CMExam Disease/Department 测试集内 34.03%/27.10% N/A=按参照目录不可分类 统计时单列 N/A,不并入任何类别
CMB train 答案解析 接近 100% 无解析 train 设计上只含答案不含解析 解析类任务只能用 CMB-val

§5 划分与使用建议

§5.1 官方划分

CMB:test/val/train 三层固化,test 每子类 400 题共 11,200 题、val 每子类 10 题共 280 题、其余 269,359 题为 train。CMExam:从 68,119 题随机划分 80:10:10(54,497/6,811/6,811),五维标注仅随 test_with_annotations.csv 发布。两个官方划分均应原样使用——随机重划分会破坏与文献的可比性(CMB 的 test 是按子类分层抽样,重划会破坏 28 子类覆盖)。

§5.2 社区惯例

社区事实标准可归纳为四条:

惯例 具体做法 出处/理由
CMB 四策略取最优 Zero-shot/Few-shot × 有/无 CoT 四组跑全 test,取最优入榜 官方排行榜协议
双口径上报 同时报告全量口径与"仅非空答案"口径(排行榜括号值) CMB 论文表格惯例
CMExam 双指标 test 集报告准确率与 weighted F1;解析任务报 BLEU/ROUGE + 人工评估 CMExam 论文协议
训练语料声明 用 CMB-train/CMExam train 做过 SFT 的模型须在结果表注明 CollectiveSFT 等后续论文通例

§5.3 泄漏风险(重点)

这是使用两基准最大的风险源,共三层:第一层,CMB-train 与 CMExam train 官方公开且被大量用于微调,排行榜头部模型的近满分成绩与未接触训练集的 GPT-4(59.46)形成数量级落差,提示头部分数高度依赖训练集暴露;第二层,CNMLE 真题与主流模拟题在网络流传多年,大模型预训练语料大概率已覆盖相当比例的测试题(静态医学基准的污染问题已被 LiveMedBench 等工作系统证实);第三层,自建训练集若与官方 test 撞题(同一真题在两个基准中重复收录),会直接虚高评测分数。缓解手段见坑点 3。

§5.4 划分策略建议

  • 评测用途:冻结官方 test,不参与任何超参选择;调参用各自 val。
  • 训练用途:只用官方 train;若要合并两基准训练,先做跨库模糊去重(见坑点 6)。
  • 分析用途:切片分析只在 CMExam test(有标注)上进行,且 N/A 单列。

§5.5 交叉验证建议

选择题基准惯例上不做 k 折交叉验证(划分已固化、训练成本高)。若资源允许做子类级稳定性分析,推荐在 CMB 的 28 子类上做"留一科目"评估(269,359 题训练、留出的子类 400 题测试),以检验模型对未见科目的泛化,这比全局 k 折更有诊断价值。

§5.6 外部验证建议

在报告 CMB/CMExam 成绩之外,建议补充:更新的动态基准(如 LiveMedBench 的截止日后病例)以对冲污染;封闭书面的新题集(按 CMExam 五维体系自建小规模影子题库)验证真泛化;以及临床实际对话数据(如医患咨询语料)验证知识到应用的迁移。

§5.7 与训练管线集成的检查清单

把两基准接入训练/评测管线前的最后检查(逐项打勾再开跑):

检查项 内容 未做的后果
版本锁定 记录 CMB 仓库 commit 日期(2024-03-28 后)与 CMExam CSV 的 SHA-256 结果不可复现
划分冻结 test/val 只读,训练脚本显式排除两目录 直接污染
跨库去重 合并训练前跑模糊去重(坑点 6) 分数虚高
多选分流 按 answer 长度/question_type 分流单选与多选 多选全错(坑点 1)
双口径 评测脚本输出 acc_all 与 acc_valid 抽取失败被误读为能力差(坑点 2)
切片报告 至少按 TCM/非 TCM、难度、科室三个轴切片 中医失分被平均掩盖(坑点 7)
合规声明 记录用途是否符合 CMExam 学术限定 法务风险(坑点 8)

§6 AI 就绪指南 ⭐

§6.0 云端快速启动

无需本地下载即可在 Colab/Kaggle 验证数据(CMB 有官方 HuggingFace 数据集;CMExam 以第三方镜像示例):

# 云端最小验证:两个基准各加载一个子集
from datasets import load_dataset

# CMB 官方 HuggingFace 数据集(exam 子集:280,839 题)
cmb = load_dataset("FreedomIntelligence/CMB", "exam")
print(cmb)  # 查看 train split 与字段

# CMExam(第三方镜像,68,119 行)
cmx = load_dataset("fzkuji/CMExam")
print(cmx)

云端验证仅用于快速探查数据形状;正式评测与训练仍建议 clone 官方 GitHub 仓库(§6.2),以锁定版本并获得官方评测脚本。

§6.1 快速上手

以下代码假设的目录结构与 data_root 拼接关系:data_root 指向同时包含 CMB/data/(已解压出 CMB-Exam、CMB-Clin)与 CMExam/data/(三个 CSV)的父目录;最小可用子集为 CMB-val(280 题)与 CMExam val(6,811 行),十分钟内可跑通"加载→构造 prompt→抽取答案→算准确率"全流程。

# 目录结构预期:
#   data_root/
#     CMB/data/CMB-Exam/...   # CMB.zip 解压产物
#     CMExam/data/{train,val,test_with_annotations}.csv
# 最小可用子集:CMB-val 280 题、CMExam val.csv 6,811 行
import json, csv, ast
from pathlib import Path

def load_cmb_exam(data_root: str, split: str = "CMB-val"):
    """加载 CMB-Exam 指定 split 的全部 JSON 题目,统一为 dict 列表。"""
    root = Path(data_root) / "CMB" / "data" / "CMB-Exam" / split
    items = []
    for fp in sorted(root.glob("*.json")):
        items += json.loads(fp.read_text(encoding="utf-8"))
    return items

def load_cmexam(data_root: str, split: str = "val"):
    """加载 CMExam CSV;Options 列是单引号 dict 字符串,必须 ast.literal_eval。"""
    fp = Path(data_root) / "CMExam" / "data" / f"{split}.csv"
    rows = []
    with open(fp, encoding="utf-8") as f:
        for r in csv.DictReader(f):
            r["Options"] = ast.literal_eval(r["Options"]) if r.get("Options") else {}
            rows.append(r)
    return rows

cmb_val = load_cmb_exam("data_root", "CMB-val")     # 280 题,带解析
cmx_val = load_cmexam("data_root", "val")            # 6,811 行
print(len(cmb_val), len(cmx_val))

§6.2 数据获取

渠道 链接 形式 大小
CMB GitHub(推荐) FreedomIntelligence/CMB git clone + unzip data/CMB.zip 仓库约 250 MB
CMB HuggingFace FreedomIntelligence/CMB load_dataset(‘FreedomIntelligence/CMB’,‘exam’/‘clin’) 约 100 MB 级
CMB 官网 cmedbenchmark.llmzoo.com 排行榜与说明
CMExam GitHub williamliujl/CMExam data/ 下三个 CSV 49.29 MB
CMExam HF 镜像 fzkuji/CMExam load_dataset 62.5 MB
# 官方推荐获取方式(CMB)
git clone "https://github.com/FreedomIntelligence/CMB.git" && cd CMB \
  && unzip "./data/CMB.zip" -d "./data/" && rm "./data/CMB.zip"
# CMExam
git clone "https://github.com/williamliujl/CMExam.git"

两个仓库均为开放下载,无需注册或申请;引用时请遵循 §9 的 BibTeX。获取后的完整性检查清单:

检查项 CMB CMExam
文件数 CMB-Exam 三 split JSON + CMB-Clin JSON data/ 下 3 个 CSV
行数断言 test 11,200 / val 280 / train 269,359 54,497 / 6,811 / 6,811
字段断言 7 字段(含 question_type) 测试集 10 列(5 核心 + 5 标注)
抽样校验 抽 5 题人工比对答案 抽 5 题核对解析非空

§6.3 预处理全流程

目标:把两个异构来源统一为 {question, options(list), answer(str), rationale(str|None), meta(dict)} 的中间 schema,供评测或训练复用。清洗要点:剔除选项不足 2 项的坏行、按 (题干哈希) 跨库去重、CMB 的 question_type 分流单选/多选、CMExam 空 Explanation 置 None。

import hashlib, re

def to_unified_cmb(item: dict) -> dict:
    opts = [item["option"].get(k, "") for k in sorted(item["option"])]
    letters = sorted(item["answer"].replace(" ", "").upper())      # 去空格统一大写
    return {
        "question": re.sub(r"\s+", " ", item["question"]).strip(),
        "options": opts,
        "answer": "".join(letters),
        "rationale": item.get("explanation") or None,
        "meta": {"source": "CMB", "type": item.get("question_type", ""),
                 "subject": item.get("exam_subject", "")},
    }

def to_unified_cmexam(row: dict) -> dict:
    letters = sorted((row["Answer"] or "").replace(" ", "").upper())
    return {
        "question": re.sub(r"\s+", " ", row["Question"]).strip(),
        "options": [row["Options"].get(k, "") for k in sorted(row["Options"])],
        "answer": "".join(letters),
        "rationale": (row.get("Explanation") or "").strip() or None,
        "meta": {"source": "CMExam", "id": row.get("ID", ""),
                 "disease": row.get("Disease", ""), "difficulty": row.get("Difficulty", "")},
    }

def dedup_key(u: dict) -> str:
    return hashlib.md5(u["question"].encode("utf-8")).hexdigest()

pool, seen = [], set()
for it in load_cmb_exam("data_root", "CMB-train"):
    u = to_unified_cmb(it); k = dedup_key(u)
    if u["question"] and len(u["options"]) >= 2 and k not in seen:
        seen.add(k); pool.append(u)

统一 schema 之后是评测 prompt 构造。官方协议(零样本、答案字母直出)的模板如下,few-shot 版在模板前拼接 CMB-val 的示例题(题干+选项+解析+答案):

def build_prompt(u: dict, few_shot_examples: list | None = None) -> str:
    """构造 CMB/CMExam 通用评测 prompt;答案约束单独成行便于正则抽取。"""
    letters = "ABCDEF"
    opts = "\n".join(f"{letters[i]}. {o}" for i, o in enumerate(u["options"]))
    q = f"以下是一道中国医学考试{('单项' if len(u['answer']) == 1 else '多项')}选择题。" \
        f"请先简要推理,然后在最后一行单独输出答案。\n\n{u['question']}\n{opts}"
    shots = ""
    for ex in few_shot_examples or []:
        ex_opts = "\n".join(f"{letters[i]}. {o}" for i, o in enumerate(ex["options"]))
        shots += (f"\n\n例题:{ex['question']}\n{ex_opts}\n"
                  f"解析:{ex['rationale']}\n答案:{ex['answer']}")
    return shots + "\n\n" + q + "\n\n答案:"

§6.4 PyTorch DataLoader 完整代码

支持单选(标签为类别索引)与多选(标签为 multi-hot 向量)的统一 Dataset;transform 即 tokenizer 调用(选项逐个与题干拼接,等价于把 MCQ 转成 N 路文本对分类,或用生成式答案字母抽取——此处采用前者以保证可复现)。

import torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer

class MedicalExamDataset(Dataset):
    """CMB/CMExam 统一 MCQ 数据集:单选返回类别索引,多选返回 multi-hot 向量。"""
    def __init__(self, items, tokenizer, max_len=512, num_choices=6):
        self.items, self.tok, self.max_len, self.nc = items, tokenizer, max_len, num_choices

    def __len__(self):
        return len(self.items)

    def __getitem__(self, idx):
        u = self.items[idx]
        letters = "ABCDEF"[: self.nc]
        enc = self.tok([f"{u['question']}\n{o}" for o in u["options"][: self.nc]],
                       padding="max_length", truncation=True, max_length=self.max_len,
                       return_tensors="pt")
        n = len(u["options"][: self.nc])
        idxs = [letters.index(c) for c in u["answer"] if c in letters[:n]]
        if len(u["answer"]) == 1:                       # 单选:类别索引
            label = torch.tensor(idxs[0] if idxs else 0, dtype=torch.long)
        else:                                            # 多选:multi-hot
            hot = torch.zeros(self.nc); hot[idxs] = 1.0
            label = hot
        return {"input_ids": enc["input_ids"], "attention_mask": enc["attention_mask"],
                "label": label, "multi": torch.tensor(len(u["answer"]) > 1)}

def collate(batch):
    # N 路 MCQ:把 (B, N, L) 压成 (B*N, L) 交给编码器,输出后再 reshape 回来
    flat = {k: torch.cat([b[k] for b in batch], dim=0)
            for k in ("input_ids", "attention_mask")}
    return {**flat,
            "label": torch.stack([b["label"] for b in batch]),
            "multi": torch.stack([b["multi"] for b in batch])}

tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B")
ds = MedicalExamDataset(cmb_val[:64], tok)               # 冒烟:CMB-val 前 64 题
dl = DataLoader(ds, batch_size=2, shuffle=True, collate_fn=collate, num_workers=2)
batch = next(iter(dl))
print(batch["input_ids"].shape, batch["label"].shape)    # torch.Size([12, 6, 512]) …

§6.5 坑点与实战经验(8 个)

⚠️ 坑点 1:多项选择题被当单选算,准确率被静默低估(分类:标签理解)

问题:CMB 的 question_type 含"多项选择题",CMExam 含 2,169 道多选题,答案为多字母(如 ABD)。若评测代码按"取 argmax 单字母"实现,所有多选题必然算错。
症状:总体准确率比官方报告/排行榜普遍低 2-5 个百分点,且错误样本里多选题占比异常高。
解决

  1. 简单方法:加载时按答案字母数分流:单选走 argmax,多选走 sigmoid 阈值 0.5 的 multi-hot。
  2. 进阶方法:生成式评测要求模型只输出字母串,用正则 re.findall(r"[A-F]", output) 抽取后去重排序再比对;CMB 的 answer 字段本身可能带空格或乱序,先 sorted(answer.replace(" ", "").upper()) 归一化两侧。
  3. SOTA 方法:单选与多选分别报告指标(多选报告 sample-level exact match 与 per-option F1),并在论文中给出多选子集的题量占比,避免混算掩盖能力差异。
    参考:CMExam 论文 Table 2(单选/多选统计);CMB HuggingFace README(question_type 字段定义)。

⚠️ 坑点 2:加 CoT 后准确率反而暴跌——长输出毁掉答案抽取(分类:评估误用)

问题:CMB 官方实验显示 ChatGPT 零样本 40.75 分,加 CoT 后跌到 17.75 分。根因不是模型不会做题,而是长推理输出破坏了"答案字母"的结构化抽取。
症状:启用思维链提示后指标断崖式下降;人工抽查发现模型正文推理正确但输出里没有可抽取的干净选项字母。
解决

  1. 简单方法:prompt 末尾强制约束"最终答案单独一行,格式为 Answer: X"。
  2. 进阶方法:抽取失败时回退到答案字母正则 + 出现频次投票;同时像 CMB 官方一样报告两种口径——全量(解析失败计 0 分)与"仅非空答案"(排行榜括号值),两者差异巨大(如 Yi-34B-Chat CoT:69.05 vs 58.45)。
  3. SOTA 方法:用结构化解码(JSON mode/function calling)或两段式生成(先自由推理、再单独调用输出字母),抽取成功率为 100%,消除口径分歧。
    参考:CMB 论文实验章节与排行榜口径说明(cmedbenchmark.llmzoo.com/static/leaderboard.html)。

⚠️ 坑点 3:排行榜近满分 ≠ 能力强:训练集暴露与预训练污染(分类:数据泄漏)

问题:CMB 排行榜头部模型(如微医 99.79,截至 2024-07-24)与 GPT-4(59.46)落差悬殊,主因是头部模型普遍在 CMB-train 等公开题库上做过 SFT;同时 CNMLE 真题与主流模拟题在网络流传多年,静态基准的测试题大概率已混入大模型预训练语料。
症状:新模型在 CMB/CMExam 上分数异常高,但在真实临床问诊或新题上表现骤降;同一模型不同年份评测分数随语料更新"自动上涨"。
解决

  1. 简单方法:读模型技术报告,确认其训练数据是否含 CMB-train/CMExam train,报告成绩时显式声明。
  2. 进阶方法:做污染审计——对测试集题干做 13-gram 或 MinHash 重叠检测,扫描模型预训练语料(若有访问权)或至少与公开语料快照比对重叠率。
  3. SOTA 方法:引入时间分隔评估(LiveMedBench 式"模型知识截止日之后采集的新病例/新题"),或在自建影子题库上复测,用分数差量化污染幅度。
    参考:CMB 排行榜(cmedbenchmark.llmzoo.com);CollectiveSFT(arXiv:2407.19705)展示用题库 SFT 可达 77+;LiveMedBench 对静态基准污染的系统测量。

⚠️ 坑点 4:CMExam 的 Options 列是单引号 dict 字符串,json.loads 直接报错(分类:工程陷阱)
问题:CMExam CSV 中 Options 存储为 Python 字面量风格字符串({'A': '...', 'B': '...'},单引号),json.loads 会抛 JSONDecodeError,很多使用者第一版加载脚本就卡在这。
症状:报错 Expecting property name enclosed in double quotes;或自己写正则解析导致含引号的选项文本被截断。
解决

  1. 简单方法ast.literal_eval(row["Options"])——Python 字面量解析器天然兼容单引号 dict。
  2. 进阶方法:对解析失败的行(嵌套引号/换行)做二次清洗(替换全角引号)再 literal_eval,并统计失败率,超过 0.5% 应上报官方仓库 issue。
  3. SOTA 方法:用 pandas 读入后 df["Options"].map(ast.literal_eval) 一次性向量化解析,并断言解析后每行选项数 ≥ 2。
    参考:CMExam 官方仓库 data 示例与 openmedlab/Awesome-Medical-Dataset 的 CMExam 条目。

⚠️ 坑点 5:五维标注的 N/A 与"只有测试集有标注"被当全量事实(分类:标签理解)

问题:CMExam 的 Disease/Department 标注在测试集内分别只有 65.97%/72.90% 的覆盖率(其余为 N/A),且五维标注仅存在于 test_with_annotations.csv;train/val 完全没有。
症状:把 N/A 当类别参与"疾病组 × 准确率"统计导致该组人数虚高;或宣称"训练集按 ICD-11 疾病组加权采样"——根本无此字段。
解决

  1. 简单方法:切片统计时把 N/A 单列,不并入任何类别;训练增强前先断言所用划分确实含标注列。
  2. 进阶方法:用 val/test 的标注训练一个标注补全分类器(输入题干,输出疾病组),对 train 做概率性标注并在论文中声明为"弱标注"。
  3. SOTA 方法:切片评估采用 Bootstrap 置信区间并报告每切片的 N/A 比例,避免把低覆盖切片的结论过度解读。
    参考:CMExam 论文 §3.3 与测试集标注统计。

⚠️ 坑点 6:跨库合并训练时同题重复——CMB 与 CMExam 的天然重叠(分类:预处理陷阱)

问题:CMB 的题源包含公开模拟考题与练习题(医师考试子类 124,926 题),CMExam 收录 CNMLE 历年真题;两者在"执业医师"主题上存在天然内容重叠,同一道真题或其变体可能同时出现在两个库中。
症状:合并训练后模型在各自 test 上分数虚高(训练时见过近重复的测试题变体);或合并语料的 token 数被重复题夸大。
解决

  1. 简单方法:题干精确哈希去重(§6.3 的 dedup_key)。
  2. 进阶方法:归一化后(去空白/全半角/标点)再做 n-gram Jaccard ≥ 0.8 的模糊去重,优先保留带解析的版本。
  3. SOTA 方法:用 MinHash-LSH(datasketch 库)在 34.9 万题规模上做近重复聚类,聚类内只留代表题,并保留映射表以便审计"哪些测试题的近邻被剔除"。
    参考:CMB 论文 §3.1.2(题源描述);CMExam 论文 §3.1(真题来源)。

⚠️ 坑点 7:中医子集的系统性失分被平均分掩盖(分类:偏倚陷阱)

问题:CMB 论文的四条核心结论之一是中西医成绩差异显著;CMExam 测试集最大疾病组恰是传统医学证型(TMDP)。以英文/西医语料为主的模型会在中医科目上系统性失分,而全局平均分把这抹平了。
症状:总体 60+ 分的模型在"中医综合/执业中药师"切片上可能只有 30-40 分;医疗问答产品上线后被用户反馈"中医问题胡说"。
解决

  1. 简单方法:所有报告按 exam_subject/疾病组切片,至少单独报告 TCM 相关子类。
  2. 进阶方法:训练侧补充中医语料(如 ShenNong-TCM 类题库)并在中医切片上做消融验证增益。
  3. SOTA 方法:把"西医-中医分差"作为模型卡(model card)的常设指标跟踪,与科室切片(CMExam Department)一起构成发布门槛。
    参考:CMB 论文结论 II;CMExam 论文疾病组频次统计(TMDP 最高)。

⚠️ 坑点 8:license 写着 Apache-2.0,商用并不"无限制"(分类:工程陷阱)

问题:两个官方仓库的 LICENSE 均为 Apache-2.0,但 CMExam 的伦理声明明确"仅限学术/研究用途、禁止商业滥用、不用于个人能力认证或患者诊断";CMB 的题源 medtiku.com 授权范围也以学术分享为前提。把 license 字段当唯一合规依据会埋下法务隐患。
症状:产品化团队直接把题库(或基于其微调的模型)用于商业导流/考试培训收费,收到来源方投诉或法务质询。
解决

  1. 简单方法:商用前取得数据来源方书面授权,或在商用系统中仅使用模型权重、不保留题库原文。
  2. 进阶方法:建立数据合规台账:记录每批训练数据的 license、伦理声明、来源授权链(§3.10 溯源链),商用审查时逐条核对。
  3. SOTA 方法:对模型做"题库遗忘"评估(测试模型对训练题的逐字复述率),证明商业模型未内嵌可提取的题库内容。
    参考:CMExam 官方 README 伦理声明;CMB 论文数据来源声明(medtiku.com 授权)。

8 个坑点速查(按使用阶段排列):

阶段 坑点 一句话解法
数据加载 坑点 4(Options 单引号 dict) ast.literal_eval
数据加载 坑点 1(多选题) 按答案字母数分流单选/多选
数据准备 坑点 6(跨库重复) 精确哈希 + MinHash 模糊去重
数据准备 坑点 5(N/A 与标注覆盖) N/A 单列;标注仅存在于 test
评测执行 坑点 2(CoT 毁抽取) 答案单独成行 + 双口径上报
评测解读 坑点 3(排行榜污染) 声明训练构成 + 污染审计
结果分析 坑点 7(中医切片失分) TCM 切片单独报告
商用落地 坑点 8(license ≠ 可商用) 学术限定与来源授权审查

§6.6 数据增强

方向 ✅ 安全做法 ❌ 危险做法
选项操作 选项顺序打乱并同步重排答案字母;等价选项合并去重 删除"干扰最小"的选项(改变题目难度与区分度)
题干操作 prompt 模板多样化(指令改写,不动医学内容) 同义改写题干(数字、剂量、阴/阳性一词之差即改变答案)
解析利用 带解析样本做"解析保留、答案掩码"辅助任务 用 LLM 批量造解析入库(错误知识注入)
组合策略 同科目题组合成多题 prompt 训练长上下文 跨科目/跨职业混拼题干与选项
语料扩充 CMB-train + CMExam train 合并(先跨库去重) 官方 test 拼进训练集或用 test 选超参

§6.7 模型推荐表

模型 参数量 适用方式 参考成绩(CMB-Exam/CMExam)
Qwen2.5 系列 1.5B-72B 生成式 + 字母抽取;中文医学迁移基础好 Qwen-72B-Chat 74.38(CMB 排行榜,截至 2024-07)
ChatGLM 系列 6B 起 微调友好,CMExam 官方提供 Ptuning/LoRA 脚本 ChatGLM 零样本 26.3% → CMExam 微调 45.3%
HuatuoGPT-II 7B/34B 医疗专用 SFT,同团队出品 HuatuoGPTII-34B 76.80(CMB 排行榜)
Yi-1.5/34B 6B-34B 通用中文底座 Yi-34B-Chat 69.17(CMB 排行榜)
GPT-4 级闭源 API 零样本基线与 CMB-Clin 评分裁判 CMB 59.46;CMExam 61.6%

选型说明:中文底座的中文医学迁移能力显著强于英文底座(ChatGLM2-6B 39.71 vs 同级英文模型更低),预算有限时优先押注中文底座 + 题库 SFT 路线;医疗专用小模型(BianQue、DoctorGLM 等)在 CMB 论文中成绩普遍低于通用底座,引用其成绩时注意均为 2023 年早期版本。

§6.8 硬件需求

阶段 推荐 GPU 显存 说明
评测(7B,vLLM 批量推理) 1 × A10/3090 24 GB 11,200 题 × 短输出,约数小时
评测(72B,vLLM) 4 × A100 320 GB 总 或用量化后 2 × A100
LoRA 微调(7B) 1 × A100 40 GB 参考 CMExam 官方脚本配置(论文实验用 V100)
全量 SFT(7B) 8 × A100 640 GB 总 CMB-train 26.9 万题一个 epoch 数小时级
纯 CPU 冒烟 16 GB RAM 仅数据加载与统计(§6.1/§6.3)

显存按"模型参数 × 2 字节(bf16)+ 激活"估算;CMExam 官方微调实验使用 NVIDIA V100,用现代卡复现只需等量或更少资源。评测吞吐参考:7B 模型 vLLM 批量推理 CMB-test 11,200 题(短输出)约 1-2 GPU 时。

§6.9 评估指标代码

覆盖单选准确率、多选 exact match/F1、两种口径(全量 vs 仅有效答案)与加权 F1:

import numpy as np

def score(items, preds):
    """items: 统一 schema 列表;preds: 与 items 等长的答案字母串列表(已归一化排序)。"""
    single_ok, multi_em, multi_f1 = [], [], []
    for u, p in zip(items, preds):
        gold, n = u["answer"], len(u["options"])
        valid = bool(p)                                    # 输出可否抽取到答案
        if len(gold) == 1:
            single_ok.append((p == gold) if valid else False)
        else:
            if valid:
                multi_em.append(set(p) == set(gold))
                tp = len(set(p) & set(gold))
                fp, fn = len(set(p)) - tp, len(gold) - tp
                multi_f1.append(2 * tp / (2 * tp + fp + fn) if tp else 0.0)
            else:
                multi_em.append(False); multi_f1.append(0.0)
    all_acc = (single_ok + multi_em)
    return {
        "acc_all": float(np.mean(all_acc)),                # 口径一:解析失败计 0 分
        "acc_valid": float(np.mean([s for s, p in zip(single_ok + multi_em, preds) if p]))
                     if any(preds) else 0.0,               # 口径二:仅非空答案(排行榜括号值)
        "single_acc": float(np.mean(single_ok)) if single_ok else None,
        "multi_em": float(np.mean(multi_em)) if multi_em else None,
        "multi_f1": float(np.mean(multi_f1)) if multi_f1 else None,
    }

解析生成任务沿用 CMExam 官方协议:BLEU-1/4、ROUGE-1/2/L,并辅以人工评估(官方论文明确 BLEU/ROUGE 不足以刻画解析质量)。

CMB-Clin 的开放问诊没有唯一标准选项,官方采用 GPT-4 多维度自动评分(参考答案对照),并验证了与专家评估的一致性。复现该协议的要点:

JUDGE_PROMPT = """你是医学考试阅卷专家。参考答案:{ref}
考生回答:{ans}
请按以下维度各打 0-10 分并给出 JSON:
accuracy(医学准确性), completeness(要点覆盖), reasoning(推理链), safety(安全性)"""

def judge_case(case_qa: dict, judge_client) -> dict:
    """对 CMB-Clin 单个问题调用 judge;逐维 0-10 分,案例内取平均后汇总 74 例。"""
    raw = judge_client(JUDGE_PROMPT.format(ref=case_qa["solution"], ans=case_qa["answer"]))
    return parse_json_block(raw)          # 解析失败重试,避免静默 0 分

三条实践纪律:judge 模型与被评模型不得同源(避免自评偏置);逐维分数与总分同时报告(官方按维度降序排列模型);解析失败样本单独计数而非计 0 分,并在表注中说明。

§6.10 MLOps 笔记

  • 版本锁定:论文须注明 "CMB(GitHub 仓库 2024-03-28 版)"与 “CMExam(NeurIPS 2023 版,train 54,497/val 6,811/test 6,811)”;两仓库无语义化版本号,以 commit/日期锁定。
  • 污染审计常态化:把测试题与新增训练语料的 MinHash 重叠率做成 CI 检查项,超过阈值即阻断。
  • 双口径上报:凡生成式评测,同时报告 acc_all 与 acc_valid 两个口径,防止抽取器差异伪装成模型差异。
  • 排行榜协议:向 CMB 官网提交成绩须遵循官方 submission 指南(四策略取最优);商业模型需注明训练数据构成。
  • 可复现打包:把数据 checksum(zip/csv 的 SHA-256)、prompt 模板、解码参数与评测代码一同入库,单一 artifact 可复跑全部数字。

MLOps 事件与应对(本题库特有):

事件 信号 应对
测试集泄漏 新语料接入后 test 分数跳升 重跑 MinHash 审计;隔离可疑语料
抽取器回归 acc_valid 不变但 acc_all 下降 prompt/解析器变更纳入回归测试
榜单漂移 排行榜快照更新后对标失效 报告时附排行榜快照日期(如截至 2024-07-24)
知识过时 指南更新后题目答案与现实冲突 建立"过期题"清单并在训练集中降权

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解
难度分布偏倚 CMExam 易+中题占 87.5%,总分被简单题主导 按难度切片报告;重点看"难+极难"切片
职业分布偏倚 CMB 医师题占 44%,全集均值被医师线主导 按六大类分别报告
学科偏倚 中医与部分罕见科室覆盖弱,模型系统性失分 单列 TCM 切片(坑点 7)
非文本题排除偏倚 CMExam 剔除含图/表题干,题面与真实考试分布有差 明确基准只测纯文本能力
排行榜暴露偏倚 头部成绩依赖 train split 微调,与泛化能力脱钩 声明训练构成 + 污染审计(坑点 3)
题源年代偏倚 收录以 2023 年前考题为主,指南更新后部分答案可能过时 医疗知识时效敏感任务慎用直接蒸馏

六类偏倚中,前三类是"分布性"的(可通过切片报告缓解),后三类是"结构性"的(污染与年代问题无法靠统计口径消除,需要流程性措施)。评测报告建议至少覆盖前三类的切片数字,并把后三类写入 model card 的限制段落。

§7.2 标注质量

答案本身来自权威考试来源,正确性基线高。CMB 侧依托来源题库的评论系统做严格筛选,CMB-Clin 由教学专家共识背书,且官方验证了 GPT-4 自动评估与专家评估的高度一致性。CMExam 侧五维标注由 GPT-4 初标、两名医学专业人员逐一复核。局限:官方均未发布标注者间一致性系数(kappa),医学专业人员仅两名,主观维度(胜任力)的标注稳定性未经量化;对标注敏感的研究建议自行抽样式复标并报告 kappa。

值得强调的是标注的"粒度落差":答案标注(逐题)与解析标注(CMExam 85.24%)可靠性最高;五维标注只覆盖测试集且其中疾病组/科室含 N/A;CMB 的三级目录标注(大类/子类/科目)粒度最细但由来源题库结构决定,未经独立校验。用标注做监督信号时按此落差分级取信。

§7.3 泛化性

场景 失效风险 证据
英文医疗模型迁移到中文考题 高:术语翻译与中医概念错位 CMB 的立论动机即"翻译英文基准产生语境错位"
模型直接上线患者问诊 高:考题能力 ≠ 问诊能力 CMB-Clin 与 CMB-Exam 分数相关性未系统建立
考试培训产品直接复用题目 中:污染与版权双重风险 CMExam 伦理声明禁止商业滥用
跨地区(港台/日韩)医疗体系 高:诊疗目录与用药体系不同 科室维度绑定中国 DMIDTC 目录

四个场景的共性是"基准分数与目标场景能力的错位"。泛化性验证的最低成本方案:在目标场景抽取 100-200 个真实 query,人工标注后与基准分数做秩相关——若相关系数低,说明模型在该场景的表现无法由基准分数预测,基准分数只能作为参考而非验收依据。

§7.4 伦理

两基准均为考试题目与教科书病例,不含患者个体可识别信息,无 PHI 处理需求。合规要点在知识产权与用途:CMB 数据主体获 medtiku.com 授权分享;CMExam 声明遵守法律与伦理规范、仅限学术研究、不用于个人医疗能力认证或患者诊断。使用 CMB-Clin 病例时注意其源自公开教材,复述时仍应遵循教材版权惯例。

评测结果的伦理使用同样重要:CMB 的 60% 及格线是有用的沟通隐喻,但把模型分数对外表述为"相当于执业医师"会误导非专业受众——执业能力还包括体格检查、医患沟通与临床责任,选择题准确率只是知识维度的代理指标。对外传播时应保留"知识评测"的限定语。

§7.5 公平性

本题库的"公平性"问题体现在科室与学科维度的代表性不均:内科题最多、康复医学最少;TMDP 一组就构成最大疾病组;医技/护理线题量显著低于医师线。评测医疗产品时应避免用全集均值代表"全科室能力",建议按 CMExam Department 36 类做等权或按临床风险加权报告。

统计各维度等权分数的参考实现(在 §6.9 的 per-item 分数基础上做分组宏平均):

import collections

def macro_average(items, scores, key_fn):
    """key_fn(item) 返回分组键(如 Department / Difficulty);各组内平均后再宏平均。"""
    groups = collections.defaultdict(list)
    for it, s in zip(items, scores):
        k = key_fn(it)
        if k and k != "N/A":                     # N/A 组剔除,不参与宏平均
            groups[k].append(s)
    per_group = {k: sum(v) / len(v) for k, v in groups.items()}
    return sum(per_group.values()) / len(per_group), per_group

宏平均会把长尾科室(康复医学等)抬到与内科同权重,更能暴露"小科室能力洼地";对照微平均使用,两者差值本身就是失衡程度的量化。

§7.6 数据漂移

医学考试大纲与临床指南逐年修订(诊疗规范、药物目录更新),2023 年快照的题库会随时间产生"内容性漂移"——部分题目的"标准答案"可能不再符合最新临床实践。同时新发布的模型若训练语料覆盖这些公开题目,会产生"评测性漂移"(分数虚高)。建议每年用当年新考纲自建小规模影子题集复测,并跟踪 CMB 排行榜的提交日期分布以识别异常分数。

§7.7 DAIMS 数据质量评估(24 项)

# 检查项 状态 说明
1 宽格式 一题一行/一 JSON 对象,扁平可平铺
2 唯一标识 CMExam 有显式 ID 列;CMB 以(子类文件+题号)定位
3 特殊字符 ⚠️ CMB 源自 PDF/OCR,题干偶见残留字符;全角/半角混用需归一化
4 重复行 ⚠️ 官方已去重,但跨库与跨年份变体仍需模糊去重(坑点 6)
5 缺失编码 CMExam 空 Explanation 与 N/A 标注语义明确
6 标签标识 answer 字段标准化字母;question_type 区分单/多选
7 罕见类分组 ⚠️ 36 科室/174 科目存在小类别,切片统计需合并或报 CI
8 偏倚评估 官方论文主动报告难度/疾病组/科室分布与中西医差异
9 数据字典 两仓库 README 字段说明完整
10 信息性缺失解释 N/A=不可分类、空解析=未提供,官方有明文
11 设备记录 纯文本题库,无设备维度(不适用)
12 共线性 选项间无信息泄漏设计;五维标注间为层级关系而非共线特征
13 编码映射 疾病组直接引用 ICD-11、科室引用 DMIDTC,参照体系明确
14 时间戳处理 题目无采集时间戳,无法做时间分层
15 划分建议 官方固化划分且社区沿用
16 泄漏讨论 ⚠️ 官方划分清晰,但公开真题的预训练污染需使用者自行审计(坑点 3)
17 标签分布 论文与 README 提供职业/难度/疾病组分布
18 测量偏倚 ⚠️ 命题风格偏倚(考试技巧题)未系统评估
19 外部验证建议 §5.6/§7.8 给出可操作路径
20 版本记录 ⚠️ 无语义化版本号,仅能以 commit/日期锁定
21 预处理脚本 CMExam 附微调与预处理脚本;CMB 附评测脚本
22 合规要求 Apache-2.0 + 明确伦理声明;商用需另行审查(坑点 8)
23 多模态对齐 纯文本基准,不适用
24 去标识化 无 PHI,考试题与教材病例不涉个人身份

DAIMS 评分:18.5 / 24

评分解读:18.5/24 属于"评测用途高质量"档:结构、字典、划分、合规四块全绿,主要扣分来自题库类数据先天的三类不适用项(设备记录/时间戳/多模态)与可控的两类工程风险(跨库重复、污染审计),后者均有成熟缓解手段。

对你意味着什么:如果你要做模型评测,可以放心直接采用官方划分与协议,把精力花在双口径上报与污染审计上;如果你要做训练,先跑 §6.3 的去重与 §6.5 坑点 6 的模糊去重再混合两库;如果你要做合规审查,注意 license 之外的伦理声明边界(坑点 8);三类"不适用"项说明它不能替代影像/时序数据集,别用它评估多模态能力。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
CMExam 微调迁移(ChatGLM-6B + CMExam train) CMExam 官方团队(NeurIPS 2023) CMExam test 答案预测 45.3% vs 零样本 26.3% +19.0 pp 小模型定向微调可逼近 GPT-3.5
CMB-train 注入(CollectiveSFT-7B) 中科院深圳先进院(arXiv:2407.19705) CMB-Exam 四策略 77.05 vs GPT-4 59.46 +17.6 pp 多样化指令 SFT 可显著超越闭源基线,但同时佐证排行榜暴露效应
CMB-Clin GPT-4 自动评分 vs 专家评分 CUHKSZ(NAACL 2024) 开放问诊评估一致性 高度一致(论文结论 IV) 支撑 CMB-Clin 用 LLM-as-judge 的可行性
LiveMedBench 截止日后病例 多机构(2025) 真实社区临床病例 QA 最好模型仅 39.2%;84% 模型在截止日后退化 大幅低于静态基准分数 量化静态题库(含 CMB/CMExam 类)的污染幅度

§8 基准性能与生态

§8.1 排行榜

CMB-Exam 官方排行榜(四策略取最优;截至 2024-07-24 快照,完整榜单见 cmedbenchmark.llmzoo.com/static/leaderboard.html):

排名 模型 CMB-Exam Avg. 年份 关键技术 完整引用 代码
1 微医医疗大模型 99.79 2024 医疗 SFT(厂商未公开细节;分数提示训练集暴露) Weixin Health LLM Team, 2024, 技术报告 未公开
2 WiseDiag-v1 99.49 2024 医疗领域继续训练 + 题库 SFT Hangzhou Zhizhen, 2024, 技术报告 未公开
3 HuatuoGPT-II 76.80 2023 医疗指令微调 + 两阶段训练 Chen et al., 2023, arXiv:2311.09779 开源
4 Qwen-72B-Chat 74.38 2023 通用中文大底座 Bai et al., 2023, arXiv:2309.16609 开源
5 CollectiveSFT-7B 77.05(CMB-Exam 子集) 2024 医疗指令 collective SFT Jia et al., 2024, arXiv:2407.19705 见论文
6 GPT-4 59.46 2023 闭源通用大模型(零样本基线) OpenAI, 2023, arXiv:2303.08774 API
7 ChatGLM2-6B 39.71 2023 开源中文对话模型 Du et al., 2022, arXiv:2210.02414(GLM 系列) 开源

CMExam 官方基准(NeurIPS 2023,test 6,811 题,零样本答案预测):GPT-4 61.6%(weighted F1 0.617)为最佳,人类对照 71.6%;ChatGLM-6B 零样本 26.3%,CMExam 微调后 45.3%。

数值不可直接比较的原因:CMB 排行榜为四策略取最优且商业模型训练构成不明;CMExam 数字为零样本单协议;两者题源不同(CMB 含模拟题、CMExam 为真题)、题型配比不同,跨表与跨基准比较均无意义。

阅读该表的三个提示:排行榜按提交时间滚动更新,本表为 2024-07-24 快照,引用时务必注明快照日期;99 分段的商业模型与 76 分段的开源模型之间隔着"是否用训练集微调"这一根本差异,不构成能力排序;CollectiveSFT-7B 在部分子集协议下的 77.05 与 HuatuoGPT-II 的 76.80 属于不同生成策略下的最优值,同为开源可复现路线的参考点。

§8.2 SOTA 总结与选型建议

当前格局:开源医疗/通用中文模型(76-78 分)显著超越 GPT-4 零样本(59.46),但头部 99+ 分数应读作"见过训练集"而非"临床顶尖"。选型建议:以 Qwen/HuatuoGPT-II 级开源模型 + CMExam 官方微调脚本为性价比起点;以 GPT-4 级 API 为零样本能力参照;把 CMB-Clin 与真实问诊评测作为第二道门槛。

§8.3 评测协议

CMB 官方协议:四种生成策略(Zero-shot/Few-shot × 有/无 CoT)逐题生成 → 正则抽取答案字母 → 计算准确率,四种策略取最优入榜;同时报告全量口径与"仅非空答案"口径;CMB-Clin 采用 GPT-4 多维度自动评分(与专家评估高度一致)。60% 准确率对应执业资格考试及格线的隐喻。CMExam 协议:test 集零样本/微调答案预测(准确率 + weighted F1)与开放解析生成(BLEU/ROUGE + 人工评估)。

复现官方数字时的协议细节容易踩的差异点:

协议环节 官方做法 常见复现偏差
策略选择 四策略全跑取最优 只跑 zero-shot 导致分数偏低
答案抽取 正则抽字母,失败计空 宽松匹配(如取首个字母)虚高
口径 全量 + 仅非空双口径 只报其一,跨论文不可比
CMB-Clin GPT-4 judge 多维评分 用 ROUGE 代替,分数不可比
少样本示例 取自 CMB-val(280 题带解析) 从 train 抽示例(无解析)
数据集 规模 关系 适用场景
MLEC-QA 21,700 题 同为中国医学考试 MCQ 的先行者 需要更小更快的中文医学评测
MedMCQA 193,155 题 英文侧对应物(印度考试) 跨语言能力对照
Huatuo-26M 26M 问答对 同团队(CUHKSZ)的大规模训练语料 需要远超 26.9 万题的训练规模时
ShenNong-TCM-EB 3,279 题 中医垂直基准 强化中医切片评测
MedQA(USMLE) 英文 USMLE 题 英文执照考试基准 中英双语医疗能力对照

选用原则:与 CMB/CMExam 组合使用时,各数据集只承担一个角色——CMExam 负责"深度监督与切片分析"、CMB 负责"广度评测"、英文基准负责"跨语言对照"、Huatuo-26M 负责"训练规模扩充";同一角色堆多个数据集只会增加去重与污染管理成本。

§8.5 关键论文 Top 8

  1. Wang, Xidong, et al. “CMB: A Comprehensive Medical Benchmark in Chinese.” NAACL 2024, pp. 6184-6205. DOI: 10.48550/arXiv.2308.08833 — 提出本土化中文医疗基准与 60% 及格线隐喻,四策略评测协议与中西医差异结论。
  2. Liu, Junling, et al. “Benchmarking Large Language Models on CMExam — A Comprehensive Chinese Medical Exam Dataset.” NeurIPS 2023 Datasets and Benchmarks Track. DOI: 10.48550/arXiv.2306.03030 — 首个带五维标注的中文医疗考试数据集,确立 GPT-4 61.6% vs 人类 71.6% 基线。
  3. Li, Shengbin, et al. “MLEC-QA: A Chinese Medical Question Answering Dataset with Multiple Choice Questions.” BMC Bioinformatics 2021 — 中文医学 MCQ 评测的早期奠基(21,700 题)。
  4. Pal, Ankit, et al. “MedMCQA: A Large-scale Dataset for Medical AI.” CHIL 2022 — 英文侧最大医学 MCQ(193,155 题),常与中文基准并行报告。
  5. Chen, Junying, et al. “HuatuoGPT-II, One-stage Training for Medical Adaption of LLMs.” arXiv:2311.09779, 2023 — CMB 同团队医疗 SFT 代表作,CMB 排行榜开源模型头部。
  6. Jia, et al. “CollectiveSFT: Scaling Large Language Models for Chinese Medical Benchmark with Collective Instructions in Healthcare.” arXiv:2407.19705, 2024 — 系统研究题库式 SFT 对 CMB 成绩的增益(77.05)。
  7. Wang, Xidong, et al. “Huatuo-26M, a Large-scale Chinese Medical QA Dataset.” NAACL 2025 Findings — 同团队后续训练语料,与 CMB-train 互补。
  8. Lieber, et al. “LiveMedBench: A Contamination-Free Medical Benchmark for LLMs with Automated Rubric Evaluation.” arXiv 2025 — 动态无污染基准,量化静态题库类基准的泄漏风险(84% 模型退化)。

§8.6 社区活跃度

CMB:GitHub Stars 111(截至 2024-08,ecosyste.ms 快照)、官方排行榜持续接受提交、论文 Google Scholar 被引 174+(截至 2026-09)。CMExam:NeurIPS 2023 正式收录,HuggingFace 第三方镜像月下载 561 次(截至 2026-03 快照),官方仓库建议的多模态延伸为 ChiMed-VL-Instruction(469,441 视觉-语言 QA 对)。两仓库 2024 年后更新放缓,属"稳定维护"状态;学术采用度以中文医疗 LLM 论文为主流阵地。

从社区轨迹看两个基准的"生态位"差异:CMB 的活跃度集中在排行榜(企业模型提交频繁,2024 年前后新增大量 99 分段商业模型),形成的是"提交型生态";CMExam 的活跃度集中在训练侧(官方微调脚本被 LoRA/P-tuning 工作流复用,五维标注被错误分析工作引用),形成的是"工具型生态"。跟踪前者看排行榜快照日期,跟踪后者看论文方法节的训练数据声明。

§8.7 生态快照

资源 类型 链接 Star/热度(截至) 推荐理由
CMB GitHub 数据+评测代码 FreedomIntelligence/CMB 111 Star(2024-08) 官方唯一发布渠道,含评测脚本
CMB 官网/排行榜 排行榜 cmedbenchmark.llmzoo.com 持续收录提交 提交与对标的主阵地
CMB HuggingFace 数据集镜像 FreedomIntelligence/CMB 官方上传 load_dataset 一行加载
CMExam GitHub 数据+微调代码 williamliujl/CMExam NeurIPS 2023 官方 Ptuning/LoRA 脚本开箱即用
Awesome-Medical-Dataset 第三方索引 CMExam 条目 元信息与大小复核的二手源

§9 相关资源与引用

§9.1 官方资源清单

CMB 资源组

CMExam 资源组

求助渠道优先级:CMB 问题先查官网 submission 指南与 GitHub issue,联系邮箱兜底;CMExam 问题在仓库 issue 区检索(数据解析类问题多已有讨论)。

§9.2 BibTeX 引用块

@article{wang2024cmb,
  title     = {CMB: A Comprehensive Medical Benchmark in Chinese},
  author    = {Wang, Xidong and Chen, Guiming Hardy and Song, Dingjie and Zhang, Zhiyi and
               Chen, Zhihong and Xiao, Qingying and Jiang, Feng and Li, Jianquan and
               Wan, Xiang and Wang, Benyou and Li, Haizhou},
  journal   = {Proceedings of the 2024 Conference of the North American Chapter of the
               Association for Computational Linguistics (NAACL 2024)},
  pages     = {6184--6205},
  year      = {2024},
  doi       = {10.48550/arXiv.2308.08833}
}

@article{liu2023benchmarking,
  title     = {Benchmarking Large Language Models on CMExam -- A Comprehensive Chinese
               Medical Exam Dataset},
  author    = {Liu, Junling and Zhou, Peilin and Hua, Yining and Chong, Dading and
               Tian, Zhongyu and Liu, Andrew and Wang, Helin and You, Chenyu and
               Guo, Zhenhua and Zhu, Lei and Li, Michael Lingzhi},
  journal   = {Advances in Neural Information Processing Systems 36 (NeurIPS 2023)
               Datasets and Benchmarks Track},
  year      = {2023},
  doi       = {10.48550/arXiv.2306.03030}
}

§9.3 引用指南

使用 CMB 时引用 wang2024cmb(数据集与排行榜),使用 CMExam 时引用 liu2023benchmarking;两者同时使用时并列引用。若使用了 CMB-train 做训练,请在论文方法部分注明"未将 CMB-test/CMExam test 纳入训练",这是社区通行的研究诚信声明。

§10 AI 使用声明卡

§10.1 AI 模型使用

AI 模型 版本 用途
fast-model(CodeBuddy) 2026-09 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建
WebSearch(多源检索) 2026-09-07 6 组检索:官方页面、论文原文与统计表、排行榜快照、许可证与伦理声明、引用数快照、坑点来源交叉验证

§10.2 AI 参与范围

AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。

AI 在本页面的工作中负责:(1) 从 CMB 官网、两篇原始论文(arXiv:2308.08833 / arXiv:2306.03030)、官方 GitHub/HuggingFace README 与第三方索引中整理结构化信息;(2) 生成 §6 的 Python/Bash 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph。

§10.3 输入来源

  1. Wang et al. (2024), CMB: A Comprehensive Medical Benchmark in Chinese, NAACL 2024, pp. 6184-6205(DOI: 10.48550/arXiv.2308.08833)
  2. Liu et al. (2023), Benchmarking Large Language Models on CMExam, NeurIPS 2023 D&B Track(DOI: 10.48550/arXiv.2306.03030)
  3. CMB 官方网站与排行榜(cmedbenchmark.llmzoo.com,排行榜截至 2024-07-24 快照)
  4. FreedomIntelligence/CMB GitHub README 与 HuggingFace 数据卡(license: apache-2.0;下载与评测说明)
  5. williamliujl/CMExam GitHub README(统计表、五维标注、伦理声明、License Apache-2.0)
  6. openmedlab/Awesome-Medical-Dataset 的 CMB 与 CMExam 条目(数据大小与作者机构交叉复核)
  7. deepwiki/openmedlab 文本数据集页(CMB 子类题量分布与相关数据集对比表)
  8. CMB 早期 HuggingFace 数据卡(refs/pr/1 版本:CMB-train 304,743 与 CMB-exampaper 结构,用于版本历史)
  9. CollectiveSFT(arXiv:2407.19705,表 2 排行榜摘录与 SFT 结论)
  10. LiveMedBench(arXiv 2025,静态基准污染测量结论)
  11. Argmin AI CMExam 论文面板(引用数快照与 limitations 摘要)
  12. Google Scholar CMB 条目(被引 174+,截至 2026-09 快照)
  13. ecosyste.ms CMB 仓库元数据(创建/最后推送日期与 Star 数,截至 2024-08)
  14. CMExam NeurIPS 正式版 ACM DL 页(出版信息 Article No. 2283, pp. 52430-52452)

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§2 医学背景(考试体系、ICD-11 映射、标注金标准) 千方病案医学编辑部 交叉审核 ✅ 已通过
§3 数据集规格(子集题量、格式、大小) 千方病案医学编辑部 与官方 README 及论文 Table 交叉比对 ✅ 已验证
§4 数据结构(目录树、DAIMS 字段字典) 千方病案医学编辑部 与官方数据示例逐字段比对 ✅ 已验证
§5 数据划分策略与泄漏风险 千方病案医学编辑部 交叉审核 ✅ 已通过
§6 代码示例与 8 个坑点 千方病案医学编辑部 逻辑审查 + 与官方评测协议比对 ✅ 已通过
§7 质量评估与 DAIMS 评分 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 排行榜与引用数表述 千方病案医学编辑部 与排行榜快照及 Scholar 快照交叉比对 ✅ 已验证
§C JSON-LD @graph 千方病案医学编辑部 Schema v3.9 字段逐项校验 ✅ 已通过

§10.5 AI 生成章节标注

以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。

§10.6 最后审核

最后一次人工审核日期:2026-09-05

页面状态:published(全部内容已完成审核并发布)

返回 AI-Ready 数据集