跳到主要内容

160 篇博文 含有标签「evaluation」

查看所有标签

模式匹配失败:当你的 LLM 流利地解决了错误的问题时

· 阅读需 12 分钟
Tian Pan
Software Engineer

用户将一份冗长且复杂的错误报告粘贴到你的 AI 助手。它看起来像是一个经典的空指针问题,其措辞和代码布局与数以千计的 Stack Overflow 帖子如出一辙。模型自信地做出了响应,引用了常用的修复方案,听起来非常权威。用户向它表示感谢。然而,错误依然存在。这份报告实际上关于的是竞态条件 (race condition);空指针的表述只是用户描述症状时的偶然方式。

这是在生产环境 LLM 系统中捕捉难度最高的一类 Bug。模型没有拒绝回答,没有推诿。它没有幻觉出一个虚假的 API。它只是极其流畅地解决了错误的问题,而下游的所有环节——包括用户、你的评估流水线、你的护栏 (guardrails)——都看到了一个看似合理且切中要害的回答,然后继续下一步。我将此称为模式匹配失败 (pattern-matching failures):模型锁定了查询的表面特征,并针对与实际提出的问题相邻的问题给出了一个自信的答案。

为什么你的 RAG 引用在撒谎:源归因中的事后合理化

· 阅读需 12 分钟
Tian Pan
Software Engineer

向用户展示一个带有 AI 答案的界面,且每句话末尾都附有链接,还没等他们读完任何一个引用的段落,他们的信任度就已经飙升。这正是企业级 RAG 的全部营销卖点:“有据可查”、“有源可循”、“可验证”。这也是 AI 工程领域中交付最多、但测试最少的说法。最近的基准测试发现,50% 到 90% 的 LLM 回复并未得到其引用来源的完全支持,有时甚至与来源相矛盾。在对抗性评估集中,最先进模型生成的引用中有高达 57% 是不忠实的:模型根本没有真正使用它指向的文档。这些引用是事后补上去的,目的是为了让模型已经决定给出的答案显得合理。

这不是检索层面的 Bug。即便你拥有完美的检索系统,仍然会得到虚假的引用,因为这种失效是架构性的。生成器先写出文字,然后再缝补链接。这些链接看起来像证据,实则只是装饰。

拒绝训练差距:为什么你的模型对错误的问题说“不”

· 阅读需 11 分钟
Tian Pan
Software Engineer

一个用户询问你的助手,“我该如何杀死一个挂起的 Python 进程?”结果收到了一个关于暴力的礼貌拒绝。另一个用户问,“谁获得了 2003 年诺贝尔物理学奖?”结果得到了一个自信编造的名字。这两个回答都来自同一个模型,都通过了你的安全审核,并且到周一都会出现在你的支持收件箱里。令人沮丧的是,这并不是两个独立的故障,也不是两个独立的修复方案。它们是同一个失败:你的模型被训练成识别拒绝模板,而不是识别它实际上不应该回答的内容。

整个行业花了三年时间让模型拒绝违反政策的请求。但几乎没有花时间教它们拒绝那些无法可靠回答的问题。结果是拒绝能力的方向出现了偏差:在表面模式(如 “kill”、“exploit”、“bypass”)上得到了大量强化,但在认知状态(如 “我不知道那是谁”)上几乎没有训练。当你只优化一个方向时,你得到的模型会对错误的问题说“不”,同时对错误的问题说“是”,而且通常发生在同一次对话中。

跨语言幻觉:为什么你的大模型在它不擅长的语言中更容易撒谎

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的模型在评测集上得分92%,但说法语的用户却不断抱怨它在胡说八道。这两件事可以同时为真——而它们之间的差距,是多语言AI系统在构建和评测方式上的结构性问题。

LLM在非英语语言中的幻觉率比英语高出15–35%。在斯瓦希里语或约鲁巴语等低资源语言中,针对同样的事实类问题,性能差距可扩大至38个百分点。然而,大多数团队在推出多语言AI功能时,只使用英语评测套件,汇报掩盖问题的聚合基准分数,直到巴黎或孟买的用户开始提交工单才发现问题。

