为什么推荐系统还在靠静态打分?
大多数推荐框架把候选项塞进固定的向量空间,再用同一套打分函数排序。这种做法在候选池不断扩张、偏好不断漂移时,往往只能靠重训练来缓解,成本高、反应慢。

QD-Rec 的核心循环:bandit → LLM 变异 → niche 竞争
项目把推荐单位拆成 候选(公司、顾客、论文)与 假设(书面理由),然后跑三步循环:
bandit 选候选
用多臂老虎机策略在现有档案里挑出最值得探索的候选,避免盲目遍历。
LLM 变异与交叉
把选中的候选喂给 proposer(默认 openai/gpt-6-luna),让模型写出新的推荐理由,或把两条理由杂交出第三条。
niche 竞争与收录
生成的假设形成新的 niche,若档案里没有相似 niche 就直接入库;否则与最相似的旧 niche 进行一次 grader(默认同模型)打分的 1v1,赢者留档。
三大实验域的设计逻辑
论文在三个完全不同的场景各跑 1,000 轮生成-评估:
- 并购(M&A):用 2024‑08 LSEG 数据,约 6,300 家美国公司,测试能否挖掘潜在收购对象;
- 客户定位:1 万份虚构加州客户画像,考察对长尾偏好的覆盖;
- 论文推荐:ICLR 2026、ICML 2026、NeurIPS 2025 共约 17,500 篇,验证学术检索的多样性。
实验配置里 proposer=claude-sonnet-5、grader=gpt-5.6-terra,开源仓库默认走 OpenRouter(proposer/judge = openai/gpt-6-luna,embedding = text-embedding-3-small)。结论只写“多数设置下 QD-Rec 平均分更高、archive 更大”,不再给百分比头条。
跑起来要准备什么
环境要求 Python 3.10+、uv 包管理器,以及一个 OPENROUTER_API_KEY。M&A 真实数据需要付费 LSEG 订阅,其余实验配置与数据说明见论文与仓库 README。
不适合的场景
如果你只需要固定候选池的一次性排序、且没有持续探索新假设的预算,直接用传统向量检索更省事。QD-Rec 的优势在于“开放式、持续进化”,不在静态榜单上争毫秒。
获取与引用
官方公告:sakana.ai/qd-rec/;GitHub:SakanaAI/QD-Rec(Apache‑2.0);论文:arXiv:2610.23470。技术细节另见 技术文章。
实测预算提醒:论文里 proposer 用的是 claude-sonnet-5、grader 是 gpt-5.6-terra,开源仓库(Apache-2.0 协议)默认走 OpenRouter 上的 openai/gpt-6-luna,每一轮都要调模型生成与打分,一千轮跑下来 token 开销不小,动手前先给 OpenRouter 账户备足额度。