为什么这一级不一样
本级之前的内容都是在让大语言模型去*产出*某样东西——更锋利的提示、一条推理链、一个用来给答案接地的检索步骤。而这最后一篇要回答的,是决定一切能否上线的问题:*输出到底好不好,出错时又会怎样?*这听起来不如花式提示那么炫,却是真实系统的生死所在。让你惊艳一次的演示不是产品;产品是那个你能在第一万次、你本人从未亲眼读过的查询上依然信任的东西。
有两件事让评估生成式输出格外困难。第一,正确答案往往不止一个——一段摘要、一封邮件、一处代码修复,可以以十几种不同的形态都很出色,所以你给分类器用的那个干脆的准确率数字在这里不适用。第二,模型即便错了也很流畅:它会用与说真话时一样温和的语气,自信满满地说出一句假话。因此我们需要新工具——为开放式文本量身打造的评估,以及一开始就假定模型偶尔会出格、并仍能把它接住的护栏。
评估:度量开放式输出
评估(eval)不过是对模型质量的一次可重复测试:一组固定的输入、一套给输出打分的方法,以及一个你可以长期盯着看的数字。这门功夫和你早先学到的基准测评、以及基线的价值是同一回事——无法度量的东西就无法改进。生成式文本的难点在于*打分*,而这里有三类诚实的做法,每一类都有真实的局限。
- 基于参考答案的指标。 用BLEU、ROUGE或嵌入相似度等度量,把输出与标准答案对比。便宜又自动——但它们奖励表面重合,于是一个正确的改写可能得分很低,一个流畅的错误答案反而得分很高。
- LLM 充当评委。 让一个强模型按评分量表给输出打分(「它忠于原文吗?切题吗?」)。它能扩展到开放式文本——但评委本身也有偏好(偏爱更长、更自信的答案),还可能被钻空子,所以要拿它和人工抽样核对。
- 人工评估。 由人来给输出打分或排序,有时通过两两对比的A/B 测试进行。在品味与安全上它是金标准——但它慢、贵、噪声大,所以你把它留给那些便宜方法判不了的情形。
无论你用哪种方法,你打造出的最有价值的东西都不是那个指标——而是评估集本身:一份精挑细选、真实、有难度、有代表性的输入集合,并标注好一个好答案该是什么样子。每当系统在生产中翻车,就把那个案例补进去;每个 bug 都变成一道永久的测试题。这与经典机器学习中留出测试集的直觉如出一辙,同样的警告也适用:要防止数据泄漏,因为一旦你的提示被悄悄调成专门通过自己的评估,那个数字就什么也不代表了。
幻觉:自信、流畅,却是错的
幻觉(hallucination)指的是模型把假的或没有依据的东西当作事实陈述出来——一条伪造的引用、一个虚构的 API、一个自信却错误的日期。人们很想把它当成一个待修补的 bug,但更诚实的看法是:它是这类模型工作方式所固有的。大语言模型是靠预测下一个词元训练出来的;它学到的是看似合理的文本*形状*,而不是一个经过核实的事实数据库。生成一句流畅、听上去很可能的句子,恰恰就是它的本职——而一句流畅的谎言,听上去和一句流畅的事实一样可能。
那要怎么对付它?你能做的是减少它,而非消灭它。最大的一根杠杆,是用检索增强生成把模型接地到真实来源上,然后*核查答案是否真的能追溯回那些来源*——这是一项忠实度评估,而不只是凭感觉。你可以调低温度,让模型咬定它最可能(通常也最稳妥)的续写,而不是跑去发挥创意。你还可以让模型给出引用、允许它说「我不知道」,或让它展开推理过程,好让审核者——无论是人还是程序——有东西可以对照核验。
护栏:在边界处拦下麻烦
护栏(guardrail)是一道围在模型*外面*的检查——设在输入端或输出端,而不是在模型内部。可以这样设想一条工厂流水线:模型是工人,护栏是上下游的质检员。在入口处,你筛查提示注入(用户或一份被检索到的文档试图覆盖你的系统提示)、跑题请求,或套取机密的企图。在出口处,你在回复抵达用户之前先检查它:它会泄露个人数据吗?含有不允许的内容吗?破坏了必需的格式吗?
user input │ ▼ [ input guardrail ] ──blocked──► refuse / safe reply │ ok ▼ LLM ◄── system prompt + retrieved context │ ▼ [ output guardrail ] ──flagged──► block / redact / escalate │ ok ▼ response to user
护栏是分层的,便宜的那层先上。简单规则——正则表达式、黑名单、一个 JSON schema 校验器、一个长度上限——以几乎为零的成本和延迟拦下出人意料的一大部分。它们之上是用来标记有毒内容或自伤内容的小型分类器与审核模型。再往上,一次额外的 LLM 调用可以判断规则漏掉的细微之处。这里的功夫在于排序:让又快又确定的检查跑在又慢又模糊的检查之前——并记住每一道护栏都会增加延迟和推理成本,所以要把这份预算花在风险真正所在之处。
回路中的人
没有任何评估、任何护栏是完美的,所以安全的最后一层是人。人在回路这一模式让一个人留在决策路径上——审阅、批准或纠正——尤其是在错误答案代价高昂或不可逆的地方。「要多少人」是一个旋钮,而不是一个开关。一次用完即弃的头脑风暴一个人都不需要;一封邮件草稿想在发送前被瞄一眼;一条医疗或法律建议、一笔超过阈值的退款,或任何智能体在现实世界里做出的动作,都应停下来等一个人来批准。让摩擦力匹配风险。
人工审核也是系统随时间变好的途径。每一次纠正都是一个带标签的样本:把它喂回你的评估集、你的护栏规则,或者——如果某种模式足够庞大稳定——喂回你将用于微调的数据。这就闭合了你在整一级里一直在搭建的回路。提示与检索塑造输出;评估与护栏度量并约束它;人接住漏网之鱼,并教会系统「好」意味着什么。这正是把一个巧妙的演示,变成一个你真能交付、并愿意为之背书的东西,所需要的全部功夫。