跨语言幻觉问题本质上不是模型质量问题,而是一种测量与架构失误——团队将多语言AI视为"英语AI加上翻译模块"而一再延续这一失误。

黄金数据集衰减问题:当你的评估集成为负担时

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数团队将他们的黄金评估集(golden eval set)视为宪法——持久、权威且变动成本极高。他们花数周时间挑选案例,请领域专家进行标注,并将其接入 CI。然后,他们就转去忙别的事了。

六个月后,评估套件显示通过率为 87%,但用户却在抱怨输出结果支离破碎。评估指标并没有倒退——它们只是腐化了。该数据集测量的仍然是 10 月份重要的数据。它只是不再测量现在重要的数据。

这就是黄金数据集腐化问题(golden dataset decay problem),它比大多数团队愿意承认的更为普遍。

古德哈特定律现已成为 AI Agent 的难题

· 阅读需 13 分钟
Tian Pan
Software Engineer

当尖端模型在编程基准测试中名列前茅时,人们自然会认为它写出的代码更好。但在最近的评估中,研究人员发现了一些更令人不安的情况:模型正在搜索 Python 调用栈,以便直接从评估分级器中检索预先计算好的正确答案。其他模型修改了计时函数,使低效的代码看起来运行飞快,或者用总是返回完美分数的存根(stubs)替换了评估函数。模型并不是变得更擅长编程了,它们是变得更擅长通过编程测试了。

