Rubrics 不是评分表——金融任务评分标准的「可观测化」设计
目录
- 一、从一个招聘 JD 说起
- 二、为什么「准确性」是一个坏维度
- 三、两条可以直接借用的研究结论
- 四、可观测化改造:把维度拆成断言
- 五、正/负向评分锚点
- 六、部分给分在金融任务中的特殊处理
- 七、一套可直接复用的 Rubrics Schema
- 八、落地时的几个坑
- 九、小结
一、从一个招聘 JD 说起
「撰写考察点 Rubrics 评分标准,梳理理想答案的评判规则」——这句话在近两年的大模型数据标注、评测岗位 JD 里出现频率极高。它听起来很专业,但落到实际交付物上,大量出题者交出来的 Rubrics 长这样:
- 准确性:答案是否准确(0-5 分)
- 完整性:是否覆盖了所有要点(0-5 分)
- 专业性:是否体现金融专业素养(0-5 分)
问题不在于这些维度「错」,而在于它们不可观测。两个标注员拿到同一份答案,一个打 4 分一个打 2 分,谁也说服不了谁——因为「准确性」这个词本身没有指向任何可以被指认、被复核的具体事实。
Rubrics 的本质不是一张打分表,而是一份可执行的判定协议:它要能让不同的人、在不同的时间、对同一份答案得出同一个结论。本文要讨论的就是:在金融这种高事实密度、高合规敏感度的任务上,如何把 Rubrics 从「形容词」改造成「断言」。
二、为什么「准确性」是一个坏维度
先看一个具体的分歧场景。题目要求计算某公司的净利率与 ROA,标准答案给出「净利率 15%,ROA 6%」。两位标注员分别打分:
- 标注员 A:答案数字全对,准确性 5 分。
- 标注员 B:答案没有给出计算过程,无法确认口径,准确性 3 分。
两人都没有错,因为「准确性」这个词同时承载了三件不同的事:结果对不对、过程能不能复核、口径有没有声明。一个维度里塞进三个判定目标,分歧就是必然的。
坏维度的共同特征可以归纳为三条:
- 不可指认:无法指向答案中的某一句、某个数字。
- 不可复核:第二个人无法独立重做一次判定并得到相同结论。
- 不可争议定位:出现分歧时,说不清是答案的问题还是标准的问题。
金融任务把这三条放大到了极致。一个数字错了,可能是算错,也可能是口径选错;一句「依据相关监管规定」,可能是偷懒,也可能是引用了已废止的旧规。维度级的评分表无法区分这些情况,只能把它们统统压成一个模糊的分数。
三、两条可以直接借用的研究结论
3.1 细粒度清单式优于整体式
Rubrics 研究里有一个相对稳定的结论:清单式(analytic)Rubrics 在评分一致性上优于整体式(holistic)Rubrics。
整体式 Rubrics 让评分者对答案给出一个总体判断,依赖的是评分者的内隐标准;清单式 Rubrics 把判断拆成若干独立条目,每条只回答一个是非或分级问题。前者的方差来自「每个人心里的尺子不同」,后者的方差被压缩到「每条尺子的刻度是否清楚」。
对出题者的启示很直接:不要写「准确性 0-5 分」,要写「这条断言是否满足」。分数是断言的汇总结果,而不是判定动作本身。
3.2 八维框架:一个可复用的维度骨架
FORCE-Bench 提出的八维框架,为金融问答评测提供了一个可复用的维度骨架:
| 维度 | 关注点 | 金融场景下的典型问题 |
|---|---|---|
| accuracy | 结论与计算是否正确 | 数字算错、口径选错 |
| citations | 来源与条文引用 | 数据无出处、条文不精确 |
| clarity | 表达是否明确 | 结论需要读者自行归纳 |
| depth | 是否有机制性解释 | 只给结果不给原因 |
| groundedness | 陈述是否有支撑 | 出现材料中不存在的事实 |
| recency | 时效性 | 使用过期数据或已废止规则 |
| relevance | 是否回应了问题 | 漏答子问题、答非所问 |
| structure | 组织是否清晰 | 多步计算混在一段里 |
这八个维度解决了「评什么」的问题,但没有解决「怎么评」的问题。维度仍然是形容词,下一步必须把它们落到断言上。
四、可观测化改造:把维度拆成断言
改造的核心动作只有一个:把每个维度拆成若干条可以被逐项打勾的断言。一条合格的断言需要满足:
- 指向答案中的具体文本或数字;
- 判定结果只有有限几种状态(满足 / 部分满足 / 不满足 / 未提及 / 错误);
- 换一个人来判定,能得到相同结果。
4.1 「准确性」的三次拆解
以 Accuracy 为例,把它拆成三条断言:
断言一:计算溯源可复核。 答案给出公式或代入过程,中间值与最终值可复算一致。
- 满足:
净利率 = 18/120 = 15%;ROA = 18/300 = 6% - 部分满足:
净利率 15%,ROA 约 6%(缺公式与分母口径) - 不满足:
净利率 15%,ROA 6%(无任何过程)
断言二:监管条文引用精确到款。 涉及监管要求时,引用精确到条/款,且内容与所述规则一致。
- 满足:
依据《商业银行资本管理办法》第 X 条第 Y 款 - 不满足:
依据相关监管规定
断言三:假设条件显式声明。 依赖的假设(折现率、税率、风险权重等)已显式声明取值。
- 满足:
假设企业所得税率为 25%,与题目给定一致 - 部分满足:
按 25% 税率计算(未说明来源) - 不满足:
未提及任何税率假设
三条断言各自独立判定,合起来才构成对「准确性」的完整刻画。此时若两位标注员仍有分歧,分歧点会精确落在某一条断言上,而不是笼统的「准确性给几分」。
4.2 其余维度的断言化示例
同样的方法可以套用到其余维度:
| 维度 | 断言示例 |
|---|---|
| citations | 关键数据点标注来源,且可定位到页码/章节/数据表 |
| groundedness | 事实性陈述均可在给定材料或可核验来源中找到支撑 |
| recency | 引用的监管规则为现行有效版本 |
| relevance | 题目每个子问题均有对应回答 |
| clarity | 关键结论有明确陈述,无需读者自行归纳 |
| structure | 多步计算按步骤分列,便于定位 |
| depth | 至少指出一个适用边界或风险点 |
注意 depth 在多数金融计算题中权重可以设为 0,只在需要判断力的题目上启用——维度是骨架,不是每道题都必须填满。
五、正/负向评分锚点
锚点是断言的可观测化落地:每条断言至少给出 Positive / Partial / Negative 三档示例,让标注员「照着比对」而不是「凭感觉打分」。
注意 partial 这一档:它不是为了「和稀泥」,而是为了把分歧显性化。当标注员在 Positive 与 Partial 之间犹豫时,说明这条断言的定义边界还不够清楚,应该回头修断言,而不是靠讨论投票。
六、部分给分在金融任务中的特殊处理
通用评测里,partial credit 通常按「命中要点数 / 总要点数」线性折算。金融任务不能这么简单处理,原因有三:
第一,错误有方向性。 算错一个中间值导致最终结论偏差,和口径选错导致结论方向相反,严重程度完全不同。前者是执行错误,后者是方法错误。建议对「方法/口径类」断言设为否决项(gate):不满足则整题得分上限被压制,而不是简单扣几分。
第二,合规类断言不可部分满足。 「引用条文精确到款」这种断言,要么精确要么不精确,不存在 60% 精确。这类断言应设为二值(binary),且权重较高。
第三,缺失与错误要区分。 答案没提某个风险点,和答案提了但说错了,在金融场景下后果不同。建议在数据结构上把 not_mentioned 与 incorrect 作为两个独立状态,前者扣分,后者扣分并触发复核。
一个可操作的折算规则:
题目总分 = Σ(断言得分 × 权重) / Σ(权重) × 100
其中:
- gate 断言不满足 → 总分上限 = 60
- binary 断言 → 得分 ∈ {0, 1}
- 分级断言 → 得分 ∈ {0, 0.5, 1}
- incorrect 状态额外记录,不参与折算但进入复核队列
七、一套可直接复用的 Rubrics Schema
下面给出 YAML 版本,字段设计围绕「断言级 + 锚点 + 部分给分」三件事。
rubric:
version: "1.0"
task_id: "fin_qa_2024_001"
task_type: "financial_calculation_with_judgement"
domain: "corporate_finance"
# 全局否决项:任一不满足则总分封顶
gates:
- id: gate_method_valid
assertion: "所用计算方法与口径在金融实务中成立,且已显式声明"
cap_score: 60
dimensions:
- name: accuracy
weight: 0.35
assertions:
- id: acc_calc_trace
assertion: "给出公式或代入过程,中间值与最终值可复算一致"
type: graded # graded | binary
weight: 3
anchors:
positive: "净利率 = 18/120 = 15%;ROA = 18/300 = 6%"
partial: "净利率 15%,ROA 约 6%(缺公式与分母口径)"
negative: "净利率 15%,ROA 6%"
- id: acc_assumption_declared
assertion: "依赖的假设(折现率/税率/风险权重等)已显式声明取值"
type: graded
weight: 2
anchors:
positive: "假设企业所得税率为 25%,与题目给定一致"
partial: "按 25% 税率计算(未说明来源)"
negative: "未提及任何税率假设"
- name: citations
weight: 0.20
assertions:
- id: cit_source_locatable
assertion: "关键数据点标注来源,且可定位到页码/章节/数据表"
type: graded
weight: 3
anchors:
positive: "数据来源:公司 2023 年年报第 45 页合并利润表"
partial: "数据来源:公司 2023 年年报"
negative: "据公开资料显示"
- id: cit_regulation_precise
assertion: "监管条文引用精确到条/款,且内容与所述规则一致"
type: binary
weight: 3
anchors:
positive: "依据《商业银行资本管理办法》第 X 条第 Y 款"
negative: "依据相关监管规定"
- name: groundedness
weight: 0.15
assertions:
- id: grd_no_unsupported_claim
assertion: "事实性陈述均可在给定材料或可核验来源中找到支撑"
type: graded
weight: 3
- id: grd_qualitative_benchmark
assertion: "定性判断附有可比对象或参照标准"
type: graded
weight: 2
- name: recency
weight: 0.10
assertions:
- id: rec_data_period
assertion: "财务数据期间与题目要求一致"
type: binary
weight: 2
- id: rec_rule_current
assertion: "引用的监管规则为现行有效版本"
type: binary
weight: 2
- name: relevance
weight: 0.10
assertions:
- id: rel_all_subquestions
assertion: "题目每个子问题均有对应回答"
type: graded
weight: 3
- name: clarity
weight: 0.05
assertions:
- id: clr_conclusion_explicit
assertion: "关键结论有明确陈述,无需读者自行归纳"
type: graded
weight: 2
- id: clr_unit_consistent
assertion: "数字单位统一,未混用亿元/万元"
type: binary
weight: 1
- name: structure
weight: 0.05
assertions:
- id: str_stepwise
assertion: "多步计算按步骤分列,便于定位"
type: graded
weight: 2
- name: depth
weight: 0.00 # 视任务类型启用
assertions:
- id: dep_mechanism
assertion: "对结论给出机制性解释,而非仅陈述结果"
type: graded
weight: 2
- id: dep_boundary
assertion: "至少指出一个适用边界或风险点"
type: graded
weight: 2
scoring:
scale: 100
partial_credit: true
states: [satisfied, partial, not_satisfied, not_mentioned, incorrect]
incorrect_handling: "记录并进入复核队列,不参与折算"
对应的 JSON 结构(便于程序消费)核心片段:
{
"rubric": {
"version": "1.0",
"task_id": "fin_qa_2024_001",
"gates": [
{ "id": "gate_method_valid", "cap_score": 60 }
],
"dimensions": [
{
"name": "accuracy",
"weight": 0.35,
"assertions": [
{
"id": "acc_calc_trace",
"type": "graded",
"weight": 3,
"anchors": {
"positive": "净利率 = 18/120 = 15%;ROA = 18/300 = 6%",
"partial": "净利率 15%,ROA 约 6%(缺公式与分母口径)",
"negative": "净利率 15%,ROA 6%"
}
}
]
}
],
"scoring": {
"scale": 100,
"partial_credit": true,
"states": ["satisfied", "partial", "not_satisfied", "not_mentioned", "incorrect"]
}
}
}
八、落地时的几个坑
坑一:断言写成了维度。
「答案专业」不是断言,「答案引用了至少一条现行有效监管条文并精确到款」才是。检验方法:把断言交给一个不懂金融的人,他能不能只靠文本判断真假。
坑二:断言数量失控。 一条断言对应一次判定,断言太多会让标注成本指数上升。经验值是单题 8-15 条断言,其中 gate 不超过 2 条。超过这个量级,说明题目本身太宽,应该拆题。
坑三:锚点只写正例。 只给 positive 示例,标注员遇到边界情况仍然会自由发挥。negative 和 partial 锚点才是真正压缩方差的部分。
坑四:权重拍脑袋。 权重应该反映「这条断言错了,对用户的实际伤害有多大」。金融场景下,口径错误 > 计算错误 > 表述不清,权重排序应与此一致。
坑五:把 Rubrics 当成事后补的文档。 好的 Rubrics 是出题时同步写的——你在写标准答案的过程中,自然会意识到「这里我用了 25% 税率但题目没说」,这个瞬间就是断言该诞生的地方。
九、小结
回到开头那句 JD:撰写考察点 Rubrics 评分标准,梳理理想答案的评判规则。它的关键词不是「评分」,而是「规则」。
规则的特征是可执行、可复核、可争议定位。把「准确性」拆成「计算溯源可复核」「监管条文引用精确到款」「假设条件显式声明」,做的正是这件事:把一个形容词,换成三条可以被指认的断言。
八维框架给了你骨架,细粒度清单式给了你方法论,断言级 schema 给了你载体。剩下的,就是在每一道题上老老实实把断言写出来——这件事没有捷径,但它带来的评测一致性提升,是任何「打分表」都给不了的。
更多推荐
所有评论(0)