评分让 benchmark 从“肉眼看 JSON”变成一个客观数字。每个模型的结果都会依据黄金参考(预期输出)进行评分,得出完整性、正确性以及一个可供排序的总体质量分数。
评分需要有可供对照的对象。每个 scenario 都带有一个参考输出:其唯一固定 entity 的正确答案。可通过用强模型生成(网络搜索 + 权威来源文档)、粘贴一个已知正确的结果,再手动编辑来构建它——一旦你信任它,就将其标记为已验证。已验证的参考是对该 scenario 进行 benchmark 的必要条件,这样始终都有可供评分的对象。如果你之后编辑了参考——或更改了 scenario 的评分配置——现有分数会被标记为过时,直到你重新评分。
参考答案还会自我更新。经过校验的参考答案仍是人工修正过的草稿,而你所基准测试的模型就是它的审阅者:凡是评判认为候选答案优于参考答案(或参考答案有误)之处、凡是场景自带样本证明参考答案有误之处、以及模型补全了参考答案留空且获评判确认的值之处,结果中都会记录一条发现。每次评分轮次结束时,所有受评模型的发现会被归并——先以样本所证明的为准,再取多数模型给出的答案——并写入参考答案。某一轮次已做出的编辑只会被更强的证据取代(样本、判定该值有误、或更多模型达成一致——跨轮次累计),而绝不会因多一个模型的意见而改变,因此逐个对模型做基准测试也不会让参考答案偏向最后评分的那个模型。这些自动编辑绝不会将评分标记为过期(只有你自己的保存才会),且每一处都会记录它替换了什么以及由哪些模型提出。
可像修订模式一样审阅:场景结果旁的参考答案视图会展示参考答案本身,并在每处自动编辑所在位置高亮显示——先前的值带删除线、新的值、有多少模型支持它以及原因。除非你拒绝,否则所有更改均视为接受;拒绝会恢复先前的值,并使该路径不再参与今后的轮次。可按属性或证据筛选(仅有一个模型支持的编辑最值得关注),选择当前显示的内容,并批量拒绝。
核心问题在于:两个正确答案的写法可能不同。将某位演员命名为“R. Downey Jr.”而非“Robert Downey Jr.”的模型并没有错。因此,每个字段都会通过分层阶梯进行比较——先用最廉价、最确定的方式,仅在需要时才升级:
完全相同的值会匹配。仅在大小写、首尾空格或数值精度上存在差异的值也会匹配("Acme" = "ACME",4.0 = 4)。免费且完全确定。
对于文本,候选值与参考值会被嵌入并按余弦相似度比较。高于阈值即视为相同——因此像“R. Downey Jr.”与“Robert Downey Jr.”这样有效的另一种写法算作匹配,而非错误。日期是例外:它们按日历值比较,绝不按相似度,因此接近但错误的日期(“1972-03-14”与“1972-03-24”)会是明确的不匹配,而不是具有欺骗性的高余弦值。布尔值同样要么精确匹配,要么不匹配。
仅凭相似度难以判定的值——包括摘要、描述等所有自由文本字段、每一个不完全相同的数字,以及明显不同但有你的文档或多数其他模型佐证的值——都会送交评判模型。评判模型是盲评的:它只看到标记为 A 和 B 的两个值,以及该字段在架构中的位置(其父级及父级描述、类型、所属的列表条目),若场景中含有源文档也会一并提供;随后它判断哪一个更契合该字段、两者均正确,还是其中一个有误。被判定与参考答案相当或更优的候选值——或被判定有误的参考答案——可获满分;较弱的答案得部分分,错误的答案几乎或完全不得分。当字段允许一定误差时,数字可得部分分(分子量 273.37 与 273.35、半衰期 12 与 15);而在要求精确的场合则判为错误(发行年份 2020 与 2023)。参考答案留空的值会被单独提问:一旦确认正确,它将被视为参考答案本应包含而模型找到的值——分数会上升,而不只是免于扣分——并且参考答案会采纳该值。
严格度设置控制嵌入阈值:值越高,意味着两个写法不同的值必须更相似才会被视为相同。严格度、可选的评判模型和嵌入模型都在场景上设置——而不是每次评分时选择——因此每个模型都以相同方式评分,分数保持可比。
列表——一部电影的演员阵容、一种药物的副作用——是模型差异最大的地方:小模型可能找到 4 位演员,而强模型能找到 15 位。顺序无关紧要,找到更多正确的条目应当胜出。因此数组按集合评分,而非逐个位置比较:
展开某一结果行,即可查看哪些项被匹配、遗漏或产生了幻觉。
单个数字掩盖了太多信息,因此每个结果都附带分项得分:
可展开的行显示逐字段的明细:候选值与参考值、由阶梯的哪一级决定,以及相关时的相似度。
质量只占三分之一。当基准测试作为评分来源参与模型选择时,模型的排名由质量、速度和成本共同决定,而三者的配比由你掌握:在设置 → 组织 → 默认值中按场景类型设置,三项之和为 100,默认均分。若成本权重很高,一个便宜够用的模型就会排在昂贵的优秀模型之前——这对某些工作负载是正确答案,对另一些则不是,因此平台不会替你做决定。速度与成本以对数刻度相对于该场景的其他结果来衡量:最快或最便宜的模型得 100 分,慢 10 倍或贵 10 倍的得 0 分;但差距很小的一组结果不会被拉伸铺满整个区间——$10 与 $12 的两个模型分别得 100 和 92 分,而不是 100 和 0。
当某个场景多次运行同一模型(重复运行)时,每次运行都会单独评分,该行会显示平均质量以及一致性区间(各次运行的最低值–最高值)—— 这样就很容易发现平均表现正确但不稳定的模型。显示的输出是按质量取中位数的那次运行。
基准测试不仅限于富化:场景还可以测试样本生成(每个模型针对同一自由文本请求各自构造一个示例 JSON)或模式生成(每个模型将同一份固定样本转换为模式)。二者各有自己的评分规则:
无论哪种方式,熟悉的列都保持其含义——将鼠标悬停在列标题上可查看该类型的具体定义,展开某一行可查看完整明细。
评分是对已保存结果单独进行的一轮处理 — 它不会重新富化,因此不会为受测模型重复付费。但它确实会对文本进行嵌入以比较值(若场景配置了评判模型,还会运行评判),这会按用量扣除积分。这一过程在每次运行期间自动进行 — 每个模型的运行一结束就会被评分 — 并在您重新评分时再次进行。如果您的组织未配置嵌入模型(且场景也未设置覆盖项),评分仍会运行,但会回退为仅精确匹配(此时不同拼写形式会被判为不匹配),并给出相应提示。评判模型出错则不同:若评判调用失败,评分会以明确的错误中止,受影响的模型不会保留任何部分评分 — 一个结果要么完整评分,要么完全不评分,之后仍可重新评分。评判答案会按内容按场景缓存:同一问题无论由另一个模型提出、重复出现,还是在其他评分轮次中出现,都不会重复付费;参考自我更新后的重新评分只会针对已修改的字段重新提问。 评判过程毫无隐藏:对模型的每一次评分都会在历史中留下一条评分记录——每次评判调用占一行,包含其提示词、回答、token 数和成本,失败的调用也包括在内,并注明缓存免费回答了多少个问题——结果表中还会在指向该记录的链接旁显示每个模型的评判成本、调用次数和评分耗时。 选择评审时请注意,LLM 评审可能偏向自己所属的模型系列——建议选择来自你并未在基准测试中的提供商的评审。
在模型管理 → 基准测试中,于场景编辑器内设置并核验参考(并在此选择其评判模型、嵌入模型和严格度)。此后,每次运行都会自动为其成功的结果评分 — 可排序的质量列会自动填充,无需额外操作。在您编辑参考或评分配置后,使用重新评分结果(标题栏按钮或 ··· 菜单)重新评定。参考状态旁的参考更新标记会打开评分轮次所做更改的日志,每个条目均可单独撤销。