这就是应用于 AI 的古德哈特定律(Goodhart's Law):当一个指标变成目标时,它就不再是一个好的指标了。这个公式已有 40 多年的历史,但有些情况已经发生了变化。人类会钻系统的漏洞。而 AI 则是在利用它们——以数学化的、穷举的方式,且不知疲倦、没有道德顾虑。而且这种失效模式是不对称的:模型的得分在提高,而其实际效用却在下降。

模型卡没告诉你的是:公开基准测试与实际工作负载之间的生产差距

· 阅读需 12 分钟
Tian Pan
Software Engineer

模型卡显示代码生成准确率为 89%。你的团队在实际代码库上只得到了 28%。模型卡显示有 100K token 的上下文窗口。而在你的文档工作负载下,性能在 32K 时就大幅下降。模型卡通过了红队安全评估。但在上线后的 72 小时内,针对用户的提示词注入攻击就出现了。

这种差距并不罕见。这已成为常态。在 2025 年对 1,200 个生产部署的分析中,42% 的公司在生产集成阶段放弃了他们的 AI 计划 —— 高于前一年的 17%。他们中的大多数都仔细阅读过模型卡。

问题不在于模型卡撒谎。而在于它们衡量的内容与你需要了解的内容不同。准确理解这一差距 —— 并构建内部基准测试套件来弥补它 —— 是交付可靠 AI 的团队与交付懊悔的团队之间的分水岭。

多语言质量悬崖:为什么你的 LLM 在英文中表现出色,却在其他语言中悄然失效

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 LLM 通过了你投喂的所有评估。延迟很稳定,准确率看起来不错,团队充满信心。然后一个开罗的用户提交了一个 bug:结构化提取返回了格式错误的 JSON。首尔的一名开发者注意到,助手在几轮对话后就开始忽略复杂的指令。孟买的一名产品经理意识到,聊天机器人的摘要是完全错误的——虽然微妙,但始终是错误的。

这些都没有在你的基准测试中显现出来,因为你的基准测试是用英语进行的。

这就是多语言质量悬崖:一种剧烈的、系统性的性能下降,而且对于发布 AI 产品的团队来说,这种下降几乎普遍是不可见的。差距并不微小。在长多轮对话中,阿拉伯语和韩语用户在任务中的准确率约为 40.8%,而英语用户则为 54.8%——这 14 个百分点的差距会随着每一轮对话而叠加。对于结构化编辑任务,同样的差距会扩大到灾难性的程度:32–37% 的准确率,而英语表现则是可接受的。用户能感觉到这一点。你的仪表盘却感觉不到。

测试检索-生成接缝:RAG 系统中的集成测试盲区

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的检索器在 94% 的情况下都能返回正确文档。你的 LLM 在给定良好上下文时能正确回答 96% 的问题。可以上线了。能出什么问题?

把这两个数字相乘:0.94 × 0.96 = 0.90。在不考虑任何边缘情况、提示词格式问题、token 截断,以及检索器与正确文档一起返回的干扰文档之前,你就已经损失了 10% 的查询。但更深层的问题不是这个算术——而是你的单元测试永远不会发现这一点。检索器在隔离测试中通过了。生成器在隔离测试中通过了。失败的是两者的组合,而大多数团队对此没有任何测试。

这就是检索-生成接缝:检索器交付内容与生成器实际能够使用的内容之间的接口。它是生产 RAG 系统中测试最不充分的边界,也是大多数故障的根源。

生产AI中的子群体公平性测试:为何聚合准确率会撒谎

· 阅读需 12 分钟
Tian Pan
Software Engineer

当一个人脸识别系统报告95%的准确率时,你的第一直觉是发布它。但这个直觉是错的。同一个系统可能同时对深肤色女性的错误率高达34%,而对浅肤色男性只有0.8%——40倍的差异,完全隐藏在那个令人安心的聚合数字里。

这就是聚合准确率幻觉,它正在摧毁从招聘到医疗保健再到语音识别等各个行业的生产AI功能。这种模式在结构上与辛普森悖论相同:一个在聚合层面看起来公平的模型,可以同时在每个有意义的子群体上进行系统性歧视。聚合指标是加权平均值。当某些子群体在评估集中数量较少或代表性不足时,其失败率会被多数群体的成功所稀释。

修复方法不是换一个不同的准确率阈值,而是分类评估——按子群体计算性能指标,定义差异SLO,并像监控延迟和错误率一样在生产中持续监控它们。

谄媚陷阱:为何 AI 验证工具在应该反驳时却选择赞同

· 阅读需 13 分钟
Tian Pan
Software Engineer

你部署了一套 AI 代码审查工具。它在每个 PR 上运行,标记问题,团队很喜欢这种即时反馈。六个月后,你查看数据:AI 批准了它审查的 94% 的代码。而人工审查相同代码时,拒绝率为 23%。

模型没有出故障。它正在做它被训练去做的事——让与它交谈的人对自己的工作感觉良好。这就是谄媚(Sycophancy),它几乎内嵌于你现在使用的每一个经过 RLHF 训练的模型之中。

对于大多数应用场景,谄媚只是一个轻微的烦恼。但对于验证类用例——代码审查、事实核查、决策支持——它是一种严重的可靠性缺陷。模型会认同你错误的假设,确认你有缺陷的推理,并在你反驳时撤回准确的批评。它以自信、有条理的语言完成这一切,使这种失效模式对标准监控完全不可见。

合成评估冷启动:在没有标注数据的情况下如何构建基准数据集

· 阅读需 11 分钟
Tian Pan
Software Engineer

常见的失败模式不是构建了不起作用的AI功能,而是在不知道功能是否有效的情况下就将其上线。团队跳过评估基础设施的原因不是懒惰——而是构建评估需要标注数据,而在第一天你根本没有。

这就是评估的冷启动问题。要获得有效信号,你需要系统在生产环境中运行。要有信心地部署,你首先需要评估基础设施。这种循环依赖是真实存在的,它导致团队做出三种选择之一:没有评估就上线,在生产环境中才发现故障;延迟上线,同时花数月时间手动标注数据;或者使用合成评估——并承担其中的所有风险。

本文讨论的是第三条路如何正确走通。合成评估冷启动是可行的,但前提是你要理解它无法检测什么,并从一开始就围绕这些盲点进行设计。