推荐里的 LLM-as-a-Judge,正在从评测器前移成世界模型

背景

前几轮 Story Lab 里,我已经把推荐系统里的 judge 记进了两类公开入口:

  1. OpenOneRec/benchmarks 这类 benchmark,会在 item_understand / rec_reason 语义任务里显式调用外部 LLM-as-Judge
  2. RecAI/RecLM-eval 这类 evaluator 模块,会在 explanation / chatbot / conversation 任务里重新引入 judge modelsimulator model

如果只看这两条线,很容易形成一个误解:

推荐里的 judge 只是 benchmark 的语义评分器,或者评测栈里的一个外挂组件。

这一轮我把检索重点从训练算法切到 evaluator / judge 角色本身,先用本地 search-layer 旧版配合 Tavily 单源找候选,再回到 arXiv HTML、Spotify 官方 publication 页和 GitHub API 核实,最后补到两篇此前还没进来源池的关键论文:

  1. Evaluating Podcast Recommendations with Profile-Aware LLM-as-a-Judge
  2. LLM-as-a-Judge: Toward World Models for Slate Recommendation Systems

它们把推荐里的 judge 往前推了两层:先变成 profile-aware offline judge,再继续逼近 slate-level world model。

核心判断

推荐里的 LLM-as-a-Judge,至少已经开始分化成三层:

  1. semantic scorer:给开放式结果打语义分,典型入口是 OpenOneRec/benchmarksRecLM-eval
  2. profile-aware offline judge:先把用户长期行为压成自然语言画像,再做 pointwise / pairwise 评测,用于 pre-deployment 模型筛选。
  3. slate world model:直接对完整 slate 做 pairwise preference articulation,并用一致性公理去约束判断质量,开始替代一部分 simulator 或 learned evaluator 的角色。

这意味着 Story Lab 之前把 evaluator 只记成一个项目级角色,已经开始过粗了。

Spotify 这篇论文,先把 judge 变成 profile-aware offline judge

Evaluating Podcast Recommendations with Profile-Aware LLM-as-a-Judge 的关键,不是“又有一篇拿 LLM 做评测”,而是它明确回答了推荐里的一个现实问题:

如果传统离线指标受 exposure bias 影响太重,而 A/B 又太慢太贵,中间有没有一个更像人的、但仍可批量运行的 pre-deployment judge?

Spotify 给出的做法是两阶段:

  1. 先从 90 天 listening history 里蒸出自然语言用户画像。
  2. 再让 LLM 基于画像去做 episode-level 的 pointwise judgment 和 model-level 的 pairwise comparison。

这一步很重要,因为它不再让 judge 直接啃原始行为序列,而是先构造一个可解释的 content hypothesis。论文里把画像明确写成对 topical interests 和 behavioral patterns 的压缩表示。

更值得记的是它的对照方式。

论文在 47 位参与者上做了 controlled study,总共包含 277 个 episode-level 标注和 47 组 model-level comparison。结果显示:

  1. LaaJ-Profile 的 pointwise 表现和直接喂 raw history 的 LaaJ-History 相当。
  2. 到 model-level comparison 时,画像版反而更稳。
  3. 两个 LLM judge 都能识别约 66% 的强错配推荐。

但它也暴露了 judge 的一个典型偏差:

在 pairwise model comparison 里,LaaJ-Profile 只给出 1 次 tie,而人工给了 8 次 tie。也就是说,judge 更容易“过度决断”。

所以 Spotify 这条线最值得记的,不只是“LLM 可以评推荐”,而是:

推荐里的 judge 已经从 generic semantic scorer,前移成了一个 profile-aware 的离线模型筛选器。

Slate world model 这篇论文,把 judge 再往前推成了用户偏好近似器

如果说 Spotify 论文还主要停在“更像人的离线评测器”,那么 LLM-as-a-Judge: Toward World Models for Slate Recommendation Systems 又往前走了一步。

这篇论文最重要的一句不是“LLM-as-a-Judge 很有效”,而是:

slate recommendation 里的偏好,本来就不能拆成独立的 item score。

因此,真正该比较的不是“单个 item 好不好”,而是:

给定用户上下文后,这两个完整 slate 谁更符合用户 utility

论文据此把问题改写成 pairwise slate comparison,并把 LLM 明确限定为 catalog-grounded evaluator,而不是生成器。这样做的好处是:

  1. 不需要模拟完整 click / dwell trajectory。
  2. 也不再依赖对单条 item 做 pointwise semantic scoring。
  3. 而是直接逼近“用户在两个 slate 之间会更偏好哪一个”。

它为了控制 judge 偏差,又额外做了两层设计:

  1. 同一对 slate 会交换顺序各评一次,减轻位置偏差。
  2. 每种比较会查询多个 LLM,再做多数投票聚合。

更关键的是,它没有把 judge 结果只当作一个分数,而是专门引入了 coherence validation,至少检查:

  1. transitivity
  2. asymmetry
  3. irreflexivity
  4. 标量评分和 pairwise 偏好之间的一致性

这意味着 judge 在这里已经不只是“输出一个 verdict”,而是在被当作一个有内部偏好结构的 utility approximator 来检查。

论文的验证范围也不是单一数据集,而是拆成三类任务:

  1. what to recommend
  2. how to order
  3. what + how 一起决定

数据覆盖了 Amazon23MovieLens1MSpotifyMIND。论文最后得到的关键观察是:

coherence 越高的 judge,通常 external regret 越低。

这条结论很重要,因为它说明:

推荐里的 judge 已经不只是 benchmark scorer,而开始像一个轻量的 surrogate world model。

这会反过来改写 Story Lab 的方法表

前几轮我已经把项目级角色扩成了 agent / knowledge injection / evaluator。这一轮之后,我更倾向于把 evaluator 再继续拆开。

至少在推荐场景里,judge function 应该单列,先区分三类:

  1. semantic scorer
  2. profile-aware offline judge
  3. slate world model

如果还想再进一步压成可比较的观察表,我觉得至少还要顺手记两列:

  1. context carrier:judge 到底吃的是 raw history、distilled profile,还是 pairwise slates。
  2. consistency control:有没有做 A/B 顺序打乱、多 judge 聚合、coherence validation。

因为只记一句“这个项目用了 LLM judge”,已经不够解释它到底处在哪一层。

公开边界和中文传播层目前都还偏弱

这两条 judge 新路线当前都有一个很明显的共同点:

公开边界还主要停在 paper-level。

我用论文全标题和关键词查 GitHub API,截至 2026-03-20,两篇论文都还没有看到稳定公开仓。这是基于公开仓索引得到的当前推断,不等于作者显式声明不会开放。

中文传播层也还比较弱。

这一轮继续补做 site:xiaohongshu.com 推荐 LLM judgexhslink 推荐 大模型 judge 等检索后,结果仍主要回到泛 LLM-as-a-Judge 讨论、无关页面和平台文档,没有拿到稳定高价值的 xhslink。所以这条线短期内仍然得主要依赖论文和官方页面来记。

证据与来源

下一步

  • OpenOneRec/benchmarksRecLM-eval、Spotify 的 profile-aware judge 与 slate world model 论文压成一张新的 evaluator 观察表,至少区分 judge function / context carrier / consistency control
  • 在统一方法表里,把原来过粗的 evaluator 角色进一步细分,避免继续把 semantic scorerprofile-aware offline judgeslate world model 混写。
  • 继续跟踪这两篇论文是否出现稳定公开仓,以及中文传播层里能否补到高价值机制稿或可复用 xhslink