目录

一、从一个招聘 JD 说起

「撰写考察点 Rubrics 评分标准,梳理理想答案的评判规则」——这句话在近两年的大模型数据标注、评测岗位 JD 里出现频率极高。它听起来很专业,但落到实际交付物上,大量出题者交出来的 Rubrics 长这样:

- 准确性:答案是否准确(0-5 分)
- 完整性:是否覆盖了所有要点(0-5 分)
- 专业性:是否体现金融专业素养(0-5 分)

问题不在于这些维度「错」,而在于它们不可观测。两个标注员拿到同一份答案,一个打 4 分一个打 2 分,谁也说服不了谁——因为「准确性」这个词本身没有指向任何可以被指认、被复核的具体事实。

Rubrics 的本质不是一张打分表,而是一份可执行的判定协议:它要能让不同的人、在不同的时间、对同一份答案得出同一个结论。本文要讨论的就是:在金融这种高事实密度、高合规敏感度的任务上,如何把 Rubrics 从「形容词」改造成「断言」。

二、为什么「准确性」是一个坏维度

先看一个具体的分歧场景。题目要求计算某公司的净利率与 ROA,标准答案给出「净利率 15%,ROA 6%」。两位标注员分别打分:

  • 标注员 A:答案数字全对,准确性 5 分。
  • 标注员 B:答案没有给出计算过程,无法确认口径,准确性 3 分。

两人都没有错,因为「准确性」这个词同时承载了三件不同的事:结果对不对、过程能不能复核、口径有没有声明。一个维度里塞进三个判定目标,分歧就是必然的。

坏维度的共同特征可以归纳为三条:

  1. 不可指认:无法指向答案中的某一句、某个数字。
  2. 不可复核:第二个人无法独立重做一次判定并得到相同结论。
  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 给了你载体。剩下的,就是在每一道题上老老实实把断言写出来——这件事没有捷径,但它带来的评测一致性提升,是任何「打分表」都给不了的。

Logo

更多推荐