先看一个错误答案是怎么出现的

假设有一个虚构的动作游戏,Boss“灰烬回廊守门人”在第二阶段会释放一个范围招式。旧版本里,玩家往左侧翻滚就能躲开;上一次更新后,招式的判定改成了“先向左扩散再回收”,往左翻滚反而会被吃满。一个玩家在更新后问模型:“守门人第二阶段的火圈怎么躲?”

如果模型只靠训练时学到的内容作答,它很可能回答“向左翻滚即可”。这个答案语法通顺、步骤具体,玩家没有理由怀疑,按它去打连续失败,还会以为是自己操作有问题。错误没有出在语言能力上,而出在“事实从哪里来”这件事上。

把这次出错拆开看,链条大致是:玩家提问→模型在参数记忆里找最像的片段→拼出一段流畅的回答→玩家照做。整个过程没有任何一步去核对“现在的游戏到底是什么样”。爱游戏AI处理攻略问答,最先要改的就是这条链条,而不是让模型“再学一遍”。

模型记忆的三种失败

过时:记住的是某个时间点

模型的知识停在训练数据截止的时刻,而游戏的数值、掉落、任务条件在持续变化。上面的火圈就是典型例子。更麻烦的是,旧攻略留存得更久、转载得更多,模型“见得多”的恰恰是过时版本。

张冠李戴:把相似的东西混在一起

游戏里大量实体长得像:同名任务出现在不同地图,同一件装备有“普通版”和“强化版”,两个Boss共用相似的招式名。模型靠语义相似性回忆,很容易把A的条件安到B身上。比如把“需要灰烬钥匙”的条件,从山道那条支线嫁接到了主线关卡上。关于同名任务如何先判断版本、地图和阶段,可以参考同名任务必须先判断版本、地图和任务阶段这篇的讨论。

编造:没有答案时也要给一个答案

当玩家问到一个很冷门的细节,比如“第三个隐藏宝箱里是什么”,而模型记忆里根本没有可靠信息时,语言模型的生成机制会倾向于补全出一个“看起来合理”的内容。它不会自然地停下来说“我不确定”。这类错误最难察觉,因为没有旧版本可以对照,它只是凭空多出了一个宝箱。

三种失败的共同点是:模型无法区分“我记得”和“现在确实如此”。因此解决方向不是把模型训练得更大,而是给它一个可以查证的外部事实来源。

检索和图谱各负责什么

外部事实来源通常有两类,它们擅长的问题不同。

问题类型 更适合的来源原因
“第二阶段的招式描述是什么” 文本检索(RAG,检索增强生成) 答案是一段说明性文字,需要按语义找到最相关的条目
“拿到这件装备要先完成哪些任务” 知识图谱答案是关系链:装备、材料、任务、区域之间的依赖
“这个数值在哪个版本改过”带版本字段的数据表 需要精确匹配,而不是相似匹配

文本检索适合找“说法”,图谱适合找“关系”,版本化的数据适合查“精确条件”。爱游戏的做法是让大模型负责两头:入口处理解玩家到底在问什么,出口处把取回的证据组织成人能读懂的步骤。中间的事实,由检索和知识图谱里可查询的实体与关系提供。

图谱和检索本身也会错:缺边、错边、重复条目都会把错误证据送到模型面前。所以证据取回以后,还要过一道筛选:版本不匹配的条目降权或剔除,相互矛盾的条目要标出来,而不是让模型“自己挑一个”。

答案要带来源和版本

有了检索,答案的形态也要变。一个可核对的攻略答案至少应包含三样东西:结论本身、它依据的条目来源、这些条目适用的游戏版本与内容日期。回到守门人的例子,更合理的输出是:

结论:第二阶段火圈先向左扩散再回收,建议起手向前贴身翻滚。
依据:Boss招式条目(内容日期:更新后)
适用版本:当前版本
提示:若你的游戏未更新,旧版本的躲法不同

这样做有两个用处。第一,玩家可以自己核对,发现不一致时有地方反馈。第二,当检索取回的条目版本和玩家当前版本不一致时,系统不需要装作确定,可以明确告诉玩家“这条内容来自旧版本”。对于检索不到任何可靠条目的问题,正确的行为是承认没有依据,而不是补一个编出来的答案。

缓存与更新:事实会变,所以缓存要跟着版本走

热门问题的答案通常会缓存。但缓存的键如果只是“问题文本”,游戏更新后同一个问题会继续返回旧答案,等于把过时错误固定下来。更稳妥的做法有两点:

  • 缓存键同时包含问题的规范化表达和内容版本,版本一变,旧缓存自然失效。
  • 知识库更新时,只让受影响的条目及其依赖的缓存失效,而不是全部清空,避免每次更新后响应突然变慢。

关于图谱在版本更新后如何保留旧装备、接入新任务而不整体失效,带时间维度的游戏图谱如何管理旧装备和新任务有更详细的展开。

怎样评测“答案是可靠的”

只用“读起来通顺”“玩家点赞”来评价攻略问答是不够的,错误答案往往也很通顺。我们倾向于把评测拆成几项,各自独立地判断:

  1. 事实一致性:答案中的每个具体断言,能不能在取回的证据里找到对应?
  2. 版本正确性:引用的条目,是否适用于提问时的游戏版本?
  3. 弃答能力:故意提出知识库里没有的问题,系统是否会承认没有依据,而不是编造?
  4. 歧义处理:面对同名任务、同名道具,系统是先追问,还是随便选一个?

其中“弃答能力”最容易被忽略,却最能暴露模型的编造倾向。构造评测集时,一部分问题应该刻意设计成“没有答案”或“答案随版本变化”,这是发现自信错误的必要办法。

边界也要说清:有依据不等于一定正确,知识库本身有错,模型只会忠实复述。所以爱游戏AI把玩家的“这个答案不对”反馈,直接连回条目的核对流程,让错误在源头被修正,而不是只在回答层面打补丁。