先把结论甩前面幻觉没法靠感觉不错来管得攒一套带标准答案的用例集每条按维度打分跑出一个能横向比较的数字。下面是我自己折腾出来的一套打分流程照着做就能落地。背景是这样。我们组用 RAG 接了一个内部知识库给客服用上线第二周就被投诉——它把7天无理由答成了15天文档里明明白白写的7天。当时我看日志,后台没报错,模型一脸自信,这种最坑。光靠人肉抽查根本兜不住,所以我决定把幻觉这事量化掉。第一步攒用例,别凭空想用例从哪来?我没编,直接扒了三个月的真实客服对话,挑出80条带明确事实答案的问题。每条记三样东西:question:用户原话gold:标准答案(从知识库原文里抠出来,精确到数字/日期/条款)context:这条问题对应的知识库片段80条不多,但够看出问题了。一开始我贪心想搞500条,后来发现标注标准答案太费人——光这80条我和同事对了一下午,争论算不算幻觉的边界。所以建议起步别贪,先跑通。第二步定打分维度幻觉不是非黑即白。我拆成四个维度,每条用例每个维度打0/1/2三档:维度含义0分1分2分事实一致答案和gold对不对得上编造/矛盾部分对完全一致上下文忠实有没有脱离context瞎发挥凭空捏造掺了外部信息严格基于context拒答合理不知道时敢不敢说不知道硬编含糊带过明确说查不到引用可溯答案能不能指回原文无来源来源模糊给出具体片段第三档引用可溯是后加的。第一版我没要,结果发现模型答得对、但你不知道它凭啥对,出了错也甩不清责任,补上之后排查快多了。第三步自动打分 人工兜底80条×4维度320个格子,手填会疯。我用一个裁判模型批量打,prompt 大概长这样:JUDGE 你是评测员。对照gold和context给answer打分。 维度: 事实一致/上下文忠实/拒答合理/引用可溯 每个维度输出0/1/2和一句理由,JSON返回。 question: {q} gold: {gold} context: {ctx} answer: {ans} # 跑完导出 csv,人工只复核裁判给0分的那些裁判模型也会幻觉(套娃了属于是),所以凡是打0分的我都人工复核一遍,大概占15%,半小时搞定。全自动我不敢信。第四步算总分,横向比每条用例满分8,80条满分640。我把基线模型、换提示词后、加了重排序后三个版本各跑一遍:版本总分事实一致均分拒答合理均分基线4781.420.91改提示词5111.551.38加重排序5731.781.51最大的提升来自拒答合理那列——从0.91干到1.51。说白了之前的版本太爱不懂装懂,加了一句context里没有就说查不到的约束,7天/15天那种胡答直接少了一大半。一点真实感受这套跑下来最大的收获不是分数,是终于能拿数据跟人吵架了。以前说我觉得这版好点,虚;现在直接甩表,573比478,谁也别犟。顺带说个偷懒的事。我自己没有去搭一整套评测后台,而是用了那种零代码就能拖出一个智能体的工具,把读用例—调模型—裁判打分—回填表格配成一条流水线。不用写调度、不用管部署,拖几个节点连起来,空了改改prompt再重跑一轮。它干的就是这种重复杂活,真要做精细的统计分析还得自己导出来用pandas算,这点别指望它。但攒用例跑分这种活,省了我至少两天搭框架的时间。(裁判模型和被测模型的API我都走的讯飞星辰MaaS,现成调,没自己部署算力)幻觉这东西大概率消不干净,但能量化就能管。你们是怎么评的?评论区聊聊你踩过最离谱的一次模型胡说。