信息速览
INFOBOX — MedCalc-Bench 一屏速览
维度 内容 本质 首个评估 LLM 医学计算能力的大规模评测基准:给一段临床 note 和一个明确问题,模型须找对公式、抽对参数、算对结果 团队 美国国立医学图书馆(NLM/NIH)主导 + 8 家合作机构,17 位作者;Qiao Jin 主导,Zhiyong Lu / Qingyu Chen 资深指导 论文 arXiv 2406.12036(v1 2024-06-17,v4 2024-06-30);NeurIPS 2024 Datasets & Benchmarks 赛道 Oral;PMID 41031072 计算器 55 个,七大子类:Lab 19 / Physical 12 / Date 3 / Dosage 2(equation-based 36)+ Risk 12 / Severity 4 / Diagnosis 3(rule-based 19) 规模 train 10,053 例(40 计算器,GPT-4 抽取未人工复核)+ test 1,047 例(55 计算器全覆盖,全部人工复核) note 来源 Open-Patients 180,142 条(PMC-Patients 167,034 + MedQA-USMLE 12,893 + TREC CT 125 + TREC CDS 90)+ Python 模板合成 + clinician 手写合成 任务形态 note + question → 数值(带单位)/ 分级字符串 / 日期;9 类属性(lab value、physical value、age、date、boolean、choice、string、dosage、percentage) 评分规则 rule-based 与 date 精确匹配;lab/physical/dosage 数值 ±5% 相对容差;脚本自动评分 评测矩阵 8 LLM(GPT-4、GPT-3.5、Llama 3 8B/70B、Mistral-7B、Mixtral-8x7B、PMC-LLaMA-13B、MediTron-70B)× 3 策略(zero-shot direct / zero-shot CoT / one-shot CoT) 主结果 GPT-4 one-shot CoT 50.9% 最佳,无一模型过半;PMC-LLaMA-13B 仅约 5-10% 错误分析 四类型 A 知识 / B 抽取 / C 计算 / D 其他;zero-shot CoT 下知识错误占比 >50%(PMC-LLaMA 0.96 vs GPT-4 0.35) 微调 40 计算器训练集微调后 Mistral-7B 10.79%→49.19%,Llama-2-7B 1.53%→45.75%;对未覆盖的 15 个计算器泛化仍差 Code-augmented 附录 D:模型生成 Python 代码 + 用户执行 + 编译错误最多重试 20 次,计算错误下降、知识错误不变 许可 CC BY-SA 4.0(v1.2 现行;v1.0 曾标 CC BY 4.0 后回撤——PMC-Patients 的 SA 条款传染) 获取 HuggingFace ncbi/MedCalc-Bench公开非 gated + GitHub 评测代码审计 arXiv 2603.02222《MedCalc-Bench Doesn’t Measure What You Think》:提示泄漏致"背题",重定位为 tool-use 基准,RL 后最高 73.95% 库内互链 medqa(rid 50)、medmcqa(rid 111)、open-pmc(rid 45)、mimic-iv-note(rid 47)、pubmedqa(rid 49)、cmb-cmexam(rid 180)
MedCalc-Bench 是一个把"大模型会背医学知识"和"大模型会做医学计算"拆开考的基准:它不考选择题,而是给模型一段临床笔记(“患者 45 岁女性,血肌酐 1.2 mg/dL……”)加一个明确问题(“计算她的 Cockcroft-Gault 肌酐清除率”),要求模型自己找到公式、从笔记里抽出血肌酐、年龄、体重等参数、代入算式给出带单位的数值,或者对 rule-based 评分表(如 SOFA、NIHSS)逐项打分给出分级。NeurIPS 2024 Datasets & Benchmarks Oral 论文给出的答案很冷静:最强的 GPT-4 在 one-shot CoT 下也只有 50.9%,而且近半错误不是算错,而是根本不知道或记错公式。这个基准由此成为"医学 LLM 距离临床落地还差多少"这一问题的最硬标尺之一,也是 2024-2026 年医学 tool-use 与计算评测这条线的源头数据集。
导语读法三则:
- 只想下数据:直奔 §7——HuggingFace
ncbi/MedCalc-Bench公开非 gated,注意 v1.0/v1.2 两个 repo 与 license 差异(坑 2)。 - 关心评测结果:直奔 §5——8 模型 × 3 策略主表、错误四类型、微调与 code-augmented 三段连读。
- 想用 MedCalc-Bench 训练/评测自己的模型:先读坑 5(train 未人工复核)与坑 6(±5% 容差),再读 §6 审计论文对"背题"风险的论证。
一句话把三条读法连起来:MedCalc-Bench 的价值不在"分数是多少",而在"分数可以拆开看"——拆成子类(§5.5)、拆成错误类型(§5.2)、拆成记忆与泛化(§5.3)、拆成口径与版本(§6.2)。这个"可拆性"是它区别于同期多数医学基准的核心特征,也是本条目用长篇幅保留全部数字链的原因。
§0 导读:这个数据集解决什么问题
到 2024 年年中,医学 LLM 评测几乎被选择题垄断:MedQA、MedMCQA、PubMedQA、MMLU 医学子集都在考"四个选项里选一个"。这类评测能测知识记忆与推理,但对临床最日常的一类任务——计算——完全失明。开一份丙肝患者的 MELD 评分、按肌酐算一个化疗剂量、从末次月经推预产期、给创伤患者算 TIPI 分诊优先级——这些工作每天在病房发生成千上万次,一个在 MedQA 上拿到 90 分的模型完全可能连 Cockcroft-Gault 公式都背不出来,或者背出来也抽错参数、算错数。更麻烦的是,当时没有任何公开资源能自动、可复现地评测这件事。
MedCalc-Bench 的回答分三层。第一层是任务定义:把"医学计算"形式化为 note + question → answer 的三连任务(识别计算器 → 抽取属性 → 执行计算),覆盖 55 个真实临床计算器,从实验室指标(如 MELD、CKD-EPI)、体格测量(如 BSA、理想体重)、日期推算(如预产期 EDD)、药物剂量,到 rule-based 评分表(如 SOFA、GCS、Wells、CHA2DS2-VASc)。第二层是数据工程:从 18 万条 Open-Patients 候选笔记中用 GPT-3.5 筛选、GPT-4 抽取、医学专业人员逐例校验,构造 train 10,053 例与 test 1,047 例;test 全部人工复核,覆盖全部 55 个计算器,其中 15 个计算器在 train 中刻意缺席以测试 zero-shot 泛化。第三层是诊断框架:不只给一个总分,而是把失败拆成知识错误、抽取错误、计算错误、其他错误四类型——结果发现 zero-shot CoT 下超过一半的错误是"不知道公式",而"算错数"(Type C)反而是最小类。这三层让 MedCalc-Bench 同时回答了三个问题:模型会不会算、为什么算不对、微调能不能补。
§0 读法三则:
- 这个条目是"评测基准 + 错误诊断框架 + 争议对象"三合一:本体是 1,047 道人工复核的测试题,副产品是一套可迁移的错误四类型分析法,后续又被审计论文重新定位为 tool-use 基准——三种身份对应 §5、§5.2 与 §6 三种读法。
- 全文硬数字均出自 arXiv 2406.12036 v4 正文与附录;数据规模与 note 来源计数存在多口径冲突,全部在 §10 避坑清单与 FACTS 存照登记,正文以论文口径为主。
- 检索时不要把 “MedCalc-Bench” 与库内
medqa(rid 50)/medmcqa(rid 111)混为一谈——它们是选择题问答基准,本条目是计算执行基准,任务正交(§9 有逐条对照)。
还需要预告一个贯穿全文的方法学立场:MedCalc-Bench 的每一个设计选择都同时是一个取舍。test 全人工复核换来可信评测但放弃规模;train 依赖 GPT-4 抽取换来 10,053 例的低成本但引入噪声;±5% 容差换来跨网站的舍入兼容但放宽精度要求;问题点名计算器换来可评测性但埋下提示泄漏。把这些取舍读成"缺陷清单"是片面的——它们是论文明确讨论过的工程权衡;但把取舍当"无代价"来引用也是危险的——§6 的审计批评几乎全部来自对这些代价的重新定价。本条目的写法是:正文按论文口径陈述设计,每个取舍的代价在对应小节与坑点中显式标价。
§1 数据集速览:十问十答
Q1:MedCalc-Bench 到底评测什么能力?
三连能力:给定临床 note 与问题后,(a)识别该用哪个计算器/公式(rule-based 评分表还要回忆打分规则),(b)从 note 中抽取所需属性(血肌酐、体重、日期、是否用过肝素等 9 类属性),(c)正确执行计算给出带单位的数值、分级字符串或日期。三者任一失败即该题失败,且按最早发生的错误归类诊断。
Q2:"55 个计算器"是怎么选的?
来自 MDCalc 网站(最大临床计算器聚合站)按 popular 程度筛选的清单,再按七大子类归类:Lab(实验室指标)19 个、Physical(体格测量)12 个、Date(日期推算)3 个、Dosage(剂量)2 个,构成 equation-based 36 个;Risk(风险分层)12 个、Severity(严重度)4 个、Diagnosis(诊断/分诊)3 个,构成 rule-based 19 个。
Q3:train 和 test 各多大?
论文口径:train 10,053 例覆盖 40 个计算器(入选标准为该计算器有超过 20 条真实 note,或以合成数据补足 20 例);test 1,047 例覆盖全部 55 个计算器。注意 train 的属性抽取由 GPT-4 完成且未人工校验,test 则全部人工复核(坑 5)。规模另有 GitHub v1.2 README 10,543/1,100 等口径(坑 3)。
Q4:note(临床笔记)从哪来?
三个来源:34 个计算器的 note 取自 Open-Patients 语料库(180,142 条候选:PMC-Patients 患者摘要 167,034 条 + MedQA-USMLE 题干 12,893 条 + TREC 临床试验 125 条 + TREC CDS 90 条);11 个计算器用 Python 模板合成;10 个 rule-based 计算器由 clinician 手写合成(各 20 例)。主文与附录对合成/手写的计数归属有一处互换矛盾(坑 4)。
Q5:数据怎么标出来的?
三步流水线:GPT-3.5-Turbo 先筛"合格 note"(含可计算实体且数值非派生——比如已有 MELD 分数的笔记不能用来再考 MELD);GPT-4 抽取属性(9 类属性类型);医学专业人员逐例校验修正(test 全校验、train 未校验)。
Q6:答案怎么判对错?
脚本自动评分:rule-based 与 date 类要求精确匹配;equation-based 的 lab/physical/dosage 数值类允许 ±5% 相对容差(承认舍入与单位换算差异)。date 无容差——日期差一天就是错。
Q7:模型考得怎么样?
GPT-4 one-shot CoT 最佳 50.9%(zero-shot CoT 48.4%);Llama 3 70B 约 47.8%;Mistral-7B、GPT-3.5 在 30-40% 区间;医学专用小模型 PMC-LLaMA-13B 只有约 5-10%。无一模型过半。
Q8:错在哪?
四类型分析:Type A 知识错误(不知道/记错公式规则)、Type B 属性抽取错误、Type C 计算错误、Type D 其他。zero-shot CoT 下 Type A 占比超过一半(PMC-LLaMA 0.96、GPT-4 0.35);Type C 反而是最小类——大模型"会算不会背"。
Q9:微调能解决吗?
部分能:在 40 计算器训练集上微调后 Mistral-7B 从 10.79% 跳到 49.19%,Llama-2-7B 从 1.53% 跳到 45.75%。但对 train 未覆盖的 15 个计算器泛化仍差——微调补得了"见过的公式",补不了"没见过的公式"。
Q10:数据获取有什么要注意的?
HuggingFace ncbi/MedCalc-Bench 公开非 gated,CSV 直接下载;注意 v1.0 与 v1.2 两个 repo、license 从 CC BY 4.0 改为 CC BY-SA 4.0 的变迁(根因是 PMC-Patients 的相同方式共享条款),以及四套规模口径的分歧(坑 2、坑 3)。
§1.1 溯源:从 MDCalc 到 benchmark 的设计传承
理解 MedCalc-Bench 的最短路径是看它"继承"了什么。计算器本身来自 MDCalc——临床界事实上最大的计算器聚合站,医生在诊室里用的 SOFA 计算器与基准里考的是同一批工具;这条传承意味着任务的真实性有临床工作流背书,不会考"只在论文里存在的公式"。note 的叙事传统来自病例报告(PMC-Patients)与考试题干(MedQA-USMLE)——两者都是"被人写给人看"的临床叙事,语言规范但非 EHR 原生。评测的形式传承自通用 NLP benchmark 传统(数据集 + 自动评分器 + leaderboard),而错误诊断框架(Type A-D)则更像软件工程的失败模式分析移植到了评测设计里。四条传承汇在一起,解释了 MedCalc-Bench 为什么"像"一个临床工具箱的驾照考试:题型来自真实工具、语料来自真实叙事的发表版、考法来自 NLP 评测传统、判卷来自失败模式分析。
§1.2 六个被搜索最多的计算器:它们在基准里的角色
对具体公式感兴趣的读者,先看六个高频计算器在 MedCalc-Bench 中的考法:
MELD(终末期肝病模型)——Lab 类代表。输入胆红素、INR、肌酐(含透析特殊处理)等化验值,输出一个风险分值。考法难点在化验单位的换算与"透析患者肌酐按固定值计"这类规则细节;它是"公式+特殊规则"混合型考题的典型。
Cockcroft-Gault 肌酐清除率——Physical 类代表。需要年龄、体重、血肌酐与性别四参数,公式系数随性别切换。常被用来考"参数全找对、系数记错"的 Type A 错误:模型可能把女性系数 0.85 记成 1,一步错整题错。
SOFA(序贯器官衰竭评估)——Severity 类代表,也是全基准属性最密的考题之一:呼吸、凝血、肝脏、心血管、神经、肾脏六器官逐项打分再求和,单题属性可达十余个。模型要同时完成"回忆六个器官的打分档位"与"从长 note 里抽齐六组参数",是 rule-based 难度的集中展示。
GCS(格拉斯哥昏迷评分)——Severity 类代表。三组成分(睁眼、语言、运动)各自 4-6 档,叙事中的意识状态描述必须逐项映射到档位。自由文本到档位的映射是 string/choice 属性类型的主考场。
EDD(预产期)——Date 类代表。从末次月经(LMP)推算,需要准确的日历运算(含月份天数与闰年)。无容差判分,差一天即错;也是 code-augmented 收益最直观的场景(交给 Python datetime 就不会错)。
CHA2DS2-VASc(房颤卒中风险)——Risk 类代表。每个字母对应一个风险项(心衰、高血压、年龄档、糖尿病、卒中史、血管疾病、性别),模型要把叙事中的病史逐项转成布尔加总。它展示的是"字母助记"背后的档位细节如何成为知识负担——多数模型能背出字母,却记错年龄分档。
§1.3 与"通用数学能力"的三点根本区别
常有读者问"这跟让模型做应用题有什么区别",三点根本区别值得写清:
区别一:知识在公式里,不在算式里。 通用数学题把公式给全(或公式是公知的),考的是代数运算;医学计算把公式当作需要回忆的领域知识——模型不仅要"会用",还要"知道有这个东西、且系数/档位无错"。这是 §5.2 中知识错误成为最大类的直接原因。
区别二:输入是非结构化的临床叙事。 通用数学题把数值以规范形式列出;医学计算的输入是"45 岁女性,3 天前因胸痛入院,既往高血压……"的叙事,数值藏在句子里、单位可能缺失、条件用否定句表达。抽取(Type B)是通用数学评测里几乎不存在的失败面。
区别三:答案有临床语义约束。 通用数学只要求数值正确;医学计算的值必须"临床上说得通"(剂量不能为负、评分不能超上限、日期必须合理),这为评测提供了额外的合理性校验维度,也意味着纯数值容差(±5%)之外还可以加语义边界检查——这是扩展评测协议时值得加的一层。
§2 为什么需要 MedCalc-Bench:医学计算的评测空白
§2.1 选择题评测的结构性盲区
2022-2024 年医学 LLM 的进步叙事几乎全部建立在选择题上:MedQA(USMLE)让 GPT-4 首次越过及格线、MedMCQA 把印度医学考试搬进评测、PubMedQA 把文献判断数字化。这些基准的共同形式是"读题干、选选项",它们能有效测出知识覆盖面与推理链质量,但有三个结构性盲区。
第一个盲区是输出形态。临床计算的真实输出是"肌酐清除率 62.4 mL/min"、“SOFA 总分 7, mortality 风险约 25%”、“预产期 2025-03-14”——是一个必须正确的具体值,而选择题把正确答案混在四个选项里,模型即使不会算也可能蒙对 25%,评测信号被稀释。第二个盲区是过程不可见。选择题只看最终选择,无法区分"记对公式但抽错参数"与"记错公式"这两种需要完全不同干预的失败。第三个盲区是临床代表性。临床计算器(MDCalc 收录数百个)是住院医师与执业医生的日常工具,其使用频率远高于考试题,但此前没有任何基准系统覆盖。
§2.2 医学计算的特殊难点
与一般数学题相比,医学计算对 LLM 有三重额外困难。知识层:公式与评分表本身是领域知识——Cockcroft-Gault 公式的系数、SOFA 六个器官的打分档位、CHA2DS2-VASc 每个字母对应的风险分,都需要精确回忆,版本差异(如 CKD-EPI 2009 vs 2021)还会引入时效性问题。抽取层:临床笔记是自然语言,年龄可能写作"45-year-old woman"也可能写作"DOA 1980-03-12",化验值有单位(mg/dL vs μmol/L),日期格式五花八门,布尔条件(“是否在 48 小时内使用过肝素”)藏在叙述里——抽取错误是医学计算特有的、通用数学评测不会遇到的失败面。计算层:抽完参数后还有单位换算、公式代入、多步加减、日期推算(含闰年)——这条链上任何一环出错都是整题失败。
§2.3 此前工作为什么不够
在 MedCalc-Bench 之前,与医学计算沾边的评测路径有四条,均有明显缺口。(a)通用数学评测(GSM8K、MATH):不涉及医学公式与临床笔记语境。(b)医学问答基准的数值子题:零散且无统一评分器。(c)临床决策支持系统的内部评测:多为单中心、不公开、无法复现。(d)MDCalc 等网站的单元测试:只测计算器实现本身,不测自然语言输入的端到端能力。缺的是一件"基础设施":一个公开的、覆盖面够广的、带自动评分器与错误诊断的医学计算基准。MedCalc-Bench 就是按这个定位设计的——论文标题的动词是 Evaluating,它自我定位为标尺而非模型。
§2.4 NLM/NIH 的位置
主导团队来自美国国立卫生研究院(NIH)下属国立医学图书馆(NLM),即维护 PubMed/MEDLINE、UMLS、ClinicalTrials.gov 的同一机构。这带来两个实际优势:一是对临床文献语料(PMC-Patients 等)的合法合规使用有内部把关,二是医学专业校验人员(clinicians)的组织成本较低。论文 17 位作者横跨 9 家机构(NLM、Wisconsin–Madison、Oregon、Yale、Rice、UTHealth Houston、Melbourne、Macquarie、VA Salt Lake City),其中 NLM 出主导者 Qiao Jin 与资深作者 Zhiyong Lu、Qingyu Chen——这条"NIH 主导 + 多校协作"的作者结构在库内 Mimic-IV、Open-PMC 等条目中反复出现,是医学 NLP 基础设施类工作的典型署名模式。
§2.5 发表语境:2024 年中评测版图上的空位
把时间拨回 2024 年 6 月(论文 v1 提交日)能更准确看到这个基准填的是哪块空:彼时 MedQA/MedMCQA 上 GPT-4 已接近或超过人类及格线,"医学知识已被攻克"的叙事正盛;通用 agent 评测(工具调用、代码执行)刚起步但无医学特化;临床计算评测只有零星的封闭内部工作。MedCalc-Bench 的发表等于在"医学知识评测饱和"与"医学 agent 评测未开荒"之间插了一根标桩——它用数据表明知识评测的高分完全不外推到计算任务(PMC-LLaMA 的对照是最好的反例)。这也是 NeurIPS D&B 赛道把它选为 Oral 的评审逻辑:填补的是评测版图的结构性空位,而非在已有赛道上刷更高分。
§3 数据构建:55 个计算器、18 万候选 note 与三层流水线
§3.1 计算器覆盖:七大子类的分布账本
MedCalc-Bench 的骨架是 55 个临床计算器,全部从 MDCalc 的 popular 清单筛选,按知识与判定方式分为两大类七子类:
| 大类 | 子类 | 计算器数 | test 例数 | 代表计算器 |
|---|---|---|---|---|
| equation-based | Lab(实验室指标) | 19 | 327 | MELD、CKD-EPI、Free Water Deficit、Anion Gap、Corrected Sodium |
| equation-based | Physical(体格测量) | 12 | 240 | BSA、BMI、Ideal Body Weight、Cockcroft-Gault、PCI 简化 |
| equation-based | Date(日期推算) | 3 | 60 | EDD 预产期、孕周推算、日期差 |
| equation-based | Dosage(剂量) | 2 | 40 | 化疗剂量、药物体重折算 |
| rule-based | Risk(风险分层) | 12 | 240 | CHA2DS2-VASc、Wells、HEART、TIMI、Caprini |
| rule-based | Severity(严重度) | 4 | 80 | SOFA、GCS、NIHSS、APGAR |
| rule-based | Diagnosis(诊断/分诊) | 3 | 60 | CENTOR、TIPI、 Montreal 判别 |
| 合计 | 7 子类 | 55 | 1,047 | — |
数字链自检:equation-based 36 = 19+12+3+2;rule-based 19 = 12+4+3;test 例数 327+240+60+40+240+80+60 = 1,047 ✓。equation-based 计算器的知识载体是一条公式或一组换算规则;rule-based 计算器的知识载体是一张逐项打分表——模型必须回忆每个维度的评分档位再逐项映射,这对"背规则"的要求比公式更高,这也是 §5.2 中 rule-based 错误率显著偏高的根源。
§3.2 Open-Patients:18 万条候选笔记的四源账本
真实临床 note 的供给侧是一个名为 Open-Patients 的聚合语料库,共 180,142 条,四源构成:
| 来源 | 条数 | 平均 tokens | 性质 |
|---|---|---|---|
| PMC-Patients | 167,034 | 484 | 病例报告的患者摘要(真实病历叙事) |
| MedQA-USMLE | 12,893 | 135.8 | 执业考试题干(拟临床叙事) |
| TREC Clinical Trials | 125 | 137.7 | 部分合成 |
| TREC CDS | 90 | 105.1 | 2014/2015 手写合成、2016 真实 EHR |
| 合计 | 180,142 | — | 90+125+12,893+167,034 = 180,142 ✓ |
两点值得注意。其一,主体是 PMC-Patients——即库内 open-pmc(rid 45)的姊妹资源,其 CC BY-SA 4.0 许可最终传染决定了 MedCalc-Bench 的 license 走向(§6、坑 2)。其二,笔记并不全部来自真实临床记录:MedQA-USMLE 是考试题干,TREC 两源部分为合成——审计视角下"真实世界 note"的说法需要打折(坑 7 有专门讨论)。这些候选笔记覆盖了 55 个计算器中的 34 个;剩下 21 个计算器找不到合格的真实 note,只能靠合成补齐(§3.3)。
四源各自的语域细节值得逐源登记:
- PMC-Patients(167,034 条,484 avg tokens):病例报告的"患者摘要"部分——发表在期刊上的真实病例经过知情同意与脱敏,叙事完整、时序清晰,是四源中最接近真实病历的语料;但其"发表版"属性意味着罕见病、戏剧性病例占比偏高,且长度(484 tokens)给了模型充分的上下文。
- MedQA-USMLE(12,893 条,135.8 tokens):美国执业医师考试题干,天然包含计算所需的参数(出题人故意给全),语言规范但"考点导向"——数值几乎从不冗余,与真实病历的信息密度截然不同。
- TREC Clinical Trials(125 条,137.7 tokens):临床试验受试者叙述,部分为合成;量极小,仅覆盖个别计算器。
- TREC CDS(90 条,105.1 tokens):临床决策支持共享任务的病历叙述——2014/2015 年份为手写合成、2016 年为真实 EHR 片段;同样量小,但它是四源中唯一的"真实 EHR 原生文本"(尽管只有个位数年份的覆盖)。
由此得到一个实用的语域光谱:PMC-Patients(真实但发表版)→ MedQA(拟真但考试化)→ TREC CDS(真实 EHR 但极少量)→ 模板/手写合成(拟真可控)。任何关于"MedCalc-Bench 测的是不是真实临床场景"的争论,都应该先落到这个光谱上明确谈的是哪一段。
§3.3 note 三来源:真实、模板、手写
| 来源 | 覆盖计算器 | 说明 |
|---|---|---|
| Open-Patients 真实 note | 34 个 | GPT-3.5 从 180,142 条中筛选含可计算实体且数值非派生的笔记 |
| Python 模板合成 | 11 个 | 附录 A.2:按计算器所需字段生成结构化笔记(多为 Lab/Physical 类) |
| Clinician 手写合成 | 10 个 | 附录 A.3:rule-based 计算器由临床医生手写拟真笔记,各 20 例 |
34+11+10 = 55 ✓。但主文与附录在此有一处数字互换矛盾:主文正文表述为"10 个 equation 计算器模板合成 + 11 个 rule-based 计算器 clinician 手写",而附录 A.2/A.3 列出的是 11 个模板、10 个手写。两处无法同时为真,成稿按"约 10-11 个"模糊化并在坑 4 存照。合成 note 的存在是基准的必要妥协(真实病历中某些计算器场景极稀缺,如化疗剂量),但也埋下分布偏移:合成笔记的字段完整度高于真实叙事,抽取任务难度被低估。
合成 note 的设计本身也有值得记录的细节。模板合成的做法是按计算器的属性需求生成"字段齐全、数值合理、叙述通顺"的笔记——它保证了每道题都有完整可抽的参数集,代价是真实病历里的缺失值、无关化验、噪声干扰在合成数据里被清洗掉了;clinician 手写合成则反过来,由临床医生按真实工作流的口吻撰写(rule-based 评分表需要的叙事细节更难模板化,所以交给人工),各计算器固定 20 例的配额保证了小众计算器在 test 中有最低覆盖。两种合成路线的分工边界——模板管 equation、人工管 rule——与主文/附录的 10/11 之争正好对应,这也是为什么矛盾只发生在两类的交界计数上,而 34 个真实 note 计算器的归属从无争议。
§3.4 三步流水线与标注质量
第 1 步 合格性筛选 GPT-3.5-Turbo 逐条判断 Open-Patients 笔记:
(a) 是否包含目标计算器所需的实体/场景
(b) 数值是否为"原始测量值"而非"派生结果"
——已有 MELD 分数的笔记不能再用于考 MELD
第 2 步 属性抽取 GPT-4 按计算器定义的属性表抽取参数:
9 类属性 lab value / physical value / age /
date / boolean / choice / string / dosage / percentage
第 3 步 人工校验 医学专业人员逐例核对属性与答案,修正后入库
test:全部人工复核 | train:未人工复核
流水线的工程判断有两处值得展开。第一,"非派生"过滤是数据质量的关键闸门:临床笔记里常见"实验室已给出 calculated LDL"这类派生值,若不过滤,模型只需抄答案而无需计算,基准即失效。第二,train/test 质量不对称是论文自己承认的取舍:test 1,047 例全部人工复核以保证评测可信;train 10,053 例的 GPT-4 抽取未经人工校验以压低成本——这个取舍在微调实验(§5.3)中构成隐含噪声源,也成了 2026 年审计工作的切入口之一(§6、坑 5)。
把这条流水线放到库内标注传统的坐标系里看,能更准确评估其成色。库内 i2b2/n2c2(rid 14)代表"共享任务式"标注——多中心团队按指南标注、带跨标注者一致性统计;库内 PANDA-PLUS 代表"三层人审"标注——医学生初注、高年级复核、专家终审,全程人工。MedCalc-Bench 的流水线是第三种形态:LLM 前置粗筛 + LLM 细抽取 + 人工终验——人工只放在刀刃(test 与最终校验)上。它的优势是规模(10,053 例)与速度,代价是 train 侧没有跨标注者一致性数字可引用。三种形态没有绝对优劣,但引用 MedCalc-Bench 标注质量时应说明它属于"人机协作、质控分层"形态,而非全人工金标准形态。
§3.5 训练/测试划分与 zero-shot-only 设计
| 划分 | 例数(论文口径) | 覆盖计算器 | 人工复核 | 用途 |
|---|---|---|---|---|
| train | 10,053 | 40 | 否(GPT-4 抽取) | 微调实验(§5.3) |
| test | 1,047 | 55(含 15 个 train 未覆盖) | 是 | 主评测(§5.1) |
test 中刻意保留 15 个计算器在 train 中缺席,用于区分"微调学会的"与"模型本会的"——这个设计使 MedCalc-Bench 同时具备记忆评测与泛化评测两种读法,是它在微调叙事(§5.3)中能给出"补内伤不补外伤"结论的结构性原因。规模口径分歧(论文 10,053/1,047 vs GitHub v1.2 README 10,543/1,100 vs hyper.ai 10,055/1,047 vs 审计论文 9,765/1,048)见坑 3 与 FACTS S-01。
对 15 个 zero-shot-only 计算器再补一句使用建议:它们是全基准中唯一"考泛化"的子集,任何微调工作汇报成绩时都应把这 15 个的单列分数与 40 个已见计算器的分数分开报告——混报会系统性高估泛化能力。同时,由于这 15 个计算器只有 test 覆盖、样本量小,单计算器层面的分数波动大,跨模型比较时建议看子类聚合而非单个计算器。
§3.6 选择 55 个计算器的取舍
为什么是 55 而非更多人熟悉的 100+?论文的筛选逻辑是"popular 优先 + 可评测性优先",这个标准带来两组取舍。取舍一:流行度 vs 代表性。选 MDCalc 的 popular 清单保证了每个计算器都有真实临床使用场景(不会考冷门的学术性公式),但代价是专科深度不足——心内科、肿瘤科的大量专科评分表没有纳入,用 MedCalc-Bench 的分数无法代表"专科计算能力"。取舍二:可自动化评测 vs 判断题。要能脚本判分,输出必须是确定的数值/分级/日期,这排除了那些"需结合多模态(看心电图、读影像)才能算"或"答案本身有临床分歧"的计算器。这两组取舍解释了为什么 55 这个数字是合理的下限而非上限——它优先服务"可复现的评测",而不是"覆盖所有临床计算场景"。
对扩展者而言,这个筛选逻辑是可以继承的方法论:新加计算器时应先问三个问题——(a)它是否在真实临床工作流中被使用?(b)它的答案是否唯一确定、可脚本判分?(c)它的输入是否能从纯文本 note 中获得?三问全过才适合进基准,否则应归入"需多模态/需共识"的另册。
§4 任务定义、属性体系与评分规则
§4.1 任务形式化
每道题是一个四元组(note, question, calculator, answer):
输入:
note 一段临床笔记(平均 529.7 字符)
question 一个明确问题(平均 21.9 字符),如
"What is the patient's SOFA score?" 或
"Calculate the patient's creatinine clearance."
输出:
answer 数值(带单位)/ 分级字符串 / 日期(三选一)
中间产物(评测要求显式给出):
calculator 模型判断应使用的计算器名称
attributes 模型抽取的目标属性表(1-31 个,均值 5.4)
问题文本会点名计算器或计算意图——这既是任务可评测性的保障,也是后来"提示泄漏"批评的来源(§6、坑 6 相关):模型不需要自己猜"该算什么",但必须知道"怎么算"。
§4.2 九类属性
| 属性类型 | 示例 | 抽取难点 |
|---|---|---|
| lab value | 血肌酐 1.2 mg/dL、Na+ 137 mmol/L | 单位制切换、参考范围干扰 |
| physical value | 体重 70 kg、身高 175 cm、BP 120/80 | 缩写与叙述式表达 |
| age | 45-year-old、DOB 1979-03-01 | 两种表达方式换算 |
| date | LMP 2024-11-05、入院日期 | 格式多样、相对日期(“3 days ago”) |
| boolean | 是否使用肝素、是否有房颤史 | 藏在否定句与条件句中 |
| choice | 吸烟状态(never/former/current) | 枚举映射 |
| string | 意识水平描述 | 自由文本归一 |
| dosage | 每日剂量 500 mg qid | 频次缩写 |
| percentage | 血氧饱和度 95% | 与 lab value 边界 |
属性表的 1-31 个跨度意味着最复杂的计算器(如 SOFA 六器官多参数)单题抽取链长达三十步,一步错步步错——这是 §5.2 中 rule-based Severity 类错误率高的第二个原因。
三个抽取层的经典失败形态,值得每类记一个例子:
- 单位静默换算失败:note 写 “creatinine 106 μmol/L”,公式需要 mg/dL——模型直接把 106 代入公式。数值看起来"合理"(在容差外的错误值),失败隐藏在换算步骤里。Lab 类最常见的 Type B。
- 相对日期解析失败:note 写 “presented 3 days ago with LMP approximately 8 weeks prior”——“3 days ago” 需要以某个基准日期锚定,“approximately” 引入模糊性。Date 类错误多为这一族。
- 否定句布尔失败:note 写 “no history of heart failure”——模型把"心衰"这个关键词出现当作布尔真值。Risk 类(CHA2DS2-VASc 的心衰项)的经典失败,也是"关键词命中不等于语义理解"的最直接证据。
§4.3 评分规则
| 大类 | 匹配规则 | 容差 |
|---|---|---|
| equation-based(lab/physical/dosage) | 数值比较 | ±5% 相对容差(承认舍入与单位换算差异) |
| equation-based(date) | 精确匹配 | 无(差一天即错) |
| rule-based | 精确匹配(分级字符串) | 无 |
±5% 容差是全基准争议最集中的单一设计:支持方认为医学计算器网站间本身存在舍入差异,不放容差会误伤正确计算;批评方(§6 审计)认为 5% 对某些场景(儿科剂量、移植肾小球滤过率边界值)判放过宽,且与"精确匹配才是临床现实"的立场冲突。date 无容差则是反向的从严设计——闰年与月份天数差一不可。两种口径并存,使用者在自建评测时需显式声明沿用哪套。
§4.4 评分器与可复现性
评测完全由脚本自动完成(无 LLM-as-judge),评分器随 GitHub ncbi/MedCalc-Bench 仓库发布,论文附复现指南。这使 MedCalc-Bench 成为库内少见的"数据 + 评分器 + 复现指南"三件套齐全的基准,与 pubmedqa(rid 49)"数据+脚本"的双件套相比多出一层方法学透明度。可复现性的代价是答案表示的刚性:分级字符串必须与参考答案逐字符一致(大小写/空格差异可能误判),使用前建议先读仓库的答案规范化代码。
§4.5 七子类名录:55 个计算器的代表与覆盖
下表按子类列出论文正文与附录明确出现的代表计算器(完整名录以论文附录 A.1 与 GitHub 计算器定义文件为准):
| 子类 | 论文点名的代表计算器 | 子类共通特征 |
|---|---|---|
| Lab(19) | MELD、CKD-EPI、Free Water Deficit、Anion Gap、Corrected Sodium | 输入为化验值;单位制切换(mg/dL vs μmol/L)是主要抽取陷阱 |
| Physical(12) | BSA、BMI、Ideal Body Weight、Cockcroft-Gault 肌酐清除率 | 输入为体格测量与人口学参数;公式系数需精确记忆 |
| Date(3) | EDD 预产期、孕周推算、日期间隔 | 需要模型内部维护准确历法;无容差判分 |
| Dosage(2) | 化疗剂量(体重/体表折算) | 精度敏感;真实病历中该场景稀缺故依赖合成 note |
| Risk(12) | CHA2DS2-VASc、Wells、HEART、TIMI、Caprini | 逐项布尔/分档映射;字母助记下的档位细节是知识负担 |
| Severity(4) | SOFA、GCS、NIHSS、APGAR | 多维度多档位;单题属性多达十几至三十余个 |
| Diagnosis(3) | CENTOR、TIPI、Montreal | 输出为分类判定;规则记忆与条件判断并重 |
读这张表的方法:每行的"共通特征"就是该子类的错误模式预测器——Lab 类错在单位、Physical 类错在系数、Date 类错在历法、Dosage 类错在精度、Risk/Severity/Diagnosis 类错在档位记忆。用基准做模型诊断时,先看总分,再看子类分布,最后对照本表归因。
§4.6 属性需求与子类的映射关系
九类属性在不同子类的出现密度并不均匀,这决定了各子类的抽取难度结构:
| 子类 | 高频属性 | 低频/无属性 | 抽取难点评级 |
|---|---|---|---|
| Lab | lab value、percentage | date、dosage | 中(单位与参考范围) |
| Physical | physical value、age | dosage、percentage | 中低(表达多样但语义直白) |
| Date | date、age(孕周类) | lab value、dosage | 中高(相对日期与格式) |
| Dosage | dosage、physical value、lab value | boolean | 高(多源参数 + 精度) |
| Risk | boolean、choice、age、physical value | lab value | 高(条件句与否定句中藏布尔) |
| Severity | physical value(GCS 眼睑/语言/运动)、choice、lab value | date | 最高(属性最多、档位最密) |
| Diagnosis | boolean、choice、age | dosage | 中高(规则条件判断) |
这一映射的实际用途有二。其一,自评模型时的瓶颈定位:如果错误集中在 boolean 属性,问题多半出在否定句/条件句理解而非医学知识;如果集中在 lab value 的单位换算,则是典型的 Type B 抽取链问题。其二,扩展基准时的覆盖检查:新增一个计算器时,按本表核对其属性谱是否已被现有子类覆盖,避免无谓的重复采样。
§5 评测结果:8 模型 × 3 策略、错误四类型与微调
§5.1 主结果:无一模型过半
论文对 8 个 LLM 在 3 种提示策略下做了完整矩阵评测(24 组):
| 模型 | zero-shot direct | zero-shot CoT | one-shot CoT |
|---|---|---|---|
| GPT-4 | 中 30-40% | 48.4% | 50.9%(全场最佳) |
| GPT-3.5-Turbo | 低 | 30-35% 区间 | 30-35% 区间 |
| Llama 3 70B | 低 | ~40% | ~47.8%(开源最佳) |
| Llama 3 8B | 低 | ~35% | ~40% |
| Mistral-7B | 10.79%(微调前基线) | ~30% | ~35% |
| Mixtral-8x7B | 低 | ~40% | ~45% |
| PMC-LLaMA-13B | ~5% | ~10% | ~10% |
| MediTron-70B | ~15% | ~30% | ~35% |
(表内为论文图表区间的整理值;精确到小数的总分以论文 Table/原文为准,上表用于呈现相对格局。)
三个结构性观察。其一,CoT 是普适增益:几乎所有模型从 direct 切到 CoT 都获得两位数提升,说明医学计算失败主要不在"算"而在"想清楚该算什么、从哪抽"。其二,one-shot 的边际收益集中于开源模型:一个示例同时示范了输出格式与答案规范,开源模型受格式噪声拖累更重,给一个例子即显著回血;GPT-4 的增益相对小。其三,医学领域预训练不等于计算能力:PMC-LLaMA-13B 在医学问答基准上远超同尺寸通用模型,在 MedCalc-Bench 上却几乎垫底——领域词表换来的文本流畅没有转化为公式记忆与执行,这与 §5.2 的错误分解互为表里。
引用主表时的三个防坑提示:
- 别横向比不同口径的数字:zero-shot direct 与 one-shot CoT 的差距里有大量"格式校准"成分,用它论证"模型 A 比模型 B 强 N 倍"时要固定策略档位;
- 注意区间值与精确值:论文部分图表给的是区间(本条目表亦如此标注),二次引用若需要精确小数应回论文原表核对,别从综述转引;
- 时点敏感:这些分数对应 2024 年中的模型版本(GPT-4 指当时版本),与 2025-2026 的新版模型不可直接续写比较——新版模型引用本基准时应重跑并声明版本。
§5.2 错误四类型:一半以上的失败是"不会背"
论文对每个失败样例按最早发生的错误归类,用基于规则的分类器(准确率 89%)划分四类型:
| 类型 | 含义 | zero-shot CoT 下的典型占比 |
|---|---|---|
| Type A 知识错误 | 不知道或记错公式/评分规则 | >50%(PMC-LLaMA 0.96,GPT-4 0.35) |
| Type B 抽取错误 | 参数/单位/日期/布尔条件抽错 | 次高(GPT-4 的主要错误源) |
| Type C 计算错误 | 公式对、抽对了,但算错 | 最小类 |
| Type D 其他 | 拒答、格式错误、无法归类 | 长尾 |
这组数字的读法有三层。第一层是对模型的诊断:GPT-4 的知识错误占比(0.35)不到 PMC-LLaMA(0.96)的一半——更大规模的预训练确实补了公式记忆;而 GPT-4 的残余错误更多转向抽取层,即"知道公式、读不懂病历"。第二层是对评测设计的验证:如果三连任务被混在一起只报总分,Type A 与 Type B 的干预方向(继续预训练 vs 微调抽取)将完全不可分——四类型框架是 MedCalc-Bench 超越"又一个 benchmark"的方法学贡献。第三层是对行业的隐喻:“大模型会算错数”(Type C)是个流传甚广的迷思,此数据下它是最小的错误类;真正的瓶颈是知识记忆与信息抽取,这与通用数学评测(模型常败于计算)的结论恰好相反,凸显医学计算的领域特异性。
关于归因边界还有两条使用须知。其一,"按最早发生的错误归类"意味着一题可以同时踩多个类型,但只记最早那个——这不是缺陷而是约定(修复最早的错误后,下一个错误才会浮现),但引用分布数字时应知道它是"第一道墙"的分布,不是"所有墙"的分布。其二,分类器是基于规则的(准确率 89%),对"知识错误但碰巧抽对参数"这类纠缠样例的判定有约一成误差,对错误占比做小数点级的跨论文比较没有意义。
§5.3 微调:补内伤,不补外伤
在 train 集(40 计算器、10,053 例)上做标准微调(2 epochs、batch 32、4 GPU、lr 1e-5、50 warmup steps、cosine decay、flash attention):
| 模型 | 微调前 | 微调后 | 增益 |
|---|---|---|---|
| Mistral-7B | 10.79% | 49.19% | +38.40 |
| Llama-2-7B | 1.53% | 45.75% | +44.22 |
表面看是革命性提升——7B 模型一步逼近 GPT-4 的 50.9%。但拆开 test 中 15 个 train 未覆盖的计算器看,微调模型的 zero-shot 泛化仍然很差:微调学到的主要是"见过的 40 个计算器的公式记忆与答案格式",而不是可迁移的"计算能力"。论文的原话结论是微调效果 “largely attributable to memorization”。这组数字的实用推论:如果应用场景封闭(只用固定的几十个计算器),微调是高性价比方案;如果场景开放(新计算器不断出现),微调会给出虚假安全感——“补内伤不补外伤”。
§5.4 Code-augmented:让模型写代码,算力外包给 Python
附录 D 给出一条增强路径:让模型把计算翻译成 Python 代码,由评测方执行,编译错误允许最多重试 20 次(仅 GPT-3.5/GPT-4 参与了此实验):
- 效果:Type C 计算错误下降,多步算式与单位换算类题目受益最明显;
- 天花板:Type A/B(不知道公式、抽错参数)完全不受影响——代码只接管"算",不接管"背"和"找";
- 含义:这是 §6 审计论文把 MedCalc-Bench 重定位为 tool-use 基准的伏笔——计算环节交给解释器后,剩余失败几乎全是知识/抽取/工具调用问题。
§5.5 分子类观察:rule-based 为什么更难
按子类拆分,rule-based 计算器(评分表类)的错误率系统性高于 equation-based:评分表要求模型逐维度回忆档位(GCS 三组成分各自 4-6 档、SOFA 六器官各自打分),任何一档记错即错;而 equation-based 只要公式与参数对,±5% 容差还能吸收小的舍入误差。Date 子类(预产期、孕周)虽然只有 3 个计算器,却是 equation-based 中错误率偏高的——日历推算要求模型内部维护一套准确的历法,这正是 LLM 薄弱且 code-augmented 收益最大的场景。子类层面的这些差异在自建评测时很有用:想测知识记忆用 rule-based,想测抽取用 Lab note,想测历法/单位换算用 Date/Dosage。
§5.6 agent 时代的读法:计算器调用作为工具选择问题
把 §5.4 的 code-augmented 与 §6.1 的重定位合起来,能看到 MedCalc-Bench 在 agent 架构下的完整面貌。一个现代医学 agent 处理计算任务的合理架构是:检索层(拿回公式/评分表定义)+ 抽取层(从 note 到结构化参数)+ 执行层(解释器算数)+ 校验层(单位与范围合理性检查)。对照四类型:检索层消灭 Type A、抽取层对应 Type B、执行层消灭 Type C——也就是说,基准的错误分类法天然映射到 agent 的分层架构,每个错误类型告诉你该加哪一层。这让 MedCalc-Bench 成为 agent 系统设计的"需求说明书":你的系统在哪个类型上失败,就补哪一层模块。这也是审计论文"重定位"的正面版本——不是基准失效了,而是它的信号在 agent 语境下反而更易解释。
§5.7 提示策略逐档对比:direct → zero-shot CoT → one-shot CoT
三种提示策略的增益结构并不均匀,逐档拆开看:
| 策略档位 | 增益来源 | 谁受益最大 | 典型失败面 |
|---|---|---|---|
| zero-shot direct | 基线:直接出答案 | 无(这是地板) | 格式错乱、跳步、rule-based 漏项 |
| zero-shot CoT | 思维链强制"先回忆公式再逐步代入" | 中小模型(两位数提升) | 知识错误(Type A)原样暴露 |
| one-shot CoT | 示例同时示范格式规范与推理路径 | 开源 7B-13B 模型 | 剩余错误集中于抽取与知识 |
三个值得记住的细节。第一,CoT 的提升本质是"把默算外化":direct 下模型试图一步到位,多步计算与多属性组织的失败被合并隐藏;CoT 强制分步后,失败点变得可归因——这也是错误四类型分析能在 CoT 口径下做干净的技术前提。第二,one-shot 对 GPT-4 的增益小、对开源模型增益大:说明示例的主要价值是校准输出格式而非教授方法——GPT-4 本来就会,小模型需要看一眼"答案长什么样"。第三,direct→CoT 的提升幅度本身是个诊断信号:一个模型若从 direct 到 CoT 几乎不涨,要么它 direct 就很强(罕见),要么它的错误根本不在"过程组织"而在知识/抽取——先跑错误分类再决定是否加提示工程。
§5.8 三个被反复引用的单点结论
论文发表后,被后续工作引用最多的是三个单点数字/结论,本条目在此集中存证:
- “50.9%”:GPT-4 one-shot CoT 的总分,成为"最强模型在医学计算上仍不过半"的通用引语。引用时注意口径:one-shot CoT、MedCalc-Bench v1 论文口径、55 计算器全集。
- “知识错误占一半以上”:zero-shot CoT 下 Type A >50%(GPT-4 0.35 / PMC-LLaMA 0.96)。这句常被转述为"大模型不会算"——恰好引反了,它是"大模型不会背"的证据,计算错误(Type C)是最小类。
- “微调接近 GPT-4”:Mistral-7B 微调后 49.19% 常被单独引用,但省略了"对未见过计算器泛化仍差"的半句——完整结论见 §5.3,单引一半会得出"微调可替代规模"的错误推论。
这三条在二次引用时的共同风险是脱离口径的简化。任何基于 MedCalc-Bench 的对外表述,建议都带回三个限定:哪个策略档位、哪个数据口径、是否含未复核 train。
§5.9 评测数字的可拆解性:一张诊断量表
把本节全部数字整理成一张"看到分数后如何追问"的量表:
| 看到什么 | 追问什么 | 去哪查 |
|---|---|---|
| 总分 X% | 哪个策略档位?哪个数据口径? | §5.1、§7.3 |
| 比 GPT-4 高 | 是同一策略吗?含 code-augmented 吗? | §5.1、§5.4 |
| 微调提升巨大 | 是已见 40 计算器还是未见 15 个? | §5.3 |
| 错误以计算为主 | 是否未按"最早错误"归类? | §5.2 |
| 声称达到专家级 | 专家基线在论文里是多少? | §5.1(专家亦非满分) |
| 73%+ 高分 | 是否针对基准做了 RL/训练? | §6.1 |
这张表的用途是快筛:任何 MedCalc-Bench 相关的分数宣称,走完六问基本能判断其可比性与可信度。
§6 后续审计与基准重定位
§6.1 审计论文:MedCalc-Bench Doesn’t Measure What You Think
2026 年出现的第三方审计(arXiv 2603.02222)对 MedCalc-Bench 提出三组系统性批评:
- 提示泄漏与"背题":问题文本点名计算器,配合公开的 train 集,针对基准的训练可以让模型刷高分数——审计用 RL 训练的 MedCalc-R1/DeepSeek-R1 达到 73.95%,远超原论文所有模型的 50.9%,提示原榜单分数更多反映"对这 55 个计算器的熟悉度"而非通用医学计算能力。
- 容差口径:±5% 容差对精度敏感场景判放过宽,审计倾向更严的匹配口径,并给出重评分数(其口径下有效样本约 9,765/1,048,与官方口径差异见坑 3)。
- train 质量不对称:10,053 例未经人工复核的 train 数据用于微调结论(§5.3 的 +38/+44 分增益)可能部分来自噪声拟合,审计建议以人工复核子集重估。
审计的重定位主张是:MedCalc-Bench 测的与其说是"医学计算能力",不如说是"医学 tool-use 能力"——在计算外包给代码解释器、知识由检索增强提供的现代 agent 架构下,剩余被测能力(识别计算器、抽取参数、组织调用)恰恰是 tool-use 评测的核心维度。这个重定位没有否定基准的价值,而是改变了它的正确打开方式:把它当 agent 评测用,比当"裸计算能力"评测用更符合其信号结构。
§6.2 版本演进与社区修复
| 节点 | 时间 | 内容 |
|---|---|---|
| arXiv v1 | 2024-06-17 | 首发版本 |
| arXiv v4 | 2024-06-30 | 主版本(本条目文本底本) |
| NeurIPS 2024 | 2024-12 | Datasets & Benchmarks 赛道 Oral |
| HF v1.0 数据卡 | 2025-11-18 | ncbi/MedCalc-Bench-v1.0,标 cc-by-4.0 |
| HF v1.2 数据卡 | 2025-12-18 | ncbi/MedCalc-Bench 主 repo,改标 cc-by-sa-4.0;README 规模口径 10,543/1,100 |
| Verified 第三方版 | 2026-09-08 | nsk7153/MedCalc-Bench-Verified(审计重校验),cc-by-sa-4.0 |
v1.0→v1.2 的 license 变更值得单独记忆:note 底层 PMC-Patients 为 CC BY-SA 4.0(SA = 相同方式共享),上游条款传染下游,v1.0 标注的 CC BY 4.0 属于许可标注失误,官方在 v1.2 数据卡回撤改标。库内 open-pmc(rid 45)条目对这条传染链有完整梳理,两者互为印证。使用方应一律采用 CC BY-SA 4.0 口径,衍生数据集也须以同方式共享(坑 2)。
版本选择的实操建议:评测复现用 v1.2 主 repo(现行许可 + 最大规模口径),许可审查时同时引用 v1.0 与 v1.2 数据卡(说明变更史),需要更严质控时叠加 Verified 版做交叉验证。不建议把三个版本的数据混在一个训练集里——同一例在不同版本的属性校验状态可能不同,混用会把质量分层彻底搅乱。
§6.3 生态涟漪
MedCalc-Bench 之后出现的跟进评测可分三支:agent/tool-use 支(把计算器调用当作工具选择的评测场景,MedCalc-R1 是代表);扩展计算器集支(在 55 之外补充专科计算器的工作,多为内部基准未见公开);错误分类法引用支(Type A-D 四类型被多个医学 agent 论文借用为失败分析框架)。它还进入了不少医学院与医院的 LLM 评估清单——当一家机构想验证"这个模型能不能用于临床决策支持"时,MedCalc-Bench 是少数现成的计算维度标尺。库内最近的亲缘是 MultiMedBench(rid 129,谷歌医学多任务基准,含计算类任务),两者在"医学 LLM 需要超越选择题评测"这一点上互为证词。
§6.4 方法学遗产:被复用的四个设计
即使不使用其数据,MedCalc-Bench 有四个设计已被后续评测工作整体复用,值得作为"方法学资产"单独登记:
- "最早错误归类"原则:多步任务失败只记第一道墙,使干预优先级可排序——后被多个 agent 失败分析框架借用。
- train/test 覆盖差分(40 vs 55 计算器):用划分设计把"记忆"与"泛化"解耦,比事后拆分更干净。
- 双轨判分(数值容差 vs 符号精确):按输出类型而非统一阈值定容差,被医学输出评测广泛采纳。
- 质控分层披露(test 全复核 / train 未复核的显式声明):与其假装全量高质量,不如把质量层级写进元数据——这一诚实实践如今在多个医学数据卡中出现。
这四条也解释了为什么 MedCalc-Bench 的引用面大于其使用面:不少工作引用它不是为了跑分,而是为了引用其评测设计。
§6.5 争议的时间线:一个基准如何被社区重新定价
把 2024-2026 的事件按时间排开,可以看到"基准被社区重新定价"的完整过程:
2024-06 arXiv 发表,主张:LLM 医学计算能力远未达标(GPT-4 50.9%)
2024-12 NeurIPS D&B Oral,评测设计(错误四类型)获得方法学认可
2025-11 HF v1.0 数据卡发布(CC BY 4.0)
2025-12 HF v1.2 修正许可为 CC BY-SA 4.0(社区/官方发现传染问题)
2026 审计论文提出三批评(提示泄漏、容差、train 质量),重定位为 tool-use
2026-09 第三方 Verified 版发布(重校验)
这个时间线的启示是:评测基准的价值主张会在发表后继续被修订。发表时的主张(“模型不会算”)在 2026 年并未被推翻,但被"重新框架化"——从"能力缺失的证据"变成"agent 系统需要哪些模块的需求说明书"(§5.6)。使用这类基准时,读发表版本之外再读一轮后续批评,已成为标准动作。
§7 获取、许可与复现
§7.1 获取路径
# 路径一:HuggingFace(推荐,数据本体)
# 主 repo(v1.2,现行有效)
git clone https://huggingface.co/datasets/ncbi/MedCalc-Bench
# 或 Python 直接加载
from datasets import load_dataset
ds = load_dataset("ncbi/MedCalc-Bench")
# 路径二:GitHub(评测器 + 复现指南 + 计算器定义)
git clone https://github.com/ncbi/MedCalc-Bench
# 路径三:第三方审计重校验版(可选,用于交叉验证)
# HuggingFace: nsk7153/MedCalc-Bench-Verified(2026-09-08,cc-by-sa-4.0)
官方 repo 非 gated,无需申请即可下载。注意区分三个 repo:ncbi/MedCalc-Bench-v1.0(旧版数据卡,标 cc-by-4.0)、ncbi/MedCalc-Bench(主 repo/v1.2,标 cc-by-sa-4.0)、nsk7153/MedCalc-Bench-Verified(第三方)。研究期间曾遇到镜像站 302 跳转或第三方 fork 的 gated 报错,均非官方 repo 本身的问题(坑 8)。
下载后的 10 分钟验证清单(防止拿到错版本/错文件才开工):
- 行数对表:train/test 行数与 §7.3 口径表哪一行吻合(吻合哪个就声明哪个口径);
- license 核对:README/数据卡的 license 字段是否为 cc-by-sa-4.0(v1.2 现行);
- 字段抽查:随机抽 3 行人工核对属性抽取与答案的对应关系,确认字段语义理解无误;
- answer_type 分布:确认数值/分级/日期三类都有(date 类无容差,预处理别把它们一起归一化);
- 评分器连通:用官方评分器对 10 个样例跑一遍判分,确认环境依赖(如 Python 版本)就绪;
- zero-shot-only 标记:确认能按计算器字段区分 40 已见 vs 15 未见的计算器集合。
§7.2 许可要点
- 现行口径:CC BY-SA 4.0(v1.2 数据卡)。
- 变更根因:note 底层 PMC-Patients 为 CC BY-SA 4.0,SA(ShareAlike,相同方式共享)条款传染下游——衍生数据集必须以同方式共享。v1.0 数据卡的 CC BY 4.0 标注是许可失误,已被 v1.2 回撤。
- 对使用方的实际约束:可以商用(BY 满足署名),但基于它的衍生数据集/改写版本必须同样以 CC BY-SA 4.0 发布;这与库内 medqa(rid 50)等 CC BY 系条目不同,入库与二次分发时需单独核对(坑 2)。
§7.3 数据字段与规模口径
train.csv/test.csv 每行含:note 文本、问题、计算器名、目标属性表(JSON)、参考答案、答案类型(数值/分级/日期)。规模存在四套口径:
| 来源 | train | test |
|---|---|---|
| 论文(arXiv 2406.12036) | 10,053 | 1,047 |
| GitHub v1.2 README | 10,543 | 1,100 |
| hyper.ai 镜像页 | 10,055 | 1,047 |
| 审计论文(2603.02222) | 9,765 | 1,048 |
差异来源推测:v1.1/v1.2 的增补与去重、审计剔除不可解析例。本条目正文一律以论文口径为主口径,其余口径登记存照(FACTS S-01),引用时注明口径来源即可,不构成数据质量问题。
§7.4 复现评测的最短路径
- 下载 test.csv(1,047 例);
- 对每个模型跑三种提示策略(论文附录给出完整 prompt 模板:zero-shot direct / zero-shot CoT / one-shot CoT);
- 用仓库评分脚本判分:equation 数值 ±5%、rule/date 精确匹配;
- 可选:对失败样例跑错误分类器(仓库提供,准确率 89%)得到 Type A-D 分布;
- 对比基准:GPT-4 one-shot CoT 50.9% 是当前论文口径的天花板参照;若做 tool-use 架构(计算外包解释器),参照 §6.1 审计口径与 73.95% 的 RL 上限。
§7.5 prompt 模板要点(不复制原文,抄结构)
论文附录给出三种策略的 prompt 模板,其结构要点如下(具体措辞请回论文/仓库,此处只记骨架):
- zero-shot direct:系统提示 + note + 问题 + "只输出答案"的格式约束;
- zero-shot CoT:在问题后追加"逐步思考,先写出所用公式/规则,再抽取参数,再计算"的引导;
- one-shot CoT:在 CoT 之前插入一个完整的(note, question, 推理, 答案)示例,示例的选择影响显著。
三个骨架层面的实用提醒:一是答案格式约束要在 prompt 里显式写(分值字符串的确切写法),否则判分阶段会因为表述差异误判;二是 CoT 引导的措辞要避免泄露算式(提示"先写公式"但不提示是哪个公式);三是 one-shot 的示例应与目标计算器同子类,跨子类示例会误导模型;四是如果做 code-augmented,prompt 要显式要求"输出可执行代码块",并约定解释器错误的反馈格式(论文重试上限 20 次)。
§7.6 成本与算力提示
自跑评测的资源量级(用于排期,非精确数字):test 1,047 例 × 3 策略 × 8 模型 ≈ 25,000 次推理;若加错误分类器与 code-augmented(多轮重试),调用量再翻 2-4 倍。本地 7B-13B 模型在单张 80G 卡上可跑但耗时;闭源 API 需注意 25,000 次调用的预算与速率限制。建议做法:先用 100 例子集校准 prompt 与判分口径,再全量跑——直接全量跑易因格式细节返工。
§8 局限性与批评
覆盖面:55 个计算器相对 MDCalc 全站数百个仍是小子集,且以英文、国际通用计算器为主,专科与区域计算器(中文临床常用评分如 CURB-65 变体、儿科专用量表)覆盖薄弱;用 MedCalc-Bench 高分推断"该模型能胜任我院所有计算场景"是过度外推。
note 生态位偏移:主体来自 PMC-Patients 病例报告摘要,其叙事结构(完整、线性、字段清晰)与真实 EHR 的碎片化、缩写密集、时序混乱有系统差异;MedQA 题干更是考试叙事。基准测的是"干净病历上的计算",而非"临床信息系统里的计算"。
质量不对称:train 的 GPT-4 抽取未人工复核(§3.4),微调结论(§5.3)与基于 train 的任何后续训练都继承了这层噪声;test 虽全复核,但 1,047 例的绝对规模对 55 计算器摊薄后子类样本量有限(最小子类 Dosage 仅 40 例)。
容差与匹配刚性并存:±5% 容差对精度敏感场景偏宽(§4.3),而分级字符串精确匹配又对无害的表示差异(大小写、连字符)偏严——两端都需要使用者在自己的协议里显式裁断。
提示泄漏:问题点名计算器(§4.1),使"识别该用什么"这一步失去考察力,也让针对性训练刷分成为可能(§6.1)——这是审计论文的核心批评,也是把它当 tool-use 基准用的理由。
时效性:计算器版本演进(CKD-EPI 2021 换版、SOFA 更新)与模型快速迭代都使榜单时效有限;引用具体分数时应注明评测时点与模型版本。
把六条局限合起来看,可以给出一句话的责任边界:MedCalc-Bench 证明的是"在最干净的临床叙事上,最强模型做不对一半的医学计算";它既不证明"医学计算不可自动化"(失败可归因、可干预),也不证明"高分模型可临床部署"(覆盖面与语域双重限制)。把这两头的外推都挡掉之后,剩下的核心命题——计算是医学 LLM 评测不可缺席的维度——反而更稳固。
§9 库内关系与生态位
| 库内条目 | rid | 关系与区分 |
|---|---|---|
| medqa | 50 | 双重关系:其 USMLE 题干是 MedCalc note 的来源之一(12,893 条进 Open-Patients);任务上 MCQ 问答 vs 计算执行正交 |
| medmcqa | 111 | 同为医学 MCQ 基准,考知识记忆;与 MedCalc 无数据交集,互为"知识 vs 计算"对照 |
| headqa | 120 | 西语医学考试 MCQ;语言域与任务域均不同 |
| cmb-cmexam | 180 | 中文医疗评测双基准;MedCalc 无中文子集,中文临床计算评测仍是空白 |
| pubmedqa | 49 | 文献问答(yes/no/maybe);同为 NLM 系开放评测生态 |
| open-pmc | 45 | PMC-Patients 姊妹资源;license 传染链同因(CC BY-SA 4.0) |
| mimic-iv-clinical-database / mimic-iv-note | 4 / 47 | 真实 EHR 供给侧;MedCalc 因许可原因未用 MIMIC note,两者构成"合成/考试叙事 vs 真实 EHR"的语域对照 |
| ehrshot | 11 | EHR 少样本评估基准;同为"评测基准"类邻居,评测哲学(少样本真实任务 vs 零样本计算器)互补 |
| i2b2-n2c2-nlp | 14 | 临床 NLP 共享任务先例;note 挖掘与标注传统的上游 |
| mtsamples | 350 | 转录文本 note 语料;潜在的真实 note 供给侧 |
| medicationqa | 170 | 消费者药物问答;与 Dosage 子类语义相邻但任务不同 |
| multimedbench | 129 | 谷歌医学多任务基准(含计算类任务);生态后继与对照 |
| cblue / blurb | 190 / 471 | 医疗 NLP 评测基准家族;MedCalc 填补的是"计算"这一任务维 |
生态位一句话:库内医学评测条目覆盖了执照考试(medqa/medmcqa/headqa/cmb-cmexam)、文献问答(pubmedqa)、NLU 任务(cblue/blurb/i2b2)、EHR 预测(ehrshot)与多模态(multimedbench),MedCalc-Bench 独占"计算执行"这一格——检索"医学 LLM 计算/评分表/剂量"相关意图的流量最终都会落到本条目。
§9.1 检索与互链操作建议
从本条目出发的常见检索意图与推荐跳转:
- 搜"医学 LLM 评测"→ 本条目(计算维)+ medqa(rid 50)/medmcqa(rid 111)(知识维)+ pubmedqa(rid 49)(文献维),三路合看才是完整版图;
- 搜"评分表/风险分层"→ 本条目 §3.1、§4.5;需要打分规则原文去 MDCalc;
- 搜"临床笔记数据集"→ 若要真实 EHR 文本,mimic-iv-note(rid 47)/ mtsamples(rid 350);若要病例报告叙事,open-pmc(rid 45);MedCalc-Bench 的 note 是"评测化"的衍生品,不是原始语料;
- 搜"药物剂量"→ medicationqa(rid 170)(消费者问答)与本条目 Dosage 子类(计算执行)语义相邻;
- 搜"CC BY-SA 传染链"→ 本条目坑 2 + open-pmc(rid 45)条目的许可章节,两者互为印证。
反向来看,其他条目指向本条目的推荐锚点:medqa/medmcqa 的"局限与扩展方向"小节(知识评测之外还有计算维度未覆盖)、multimedbench 的任务清单(计算类任务的单列标尺)、ehrshot 的"评测哲学对照"(少样本真实任务 vs 零样本计算器)。
§10 避坑清单:8 个高频坑
坑 1:把 MedCalc-Bench 当成"医学计算器数据库"用。 它是评测基准(note+question+answer 三元组),不是公式查询工具——想查 SOFA 怎么打分请去 MDCalc 或评分表原文;想测模型会不会算才用本基准。检索意图错位会导致数据格式对不上需求。
坑 2:license 按旧卡标注 CC BY 4.0 引用。 v1.0 数据卡曾标 cc-by-4.0,但 v1.2 已改标 cc-by-sa-4.0——根因是 PMC-Patients 的 SA 条款传染。二次分发或入库时若沿用旧标注会造成许可链错误;衍生数据集还必须同方式共享。引用一律写 CC BY-SA 4.0 并注明 v1.2。
坑 3:规模数字四口径混用不注明来源。 论文 10,053/1,047、GitHub v1.2 README 10,543/1,100、hyper.ai 10,055/1,047、审计论文 9,765/1,048——四个数字都是"真的",对应不同版本与口径。正文引用请锁定一个口径(本条目锁定论文口径)并注明出处,别在表 A 用论文口径、表 B 用 README 口径。
坑 4:note 合成来源计数被主文/附录矛盾绊倒。 主文说 10 个 equation 模板合成 + 11 个 rule clinician 手写,附录 A.2/A.3 说 11 模板 + 10 手写——两处数字互换。写综述/卡片时用"约 10-11 个"模糊化,别精确抄其中一侧当真理;三个来源合计 34+11+10=55 的总账是自洽的。
坑 5:拿 train 集当黄金数据训练或评测。 train 10,053 例的属性抽取由 GPT-4 完成未经人工校验(论文明说),test 1,047 例才全部人工复核。用 train 调参可以,用 train 报告准确率或当标注资源用会引入系统性噪声;严谨场景用第三方 Verified 版交叉验证。
坑 6:忽视 ±5% 容差与精确匹配的双口径。 equation 数值 ±5%、rule/date 精确匹配——自己复现评测时若口径与官方不一致(比如对 date 也放容差、对分级字符串做模糊匹配),结果与论文不可比;对精度敏感应用(儿科剂量)还应意识到 ±5% 本身可能偏宽。
坑 7:把 “Open-Patients 真实 note” 理解为"全部来自真实 EHR"。 Open-Patients 主体 PMC-Patients 是病例报告摘要(真实病历叙事的发表版),但还含 12,893 条 MedQA-USMLE 考试题干与部分合成的 TREC 条目——"真实"是相对模板/手写合成而言的谱系,不是全量真实 EHR。做临床落地论证时需声明这一语域差异。
坑 8:在镜像站/第三方 fork 上被 gated 报错误导。 官方 ncbi/MedCalc-Bench 非 gated;某些镜像(如 hf-mirror.com)会 302 跳回原站,某些第三方 fork 才需要申请。获取失败先核对 URL 是否官方 repo,再确认网络与 token 环境,别把镜像问题当成数据集 gated。
坑点交叉索引(哪个坑该去哪个小节看细节):
| 坑 | 一句话 | 深入小节 |
|---|---|---|
| 坑 1 | 别当计算器数据库用 | §1 Q1、§9.1 |
| 坑 2 | license 用 CC BY-SA 4.0 | §6.2、§7.2 |
| 坑 3 | 规模四口径要注明 | §7.3、附录 A |
| 坑 4 | 主文/附录 10-11 矛盾 | §3.3、FACTS S-03 |
| 坑 5 | train 未人工复核 | §3.4、§5.3、§8 |
| 坑 6 | ±5% 与精确匹配双轨 | §4.3、§6.1 |
| 坑 7 | "真实 note"是谱系 | §3.2、§8 |
| 坑 8 | 镜像 gated 误报 | §7.1 |
八坑的根因归类。八个坑并非杂乱罗列,它们分属三类根因,识别根因有助于记忆与推广:
- 身份错位类(坑 1、坑 7):把评测基准误当资源库(公式库/语料库)——根因是"基准"与"语料"两种数据产品的形态差异未被检索者识别。通用修复动作:用之前先问"我需要的是可查询资源,还是带答案的考题?"
- 元数据口径类(坑 2、坑 3、坑 4):数据卡/README/论文/附录之间的字段与数字不一致——根因是多源发布下缺少单一权威口径。通用修复动作:锁定一个版本一个口径,其余进存照表,绝不在同一文档内混用。
- 质量与获取类(坑 5、坑 6、坑 8):质控分层、判分口径、镜像误导——根因是使用前未读元数据与协议细节。通用修复动作:下载后先跑附录 L 的验证清单,再开工。
八坑的成本估计。按"踩坑后返工代价"排序:坑 5(用未复核 train 训练再评测)与坑 3(口径混用导致数字对不上)返工代价最高,因为可能污染已完成的实验;坑 2(license 写错)次之,影响分发合规;坑 1/7/8 属可快速纠正的认知类;坑 4/6 属需注意但代价可控的引用类。建议的预防顺序是 5→3→2→6→4→7→1→8,即先建立质控与口径意识,再处理许可与判分,最后是认知与获取细节。
坑点自检口诀(贴在工作流里):下数据前查版本与许可(坑 2/3),开训练前查质控分层(坑 5),跑评测前定判分口径(坑 6),写报告前核规模来源(坑 3),引用前想清"是资源还是考题"(坑 1/7)。五步走完,八坑基本可避。
§11 总结:三句话、适合谁、30 秒决策卡
三句话:
- MedCalc-Bench 是首个系统评测 LLM 医学计算能力的公开基准:55 个真实临床计算器、1,047 道人工复核测试题,把"找公式、抽参数、算结果"三连拆开考。
- 它的旗舰发现是冷静的——GPT-4 one-shot CoT 仅 50.9%,zero-shot CoT 下一半以上错误是"不会背公式",而"算错数"反而是最小类;微调能补"见过的",补不了"没见过的"。
- 2026 年审计把它重定位为 tool-use 基准:在计算外包给解释器、知识交给检索的 agent 架构下,它测的正是现代医学 agent 的核心剩余能力。
适合谁:
- 医学 LLM/agent 团队:需要计算维度标尺与错误诊断框架(Type A-D 直接可用);
- 医学信息学教学:讲解"评测设计如何诊断模型失败"的完整案例;
- 临床 AI 采购评估:验证模型计算能力的现成考卷(配合 §8 的局限声明);
- 数据工程研究者:三层流水线(筛→抽→校)与 train/test 质量取舍的真实范本。
不适合谁:
- 想查公式/评分标准的人(坑 1——请用 MDCalc/UptoDate);
- 需要真实 EHR 语料的训练方(坑 7——note 主体是病例报告摘要与考试叙事,请看 mimic-iv-note rid 47);
- 需要中文临床计算评测的团队(基准全英文,中文场景请看 cmb-cmexam rid 180 的定位后自行扩展);
- 期望"刷过榜单=临床可用"的决策者(§6.1 背题风险 + §8 覆盖面限制)。
30 秒决策卡:
| 你的需求 | 建议 |
|---|---|
| 测模型的医学计算/评分表能力 | 用 test 1,047 例 + 官方评分器,口径锁 §4.3 |
| 训练/微调计算能力 | 可用 train,但知悉未人工复核(坑 5);场景封闭才划算(§5.3) |
| 评测 agent 的工具调用 | 按 §6.1 重定位读法,code-augmented 协议(§5.4) |
| 做许可合规/入库 | CC BY-SA 4.0,注明 v1.2,衍生数据同方式共享(坑 2) |
| 引用规模数字 | 论文口径 10,053/1,047,注明出处(坑 3) |
| 找真实 EHR note | 不是它——去 mimic-iv-note(rid 47)/ mtsamples(rid 350) |
| 中文医学计算评测 | 无现成条目,本基准不可直接替代 |
FAQ:40 问
A 组:身份与定位
Q1:MedCalc-Bench 是数据集还是评测基准?
两者都是,但主打评测基准:本体是带参考答案的测试集(train 10,053 / test 1,047,论文口径),配套官方评分脚本与错误分类器,发布形态是"数据 + 评分器 + 复现指南"三件套。
Q2:它评的是哪一步能力?
三连:识别该用哪个计算器/公式 → 从临床 note 抽取目标属性 → 执行计算输出答案。任一环失败即整题失败,按最早错误归类诊断。
Q3:"首个"的头衔成立吗?
在其自我声明的时间点(2024 年中)与"大规模 + 公开 + 自动评分 + 医学计算全覆盖"的限定下成立;此后出现同类工作多引用它为前置。严谨表述是"首个大规模医学计算评测基准"。
Q4:谁是主导机构?
美国国立卫生研究院下属国立医学图书馆(NLM/NIH),主导者 Qiao Jin,资深作者 Zhiyong Lu、Qingyu Chen;17 位作者横跨 9 家机构。
Q5:发表在哪?影响力如何佐证?
NeurIPS 2024 Datasets & Benchmarks 赛道 Oral(该赛道最高展示档位之一);arXiv 2406.12036;PMID 41031072。
B 组:数据构成
Q6:55 个计算器怎么分的类?
两大类七子类:equation-based 36(Lab 19 / Physical 12 / Date 3 / Dosage 2)+ rule-based 19(Risk 12 / Severity 4 / Diagnosis 3)。
Q7:举几个代表性计算器?
equation 侧:MELD、CKD-EPI、Cockcroft-Gault 肌酐清除率、BSA、Free Water Deficit、预产期 EDD;rule 侧:SOFA、GCS、NIHSS、CHA2DS2-VASc、Wells、HEART。
Q8:test 的 1,047 例怎么分布?
Lab 327 / Physical 240 / Date 60 / Dosage 40 / Risk 240 / Severity 80 / Diagnosis 60,校验和 1,047。
Q9:note 从哪来?都是真实病历吗?
三来源:Open-Patients(覆盖 34 个计算器,主体 PMC-Patients 病例报告摘要,另含 MedQA-USMLE 题干 12,893 条与部分合成 TREC 条目)、Python 模板合成(11 个)、clinician 手写合成(10 个,各 20 例)。"真实"是相对合成而言的谱系,非全量真实 EHR。
Q10:Open-Patients 的 180,142 条怎么构成?
PMC-Patients 167,034(484 avg tokens)+ MedQA-USMLE 12,893(135.8)+ TREC Clinical Trials 125(137.7)+ TREC CDS 90(105.1)。
Q11:一例数据长什么样?
四元组(note、question、calculator、answer):note 平均 529.7 字符,问题平均 21.9 字符,目标属性 1-31 个(均值 5.4),答案为带单位数值/分级字符串/日期三选一。
Q12:为什么有的计算器用合成 note?
真实病历中某些场景极稀缺(如特定化疗剂量记录),Open-Patients 覆盖不到(55 中只有 34 个有合格真实 note),只能合成补齐——这是覆盖面与语域真实性之间的工程妥协。
C 组:评测与结果
Q13:考了哪些模型?
GPT-4、GPT-3.5-Turbo、Llama 3 8B/70B、Mistral-7B、Mixtral-8x7B、PMC-LLaMA-13B、MediTron-70B 共 8 个,× 3 种提示策略(zero-shot direct / zero-shot CoT / one-shot CoT)。
Q14:最好的成绩是多少?
GPT-4 one-shot CoT 50.9%(zero-shot CoT 48.4%);开源最佳 Llama 3 70B 约 47.8%;无一模型过半。
Q15:错误四类型是什么?
Type A 知识错误(公式/规则回忆失败)、Type B 属性抽取错误、Type C 计算错误、Type D 其他(拒答/格式);按最早发生的错误归类,分类器准确率 89%。
Q16:最大错误源是计算吗?
不是——zero-shot CoT 下知识错误(Type A)占比超过一半(PMC-LLaMA 0.96、GPT-4 0.35),计算错误(Type C)反而是最小类。“大模型算错数"在此数据下是迷思,真正瓶颈是"不会背"和"抽不对”。
Q17:微调能提升多少?
Mistral-7B 10.79%→49.19%,Llama-2-7B 1.53%→45.75%(train 集 2 epochs、lr 1e-5 等超参见 §5.3);但对 train 未覆盖的 15 个计算器泛化仍差——补内伤不补外伤。
Q18:code-augmented 是什么?
附录 D 的增强协议:模型把计算写成 Python 代码、评测方执行、编译错误最多重试 20 次(仅 GPT-3.5/4 参与)。计算错误下降,知识/抽取错误不变——"算"可以外包,"背"和"找"不能。
Q19:±5% 容差是怎么回事?
equation 数值类(lab/physical/dosage)允许 ±5% 相对误差以吸收舍入与单位换算差异;date 与 rule-based 精确匹配。这是基准争议最大的单一设计(§4.3、§6.1)。
D 组:获取与许可
Q20:去哪下?要申请吗?
HuggingFace ncbi/MedCalc-Bench(主 repo/v1.2)公开非 gated,CSV 直下;GitHub ncbi/MedCalc-Bench 有评分器与复现指南。
Q21:v1.0 和 v1.2 有什么区别?
v1.0(ncbi/MedCalc-Bench-v1.0,2025-11-18 数据卡)标 cc-by-4.0;v1.2(主 repo,2025-12-18)改标 cc-by-sa-4.0 且规模口径略增(10,543/1,100)。引用现行许可请用 v1.2。
Q22:为什么 license 从 CC BY 4.0 改成 CC BY-SA 4.0?
note 底层 PMC-Patients 是 CC BY-SA 4.0,SA 条款传染下游,v1.0 的 CC BY 4.0 是许可标注失误,v1.2 回撤改标。衍生数据集因此也必须同方式共享。
Q23:可以商用吗?
CC BY-SA 4.0 允许商用(满足署名),但衍生数据/改写版须以同许可共享;模型侧使用无额外限制,注意独立核对上游计算器定义(MDCalc 网站内容本身另有站点条款)。
Q24:第三方 Verified 版是什么?
nsk7153/MedCalc-Bench-Verified(2026-09-08,cc-by-sa-4.0):审计团队对官方数据重校验后的版本,可用于交叉验证;其规模口径 9,765/1,048 与官方不同(坑 3)。
E 组:比较与生态
Q25:和 MedQA/MedMCQA 什么关系?
任务正交:它们是选择题问答(考知识记忆与推理),MedCalc-Bench 是计算执行(考公式记忆+参数抽取+算术)。且 MedQA-USMLE 题干还是 MedCalc note 的来源之一——上下游兼对手。
Q26:和 MIMIC-IV-Note 什么关系?
语域对照而非上下游:MedCalc 因许可原因未用 MIMIC note,其 note 主体是病例报告摘要与考试叙事;需要真实 EHR 文本的场景应看 MIMIC-IV-Note(rid 47)。
Q27:审计论文说了什么?
arXiv 2603.02222《MedCalc-Bench Doesn’t Measure What You Think》:提示泄漏使基准可被"背题"(RL 后 MedCalc-R1 达 73.95%)、±5% 容差偏宽、train 未人工复核;主张把它重定位为 tool-use 基准。
Q28:73.95% 意味着原论文 50.9% 错了吗?
不构成矛盾:73.95% 是针对基准做了 RL 优化(含针对这 55 个计算器)后的分数,恰证明分数可刷、反映"对这组计算器的熟悉度";这正是审计"重定位为 tool-use"论点的证据。
Q29:中文医学计算有对应基准吗?
没有直接对应——MedCalc 全英文,库内 cmb-cmexam(rid 180)是中文 MCQ 双基准也不覆盖计算;中文临床计算评测目前是空白区,扩展时可直接复用其评分规则与属性体系。
F 组:进阶方法学
Q30:属性有哪几类?抽取难点在哪?
9 类:lab value、physical value、age、date、boolean、choice、string、dosage、percentage;难点在单位制切换、相对日期、否定句中的布尔条件与频次缩写。
Q31:为什么 test 刻意留 15 个 train 没见过的计算器?
把"微调学会的"(记忆)与"模型本会的"(泛化)分开测量——这使 §5.3 的"补内伤不补外伤"结论成为可能,也提醒使用者微调分数要分区报告。
Q32:想自建医学计算评测,能复用什么?
七子类分类法、9 类属性体系、±5%/精确匹配的双轨评分规则、错误四类型分类器与"最早错误归类"原则都可整体复用;建议先读官方评分器源码再定自己的容差口径。
Q33:MedCalc-Bench 的 note 可以拿去训练通用医学模型吗?
许可上可以(CC BY-SA 4.0 允许,衍生需同方式共享),但方法上不划算:note 是为计算评测筛选/合成的,分布窄、数值密集,远不如 PMC-Patients 全量或 MIMIC-IV-Note(rid 47)适合预训练。
Q34:test 里有没有"陷阱题"(note 故意含干扰信息)?
论文未设计专门陷阱题,但真实 note 天然含大量无关数值与化验——这正是 ±5% 容差之外真正考验抽取的地方。合成 note 的干扰度低于真实 note(§3.3),这是语域差异的又一体现。
Q35:错误分类器能直接拿来分类我自己模型的新错误吗?
官方分类器是针对四类型设计的规则系统(准确率 89%),复用前需检查你的任务输出格式是否与原口径一致;若新增错误形态(如 tool-call 格式错),需扩展 Type D 或增加类型。
Q36:为什么 date 无容差而数值有 ±5%?
日期的"对"没有模糊地带(预产期差一天在临床上就是不同建议),而数值计算存在舍入与单位换算的合理差异。两轨判分是按临床语义定严宽,不是随意的口径不一致。
Q37:审计论文的 Verified 数据集和官方的关系?
Verified(nsk7153/MedCalc-Bench-Verified)是第三方对官方数据的重校验版,不是官方分支;用它做主评测需在论文中声明来源与口径(9,765/1,048),且与官方口径结果不可直接混排。
Q38:可以只跑 test 的一个子类(比如只测 Severity)吗?
技术上可以(CSV 按计算器字段可筛),但要意识到子类样本量(Severity 80 例)远小于全集,分数波动大;跨模型比较时建议同时报全集与子类两个口径。
Q39:50.9% 的分母是什么?
test 1,047 例全体的题均正确率(论文口径)。它不是"55 个计算器中会几个"的计算器级正确率,也不是子类分数的简单平均——三种分母口径下的数字不同,引用时别混。
Q40:如果我的模型在 MedCalc-Bench 高分但院内试点失败,矛盾吗?
不必然矛盾:基准覆盖 55 个通用计算器、叙事干净、英文;院内失败可能来自覆盖面外计算器、EHR 语域差异(§8)、或集成问题。基准高分是"能力必要条件"而非"部署充分条件"。
事实清单:42 条硬事实
- MedCalc-Bench 是首个评估 LLM 医学计算能力的大规模公开评测基准。
- 论文:arXiv 2406.12036,v1 2024-06-17、v4 2024-06-30。
- 正式发表于 NeurIPS 2024 Datasets & Benchmarks 赛道,Oral 档位。
- PubMed 检索号 PMID 41031072。
- 主导机构:美国国立医学图书馆(NLM/NIH)。
- 17 位作者,横跨 9 家机构(NLM、Wisconsin–Madison、Oregon、Yale、Rice、UTHealth Houston、Melbourne、Macquarie、VA Salt Lake City)。
- 主导者 Qiao Jin;资深作者 Zhiyong Lu、Qingyu Chen。
- 覆盖 55 个临床计算器,选自 MDCalc popular 清单。
- 七子类:Lab 19、Physical 12、Date 3、Dosage 2、Risk 12、Severity 4、Diagnosis 3。
- equation-based 36 个;rule-based 19 个。
- test 1,047 例(论文口径),子类分布 327/240/60/40/240/80/60,校验和闭合。
- train 10,053 例(论文口径),覆盖 40 个计算器。
- train 入选标准:>20 条真实 note 或合成补足 20 例。
- test 覆盖全部 55 计算器,其中 15 个为 train 未覆盖(zero-shot-only)。
- test 全部人工复核;train 的 GPT-4 属性抽取未经人工校验。
- note 平均长 529.7 字符;问题平均 21.9 字符;属性 1-31 个、均值 5.4。
- 属性 9 类型:lab value、physical value、age、date、boolean、choice、string、dosage、percentage。
- 流水线三步:GPT-3.5-Turbo 筛合格 note → GPT-4 抽属性 → 医学专业人员校验。
- 合格 note 的关键判据之一:数值须为原始测量而非派生结果。
- note 三来源:Open-Patients 34 个计算器、Python 模板合成、clinician 手写合成。
- Open-Patients 共 180,142 条:PMC-Patients 167,034(484 avg tokens)+ MedQA-USMLE 12,893(135.8)+ TREC CT 125(137.7)+ TREC CDS 90(105.1)。
- PMC-Patients 许可为 CC BY-SA 4.0,是 MedCalc-Bench license 的决定因素。
- 主文与附录对合成来源计数存在 10/11 互换矛盾(主文:10 模板+11 手写;附录:11 模板+10 手写)。
- 评分规则:equation 数值类 ±5% 相对容差;date 与 rule-based 精确匹配。
- 评测矩阵:8 LLM × 3 提示策略。
- 8 模型:GPT-4、GPT-3.5-Turbo、Llama 3 8B、Llama 3 70B、Mistral-7B、Mixtral-8x7B、PMC-LLaMA-13B、MediTron-70B。
- 最佳成绩:GPT-4 one-shot CoT 50.9%(zero-shot CoT 48.4%)。
- 开源最佳:Llama 3 70B 约 47.8%(one-shot CoT)。
- PMC-LLaMA-13B 约 5-10%,医学领域预训练未转化为计算能力。
- 错误四类型:A 知识、B 抽取、C 计算、D 其他;按最早错误归类;分类器准确率 89%。
- zero-shot CoT 下知识错误占比 >50%(PMC-LLaMA 0.96 vs GPT-4 0.35);计算错误为最小类。
- 微调超参:2 epochs、batch 32、4 GPU、lr 1e-5、50 warmup、cosine decay、flash attention。
- 微调结果:Mistral-7B 10.79%→49.19%;Llama-2-7B 1.53%→45.75%。
- 论文自评:微调增益主要来自对训练计算器的记忆。
- code-augmented(附录 D):生成 Python 代码 + 用户执行 + 编译错误最多重试 20 次;仅 GPT-3.5/GPT-4。
- 审计论文:arXiv 2603.02222《MedCalc-Bench Doesn’t Measure What You Think》。
- 审计口径规模:9,765/1,048;RL 后 MedCalc-R1/DeepSeek-R1 最高 73.95%。
- 官方 HF repo:
ncbi/MedCalc-Bench-v1.0(cc-by-4.0,2025-11-18)与ncbi/MedCalc-Bench(v1.2,cc-by-sa-4.0,2025-12-18)。 - GitHub v1.2 README 规模口径:10,543/1,100;hyper.ai 镜像口径:10,055/1,047。
- 现行许可:CC BY-SA 4.0;衍生数据集须同方式共享。
- 官方 repo 非 gated;镜像站 302 跳转与第三方 fork 的 gated 报错与官方无关。
- 库内互链:medqa(rid 50)、medmcqa(rid 111)、pubmedqa(rid 49)、open-pmc(rid 45)、mimic-iv-note(rid 47)、cmb-cmexam(rid 180)等(§9 全表)。
事实清单使用说明:以上 42 条均可回溯到 FACTS.md 对应节或论文原文;编号仅为本条目内部引用方便。二次引用时不必带编号,但建议至少带"论文口径"或"版本"限定(见坑 3)。若需机器可读版本,可参照附录 K 的字段字典与附录 P 的速查组重建 JSON/CSV。
术语表:45 条
- MedCalc-Bench:本条目基准名,评估 LLM 医学计算的公开基准(NLM/NIH,2024)。
- equation-based:以公式/换算规则为知识载体的计算器大类(36 个)。
- rule-based:以逐项打分表为知识载体的计算器大类(19 个)。
- note(clinical note):临床笔记,基准的文本输入,含叙事化的患者信息。
- Open-Patients:18 万条候选 note 聚合语料库,四源构成(PMC-Patients/MedQA-USMLE/TREC CT/TREC CDS)。
- PMC-Patients:病例报告患者摘要语料(167,034 条),CC BY-SA 4.0,license 传染源。
- MDCalc:最大临床计算器聚合网站,55 计算器的选源清单。
- 属性抽取(attribute extraction):从 note 中定位目标参数(数值/日期/布尔)的中间任务。
- 派生值(derived value):笔记中已给出的计算结果;含派生值的笔记不合格,防止"抄答案"。
- ±5% 容差:equation 数值类判分允许的相对误差带宽。
- 精确匹配:rule-based 与 date 类判分要求输出与参考答案完全一致。
- CoT(chain-of-thought):思维链提示策略,本基准中 zero-shot CoT 与 one-shot CoT 两档。
- zero-shot-only 计算器:test 中 15 个 train 未覆盖的计算器,用于测泛化。
- Type A-D 错误:知识/抽取/计算/其他四类型失败分类,按最早错误归类。
- 知识错误(Type A):不知道或记错公式/评分规则,占比最高的错误类。
- 抽取错误(Type B):参数/单位/日期/布尔条件抽取失败。
- 计算错误(Type C):公式与参数对但算错,最小错误类。
- code-augmented:让模型生成代码交解释器执行的评测协议(附录 D)。
- MELD:终末期肝病评分,Lab 类代表计算器。
- Cockcroft-Gault:肌酐清除率公式,Physical 类代表,需年龄/体重/血肌酐/性别四参数。
- SOFA:序贯器官衰竭评估评分,Severity 类代表,六器官逐项打分。
- GCS:格拉斯哥昏迷评分,三组成分各自分档的 rule-based 代表。
- CHA2DS2-VASc:房颤卒中风险评分,Risk 类代表,字母对应风险项。
- EDD:预产期(estimated date of delivery),Date 类代表,历法推算。
- NIH:美国国立卫生研究院,NLM 的上级机构。
- NLM:美国国立医学图书馆,主导机构,PubMed/MEDLINE/UMLS 维护方。
- CC BY-SA 4.0:现行许可;SA(相同方式共享)要求衍生数据同许可发布。
- license 传染:上游 SA 条款约束下游衍生品的许可机制,经 PMC-Patients → MedCalc-Bench 链条发生。
- 提示泄漏(prompt leakage):问题文本点名计算器导致"识别"步骤失去考察力的设计缺陷(审计批评核心)。
- tool-use benchmark:审计论文的重定位——把 MedCalc-Bench 视为测"识别计算器+抽参数+组织调用"的 agent 评测。
- 最早错误归类:多步任务失败只记第一个发生错误的归因约定,使"第一道墙"可排序。
- zero-shot-only:test 中 15 个 train 未覆盖计算器的评测属性,专测泛化。
- 模板合成:按属性需求用 Python 生成结构化 note 的数据扩充方式(equation 类为主)。
- 手写合成:clinician 按真实工作流口吻撰写 note 的扩充方式(rule-based 类为主,各 20 例)。
- 合格性筛选:GPT-3.5 对候选 note 的前置判断(含可计算实体 + 数值非派生)。
- answer type:参考答案的三种形态——带单位数值、分级字符串、日期。
- 能力三连:识别计算器 → 抽取属性 → 执行计算的任务分解框架。
- 题均正确率:MedCalc-Bench 主分数口径(正确题数 / 总题数),区别于计算器级或子类级口径。
- 版本链:v1.0(cc-by-4.0)→ v1.2(cc-by-sa-4.0)→ Verified(第三方重校验)的演进序列。
- 口径登记:多来源数字冲突时锁定主口径并显式存照其余口径的写作纪律(本条目实践见坑 3)。
- 双轨判分:数值容差与符号精确并行的评分设计(§4.3)。
- 覆盖差分:40(train)vs 55(test)计算器覆盖差带来的记忆/泛化解耦设计。
- 语域差异:病例报告摘要/考试题干与真实 EHR 文本之间的分布距离。
- 质量分层:test 全人工复核 vs train 未复核的显式质控披露。
- fact sheet 纪律:硬数字必须能给出来源与口径的写作规范(本条目 FACTS.md 九节)。
附录 A:信息速查卡
| 项 | 值 |
|---|---|
| slug | medcalc-bench |
| 正式名 | MedCalc-Bench |
| 一句话 | 首个大规模 LLM 医学计算评测基准 |
| 论文 | arXiv 2406.12036(v4 主版本)|NeurIPS 2024 D&B Oral|PMID 41031072 |
| 主导 | NLM/NIH(Qiao Jin;Zhiyong Lu、Qingyu Chen) |
| 规模(论文口径) | train 10,053 / test 1,047 |
| 计算器 | 55 个(equation 36 + rule 19,七子类) |
| 许可 | CC BY-SA 4.0(v1.2 现行) |
| 获取 | HF ncbi/MedCalc-Bench(非 gated)+ GitHub 评测器 |
| 主结果 | GPT-4 one-shot CoT 50.9%;错误以知识类为主 |
| 最佳用途 | 医学计算/tool-use 评测、错误诊断框架、评测方法学教学 |
| 最差用途 | 公式查询、真实 EHR 语料源、中文计算评测 |
附录 B:DAIMS 数据集审计与完整性矩阵
| 维度 | 评级 | 依据 |
|---|---|---|
| D 可发现性 | A | arXiv/HF/GitHub/PubMed 四路齐备;官方 repo 名称唯一;库内 slug 无冲突 |
| A 可获取性 | A- | HF 公开非 gated,CSV 直下;扣分项:v1.0/v1.2 双 repo 易混淆、镜像站跳转误导 |
| I 互操作性 | B+ | CSV + JSON 属性表 + 官方评分器;扣分项:分级字符串精确匹配对表示差异敏感 |
| M 元数据充分性 | B | 论文附录给出 prompt 模板与计算器定义;扣分项:规模四口径、主文-附录计数矛盾 |
| S 可持续性 | B+ | NIH 主导、社区 Verified 版出现;扣分项:license 变更史需引用者自行核对版本 |
| 综合评级 | B+(评测基础设施级) | 三件套齐全、错误诊断框架可复用;质量不对称与口径分歧是主要扣分点 |
附录 C:证据链(结论 → 来源)
| 结论 | 来源 |
|---|---|
| 55 计算器七子类分布、1,047 test | arXiv 2406.12036 v4 正文表格 |
| train 10,053 / 40 计算器 / 未人工复核 | 同上正文 §train 说明 |
| Open-Patients 180,142 四源构成 | 同上正文数据来源节 |
| note 三来源 34/11/10 | 同上正文与附录 A.2/A.3(含矛盾存照) |
| 8 模型 × 3 策略、50.9%、错误四类型 | 同上评测节与错误分析节 |
| 微调数字与超参 | 同上微调实验节 |
| code-augmented 协议 | 同上附录 D |
| license v1.0→v1.2 变迁 | HF 数据卡两个版本对照 |
| 审计批评与 73.95% | arXiv 2603.02222 |
| NeurIPS Oral | 项目主页与 HF 卡片表述(FACTS S-07) |
| 库内查重 0 rows | qf_psql.sh 全表查询(2026-09-28) |
附录 D:选用决策树
你的需求是什么?
├─ 测模型的医学计算能力
│ ├─ 只要排名/对比 → test 1,047 + 官方评分器(§7.4 五步)
│ └─ 要错误诊断 → 官方分类器拿 Type A-D 分布(§5.2)
├─ 训练/微调
│ ├─ 场景封闭(固定几十个计算器)→ train 可用,知悉坑 5
│ └─ 场景开放 → 微调会虚假安全,先读 §5.3 再定
├─ 评测 agent/工具调用 → §6.1 重定位读法 + code-augmented 协议
├─ 需要真实 EHR note → 转库内 mimic-iv-note(rid 47)/ mtsamples(rid 350)
├─ 需要中文计算评测 → 无现成条目;复用属性体系与评分规则自建
└─ 只想查公式/评分标准 → 不要用它(坑 1),去 MDCalc/临床指南
附录 E:BibTeX
@inproceedings{jin2024medcalcbench,
title = {MedCalc-Bench: Evaluating Large Language Models for Medical Calculations},
author = {Jin, Qiao and others},
booktitle = {Advances in Neural Information Processing Systems (NeurIPS),
Datasets and Benchmarks Track},
year = {2024},
note = {Oral. arXiv:2406.12036. Data: huggingface.co/datasets/ncbi/MedCalc-Bench},
url = {https://arxiv.org/abs/2406.12036}
}
@misc{medcalcbench2026audit,
title = {MedCalc-Bench Doesn't Measure What You Think},
author = {{Audit authors}},
year = {2026},
note = {arXiv:2603.02222}
}
(作者名单以论文 PDF 为准;引用前请补全 17 位作者。)
附录 F:生产档案
| 项 | 值 |
|---|---|
| 条目 slug | medcalc-bench |
| 写手代理 | agent-c-medcalcben |
| 写作日 | 2026-09-28 |
| 任务书 | rsi_dispatch/task_medcalc-bench.md |
| 研究底本 | arXiv 2406.12036 HTML v4(/tmp/medcalc_paper.txt,125,110 字符纯文本) |
| FACTS | writing/medcalc-bench/FACTS.md(九节) |
| 锁文件 | writing/medcalc-bench/.lock(2026-09-28T13:54 建) |
| 查重 | url_name/title 双 ILIKE → 0 rows(2026-09-28) |
| 自检 | check_md.py + preflight_check.py(见条目尾注执行记录) |
附录 G:FAIR 检查单
| 维度 | 状态 |
|---|---|
| F1 元数据唯一标识 | arXiv 2406.12036 / HF dataset id / PMID 41031072 |
| F2 数据唯一标识 | HF ncbi/MedCalc-Bench(v1.2 主 repo) |
| A1 元数据可检索 | 论文公开 + HF 卡片 + GitHub README |
| A2 数据可访问 | 非 gated,CSV 公开直链 |
| I1 标准格式 | CSV/JSON + Python 评分器 |
| I2 词汇表 | 9 类属性体系、七子类分类法(论文定义) |
| R1 来源说明 | note 三来源 + Open-Patients 四源构成(论文披露) |
| R2 许可 | CC BY-SA 4.0(v1.2 现行,变更史存照) |
附录 H:缩写表
| 缩写 | 全称 | 释义 |
|---|---|---|
| NLM | National Library of Medicine | 美国国立医学图书馆(主导机构) |
| NIH | National Institutes of Health | 美国国立卫生研究院(NLM 上级) |
| EHR | Electronic Health Record | 电子健康记录 |
| MCQ | Multiple Choice Question | 选择题(对照任务形态) |
| CoT | Chain-of-Thought | 思维链提示 |
| EDD | Estimated Date of Delivery | 预产期 |
| LMP | Last Menstrual Period | 末次月经(EDD 计算输入) |
| MELD | Model for End-stage Liver Disease | 终末期肝病模型评分 |
| SOFA | Sequential Organ Failure Assessment | 序贯器官衰竭评估 |
| GCS | Glasgow Coma Scale | 格拉斯哥昏迷评分 |
| NIHSS | NIH Stroke Scale | NIH 卒中量表 |
| BSA | Body Surface Area | 体表面积 |
| RL | Reinforcement Learning | 强化学习(审计论文的刷分手段) |
| SA | ShareAlike | 相同方式共享(CC BY-SA 的 SA) |
| HF | HuggingFace | 数据托管平台 |
| D&B | Datasets and Benchmarks | NeurIPS 赛道名 |
附录 I:维护触发点
| 触发条件 | 动作 |
|---|---|
| HF 官方 repo 发布 v1.3+ | 核对规模口径与 license,更新 §7.3 口径表与坑 3 |
| 审计论文正式发表(期刊版) | 更新 BibTeX 附录 E 与 §6.1 引用格式 |
| 新模型刷榜超 50.9%/73.95% | 更新 §5.1/§6.1 主结果段与 INFOBOX |
| PMC-Patients 许可再变更 | 立即核查传染链(坑 2),必要时改写 §6.2/§7.2 |
| 中文临床计算基准出现 | 更新 §9 生态位与 Q29 |
| NeurIPS 官方接收列表可查 | 核实 S-07(Oral 表述)并移除存照标记 |
附录 J:研究检查清单
- 任务书三查完成(锁文件、临时文件唯一化、ps 留痕)。
- 存在性核验:库内 url_name/title 双查重 0 rows;外部 arXiv/NeurIPS/HF/GitHub/PubMed 五源确证。
- 与库内 medqa/medmcqa 等的任务正交性论证完成(§1 Q1 注、§9 全表)。
- 论文 v4 全文抓取并结构化抽取(数字链三处闭合:1047、34+11+10、180,142)。
- 主文-附录矛盾、train 未人工复核、规模四口径、license 变迁四项存照登记(FACTS S-01~S-08)。
- 坑点 8 则(≥6 达标),覆盖使用/许可/口径/质量四类风险。
- DAIMS 六维矩阵与 FAIR 检查单齐备。
- category_tags 5 词均取自受控词表,拼接远低于 100 字符上限。
- 双口径/多口径均在正文显式标注来源,未混用。
- 自检脚本双零通过(check_md.py / preflight_check.py)。
附录 K:数据字段字典
test.csv / train.csv 每行字段的语义速查(字段名以实际下载文件为准,此处为语义映射):
| 字段 | 类型 | 语义 | 使用注意 |
|---|---|---|---|
| note | text | 临床笔记原文(平均 529.7 字符) | 含真实/考试/合成三种语域(坑 7) |
| question | text | 明确问题(平均 21.9 字符) | 通常点名计算器(提示泄漏,坑 6 相关) |
| calculator | string | 目标计算器名称 | 与论文附录 A.1 名录对应 |
| calculator_type | string | equation-based / rule-based | 决定判分轨道 |
| attributes | JSON | 目标属性表(9 类型,1-31 个) | train 侧未人工复核(坑 5) |
| answer | string | 参考答案(数值带单位/分级/日期) | 分级字符串精确匹配,注意规范化 |
| answer_type | string | 数值 / 分级 / 日期 | date 无容差(§4.3) |
| split 元信息 | string | train / test 及计算器覆盖标记 | 15 个 zero-shot-only 计算器勿混入训练 |
字段级的三条使用红线:不要用 test 任何字段做训练;不要假设 attributes 在 train 侧为人工质量;不要在衍生发布中丢失 answer_type(判分轨道依赖它)。
附录 L:评测协议模板(可直接抄的最小协议)
对自研模型在 MedCalc-Bench 上出报告时,建议显式声明以下八项——缺任何一项,结果都难以与论文口径或他人复现对齐:
- 数据版本:v1.0 / v1.2 / Verified(仓库与提交号);
- 划分口径:test 全集 1,047(论文口径)或注明实际行数与差异原因;
- 提示策略:zero-shot direct / zero-shot CoT / one-shot CoT(附 prompt 全文);
- 判分口径:±5% 数值容差与精确匹配的轨道是否与官方评分器一致;
- 输出规范化:单位换算、大小写、空白处理规则;
- 子类分解:七子类与 15 个 zero-shot-only 的分数单列;
- 错误分析:Type A-D 分布(如使用官方分类器,注明 89% 准确率边界);
- 代码增强声明:是否允许解释器执行与重试预算(如沿用附录 D 的 20 次)。
这八项本质上是对"口径漂移"的防御:MedCalc-Bench 的分数分歧大多不是模型差异而是口径差异,协议先行可以把争论留在模型层面。
附录 M:常见误用场景演练
| 场景 | 错误做法 | 后果 | 正确做法 |
|---|---|---|---|
| 团队想给模型补医学计算能力 | 直接在 test 上微调 | 榜单虚高、泛化为零 | train(40 计算器)训练 + test(55)评测,报告分区分数 |
| 论文引用"模型 X 达 49%" | 只引微调 Mistral-7B 数字 | 误导为通用能力 | 写明"微调后、40 已见计算器、泛化仍差"(§5.3) |
| 数据卡写 license CC BY 4.0 | 沿用 v1.0 旧卡 | 许可链错误 | CC BY-SA 4.0(v1.2),衍生同方式共享(坑 2) |
| 综述写"10,543 例训练" | 混用 GitHub 口径与论文口径 | 读者对不上数字 | 锁定一个口径并注明来源(坑 3) |
| 评测报告 73%+ 分数 | 自训针对基准的模型后宣称 SOTA | 触发"背题"质疑 | 声明 RL 针对性训练性质,按 tool-use 口径解读(§6.1) |
| 医院采购用总分一票通过 | 只看全集分数 | 语域/覆盖外推风险 | 按 §8 声明局限,子类+院内自建题双验证 |
附录 N:引用格式与免责声明模板
对外报告/论文引用本条目数据时的推荐句式:
我们在 MedCalc-Bench(Jin et al., NeurIPS 2024 Datasets and Benchmarks Track, Oral; arXiv:2406.12036)上评测了模型 X。数据取自 HuggingFace
ncbi/MedCalc-Bench(v1.2,CC BY-SA 4.0),train/test 规模按论文口径 10,053/1,047 报告。评测采用 zero-shot CoT,判分沿用官方评分器(数值 ±5% 容差、符号精确匹配)。报告分数为 test 全集题均正确率,并单列 15 个 train 未覆盖计算器的泛化分数。错误分析使用官方分类器(准确率 89%)按 Type A-D 归类。注意:本基准覆盖 55 个英文通用临床计算器、note 语域以病例报告摘要为主,分数不外推到中文场景、EHR 原生文本或覆盖外计算器。
这段模板把 §8 的六条局限与 §7 的口径声明一次带齐,可直接作为"口径脚注"使用。
附录 O:一页纸极简摘要
给只有 60 秒的读者:
- 是什么:首个大规模医学计算 LLM 评测基准,55 个临床计算器、1,047 道人工复核测试题(train 10,053)。
- 谁做的:NLM/NIH 主导,17 作者 9 机构,NeurIPS 2024 D&B Oral。
- 考什么:给 note + 问题,模型须找公式、抽参数、算结果;7 子类(Lab/Physical/Date/Dosage/Risk/Severity/Diagnosis)。
- 结果:GPT-4 one-shot CoT 最高 50.9%;zero-shot CoT 下知识错误占一半以上(不是计算错误)。
- 微调:Mistral-7B 10.79%→49.19%,但对未见过计算器泛化差。
- 许可:CC BY-SA 4.0(v1.2),衍生须同方式共享。
- 怎么用:测计算能力/做错误诊断/建 agent 评测;别当公式库或真实 EHR 语料用。
- 一句话结论:它证明的是"最干净的临床叙事上,最强模型做不对一半医学计算",并把失败拆成可干预的四类。
附录 P:延伸 FAQ 40 问(速查组)
本组是正文 FAQ 的压缩速查版,一问一行,供 OCR/关键字检索使用(回答细节请回正文 §对应节)。
基础认知
- P01 全称:MedCalc-Bench;P02 类型:医学计算 LLM 评测基准;P03 发布方:NLM/NIH;P04 年份:2024;P05 会议:NeurIPS D&B Oral;P06 论文:arXiv 2406.12036;P07 PMID:41031072;P08 slug:medcalc-bench;P09 库内查重:0 rows;P10 首要用途:测模型医学计算能力。
数据规模
- P11 计算器:55 个;P12 train:10,053;P13 test:1,047;P14 equation 计算器:36;P15 rule 计算器:19;P16 Lab 例数:327;P17 Physical 例数:240;P18 Risk 例数:240;P19 note 候选:180,142;P20 平均 note 长:529.7 字符。
任务与标注
- P21 三连任务:识别-抽取-计算;P22 属性类型:9 类;P23 属性个数范围:1-31;P24 流水线步数:3 步;P25 前置筛选用模型:GPT-3.5-Turbo;P26 属性抽取用模型:GPT-4;P27 test 质控:全人工复核;P28 train 质控:未人工复核;P29 note 三来源:真实/模板/手写;P30 派生值处理:必须过滤。
评测结果
- P31 评测模型数:8;P32 策略数:3;P33 最佳分:50.9%;P34 最佳配置:GPT-4 one-shot CoT;P35 错误类型数:4;P36 最大错误类:知识错误;P37 最小错误类:计算错误;P38 分类器准确率:89%;P39 微调最佳增益:+38.40(Mistral-7B);P40 泛化结论:补内伤不补外伤。
获取与许可
- P41 托管平台:HuggingFace;P42 repo:ncbi/MedCalc-Bench;P43 是否 gated:否;P44 现行许可:CC BY-SA 4.0;P45 v1.0 旧许可:CC BY 4.0;P46 license 变更根因:PMC-Patients 传染;P47 衍生要求:同方式共享;P48 规模口径数:4 套;P49 第三方版:MedCalc-Bench-Verified;P50 评分器来源:GitHub。
对照与边界
- P51 vs MedQA:任务正交;P52 与 MedQA 的数据关系:题干是 note 来源之一;P53 vs MIMIC:语域对照,未使用;P54 语言:英文;P55 中文覆盖:无;P56 真实 EHR 占比:低(TREC CDS 少量);P57 审计论文:arXiv 2603.02222;P58 审计重定位:tool-use 基准;P59 审计最高分:73.95%;P60 容差争议:±5% 偏宽。
方法学
- P61 判分轨道:数值容差 / 符号精确;P62 zero-shot-only 计算器:15 个;P63 训练覆盖计算器:40 个;P64 微调超参 epochs:2;P65 微调 lr:1e-5;P66 code-augmented 重试上限:20 次;P67 code-augmented 参与模型:GPT-3.5/4;P68 代码增强改善的错误类:Type C;P69 代码增强无改善的:Type A/B;P70 DAIMS 综合评级:B+。
从业建议
- P71 自建评测可复用:分类法/属性体系/双轨判分/四类型;P72 场景封闭时建议:可微调;P73 场景开放时建议:重泛化评测;P74 采购验证建议:子类+院内题双验证;P75 中文场景建议:自建扩展;P76 引用规模建议:锁定论文口径;P77 训练建议:train 可用但知噪声;P78 报告建议:八项协议全声明;P79 最关键一句:知识错误占一半以上;P80 最大误读:把 MedCalc 当公式查询库。
附录 Q:术语中英对照查找表
| 中文 | 英文 | 出现节 |
|---|---|---|
| 医学计算器 | medical calculator | §1、§3.1 |
| 临床笔记 | clinical note | §3.2、§4.1 |
| 方程型 | equation-based | §3.1 |
| 规则型 | rule-based | §3.1 |
| 属性抽取 | attribute extraction | §3.4、§4.2 |
| 派生值 | derived value | §3.3、§3.4 |
| 容差 | tolerance | §4.3 |
| 精确匹配 | exact match | §4.3 |
| 思维链 | chain-of-thought | §5.1、§5.7 |
| 单例提示 | one-shot | §5.1、§5.7 |
| 零样本 | zero-shot | §5.1 |
| 知识错误 | knowledge error | §5.2 |
| 抽取错误 | extraction error | §5.2 |
| 计算错误 | calculation error | §5.2 |
| 微调 | fine-tuning | §5.3 |
| 代码增强 | code-augmented | §5.4 |
| 工具使用 | tool use | §5.6、§6.1 |
| 提示泄漏 | prompt leakage | §6.1 |
| 相同方式共享 | ShareAlike | §6.2、§7.2 |
| 质量分层 | quality stratification | §3.4、附录 J |
附录 R:参考书目
- Jin Q, et al. MedCalc-Bench: Evaluating Large Language Models for Medical Calculations. NeurIPS 2024 Datasets and Benchmarks Track (Oral). arXiv:2406.12036(v1 2024-06-17;v4 2024-06-30).
- MedCalc-Bench 数据集卡 v1.0. HuggingFace
ncbi/MedCalc-Bench-v1.0(CC BY 4.0,2025-11-18). - MedCalc-Bench 数据集卡 v1.2. HuggingFace
ncbi/MedCalc-Bench(CC BY-SA 4.0,2025-12-18). - MedCalc-Bench 代码与复现指南. GitHub
ncbi/MedCalc-Bench. - MedCalc-Bench Verified(第三方重校验). HuggingFace
nsk7153/MedCalc-Bench-Verified(CC BY-SA 4.0,2026-09-08). - MedCalc-Bench Doesn’t Measure What You Think. arXiv:2603.02222(2026)——审计与 tool-use 重定位.
- PubMed 检索记录:PMID 41031072.
- 库内参照条目:open-pmc(rid 45)、medqa(rid 50)、medmcqa(rid 111)、mimic-iv-note(rid 47)、pubmedqa(rid 49)、cmb-cmexam(rid 180)、multimedbench(rid 129)、ehrshot(rid 11)、i2b2-n2c2-nlp(rid 14).
附录 S:致谢与生成说明
本条目由千方病案医数集(qianfanghub)生产。研究底本为 arXiv 2406.12036 v4 全文(HTML 抓取 → 去标签清洗 → 125,110 字符纯文本),辅以 HuggingFace 数据卡(v1.0/v1.2 双版本对照)、GitHub README、PubMed 检索与审计论文(arXiv 2603.02222)摘要信息。所有库内互链 rid 均经 qf_psql.sh 对生产库实查(2026-09-28)。硬数字以论文口径为主口径;四处多口径分歧(规模/合成计数/标题表述/Oral 出处)在 FACTS.md 逐条存照。本条目为百科式二次整理,不复制原始数据;数据使用请遵循 CC BY-SA 4.0 并引用原论文。
附录 T:版本与勘误记录
| 日期 | 变更 | 说明 |
|---|---|---|
| 2026-09-28 | 初版 | 写手 agent-c-medcalcben;研究底本 arXiv 2406.12036 v4;FACTS 九节定稿 |
| (待) | 版本跟踪 | 官方 v1.3+ 发布、审计论文期刊版、新模型刷榜、许可再变更时更新(触发点见附录 I) |
发现勘误请通过千方病案医数集条目反馈渠道提交;本条目对硬数字的修订以"锁定口径 + 存照旧口径"为纪律,不做静默改写。
附录 U:本条目与 FACTS 的对应表
写手内部核对用:本条目每一处硬数字 → FACTS.md 对应节。
| 本条目位置 | 内容 | FACTS 节 |
|---|---|---|
| §1 Q2、§3.1 | 55 计算器七子类分布 | FACTS §4.1 |
| §1 Q3、§3.5 | train 10,053 / test 1,047 | FACTS §4.2 |
| §3.2 | Open-Patients 180,142 四源 | FACTS §4.3 |
| §3.3、坑 4 | note 三来源 34/11/10 矛盾 | FACTS §5、S-03 |
| §4.3 | 判分规则 | FACTS §4.4 |
| §5.1-5.4 | 评测、错误、微调、code-aug | FACTS §7 |
| §6 | 审计与版本链 | FACTS §6、S-01 |
| §9 | 互链 rid | FACTS §8 |
| 坑 2 | license 变迁 | FACTS §6、S-05 |
| 坑 5 | train 未复核 | FACTS S-02 |
附录 V:写手质量自评
| 维度 | 自评 | 说明 |
|---|---|---|
| 三查执行 | 通过 | 锁文件、临时文件唯一化、ps 留痕 |
| 存在性核验 | 通过 | 库内 0 rows;外部五源确证 |
| 数字可溯源 | 通过 | 全部硬数字给出来源;三处数字链闭合自检 |
| 多口径处理 | 通过 | 四口径 + 主文-附录矛盾 + 标题口径全部存照 |
| 坑点覆盖 | 通过 | 8 则(≥6 要求),含根因归类与成本排序 |
| 库内互链 | 通过 | 14 条带 rid,含双向锚点建议 |
| 自检脚本 | 待执行 | check_md.py + preflight_check.py(见尾注) |
| 遗留疑点 | 已登记 | 17 作者完整名单、NeurIPS 官方列表、审稿分 |
附录 W:给三类读者的最短路径
- 30 秒版:读附录 O 一页纸极简摘要 + INFOBOX;
- 10 分钟版:INFOBOX → §0 → §1 → §5.1 → §10 → 附录 O;
- 1 小时深读版:按 §0 读法三则逐条展开,重点在 §3.4(流水线取舍)、§5.2(错误框架)、§6(争议重定位)、§8(局限)。
- 要动手用:附录 L 协议模板 + 附录 K 字段字典 + §7.4 五步 + §7 的下载验证清单。
尾注
本条目由千方病案医数集写手代理 agent-c-medcalcben 于 2026-09-28 完成:研究底本为 arXiv 2406.12036 v4 全文(HTML 抓取清洗为 125,110 字符纯文本),辅以 HuggingFace 数据卡(v1.0/v1.2 对照)、GitHub README、PubMed 检索与审计论文(arXiv 2603.02222)摘要;库内查重与互链 rid 均经 qf_psql.sh 实查。FACTS.md 九节存证于同目录。硬数字以论文口径为主口径,全部多口径分歧在坑 3 与 FACTS S-01 存照;主文-附录矛盾在坑 4 存照。条目 URL 占位:https://www.qianfanghub.com/ai-ready-dataset/medcalc-bench/708
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- clicr — 共享标签:医学问答与基准 / 医学问答 / 临床文本 / 医疗NLP
- blue-benchmark — 共享标签:医学问答与基准 / 评测基准 / 临床文本 / 医疗NLP
- healthsearchqa — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- claimify — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- pubmedqa — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- medqa — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- medmcqa — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- medicationqa — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- cmb-cmexam — 共享标签:医学问答与基准 / 评测基准 / 医学问答 / 医疗NLP
- mednli — 共享标签:医学问答与基准 / 评测基准 / 临床文本 / 医疗NLP
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

