让 AI 推荐一款笔记本电脑,然后告诉它你需要更轻便一点的。如果系统将这条第二条消息视为一个独立的请求,你可能会得到一堆超极本。或者,你可能又会得到一堆游戏工作站,因为它从未意识到你因为第一批太重而拒绝了它们。之所以会这样,是因为许多 AI 系统仍然通过孤立地查看单个提示词来对响应进行排名。它们把每条消息都当作新搜索的开始,忽略了对话中正在进行的故事。

这种方法忽略了长对话中的细微差别。人类的对话是逐轮构建意义的。我们假设记忆、意图和偏好会延续下去。当 AI 未能做到这一点时,感觉就不像是在和助手交谈,而更像是在向一个每次点击后都会重置的搜索框投掷查询。要解决这个问题,意味着要改变我们对可能答案的排名方式。我们不应该问哪个响应符合这句话,而应该问:考虑到我们讨论过的一切,哪个响应在此时此刻最符合这个人。

两件事可以让这成为可能:个性化和历史记录。

为什么单轮排名会失效

传统的响应排名源于问答数据集。模型看到一个提示词,生成一组候选回复,然后排名器仅根据该提示词对每个回复进行评分。得分最高的候选者胜出。这对于孤立的事实有效,但对于持续性的工作却会失效。

想象一下用户正在规划旅行。在第一轮中,他们询问曼谷的经济型酒店。模型建议了一份靠近考山路的列表。用户回复道:“那些看起来很吵。我有孩子,所以我需要游泳池并且方便乘坐轻轨。”单轮排名器只能看到第二句话。它可能会返回一份散布在泰国各地的通用家庭度假村列表,而忽略了已经建立的具体约束条件:曼谷、预算有限、安静、有游泳池、靠近交通枢纽。

结果在技术上是符合主题的,但在实际应用中却毫无用处。用户不得不重复上下文。摩擦增加,信任度下降。

个性化:谁在提问

个性化意味着根据特定的用户偏好和数据量身定制答案。它回答了这样一个问题:这个人是谁?

这不仅仅是在问候语中插入一个名字。它意味着系统通过明确的个人资料或学习到的模式,了解用户喜欢如何获取信息。一个始终要求 Python 示例的开发者,即使其查询提到的是通用的编程任务,也应该看到 Python 代码示例,除非他们另有说明。一个上周询问过食谱的素食主义者,不应该需要提醒系统排除肉类。比起叙述性文字,更喜欢简洁要点的人应该得到要点。

具体信号可以包括自我报告的偏好、跨会话的历史行为,或者位置和设备类型等元数据。关键在于,这些信号应输入到排名阶段,而不仅仅是生成阶段。当对候选响应进行评分时,排名器应该提升那些与已知画像相符的答案。

例如,如果两个候选响应都正确回答了“我该如何备份照片?”,但一个建议使用云存储,另一个建议使用本地 NAS 驱动器,排名器应该知道这位特定用户之前表达过对离线所有权和隐私的兴趣。NAS 选项应该获得更高的评分。如果没有个性化,模型就像是在抛硬币。

历史记录:已经说了什么

历史记录意味着利用对话中的过去轮次来引导下一个响应。它回答了这样一个问题:我们已经确定了什么?

即使是简单的代词也需要历史记录。当用户说“把它变成蓝色”时,模型必须知道“它”指的是什么。这个指代存在于之前的轮次中。在更长的对话中,依赖关系会变得复杂。约束条件会不断累积。用户可能会拒绝一个选项、限定一个请求,或者引入一个新的目标,该目标...