AutoResearchBench 把焦点推向 DOI:Research Agent 先交命中表

12 阅读5分钟

科研 Agent 最容易骗过人的地方,是拿一批看似相关的论文,把偏掉的方向写成一篇流畅综述。

先看一个模拟验收场景。你让 Agent 调研 “AI Agent in scientific discovery”。报告结构完整:自动化实验、假设生成、文献问答、代码执行,引用密集,语气克制。把候选文献池拉成 DOI 表后,问题露出来了:Google AI co-scientist 相关线索没有进前排,FutureHouse / PaperQA2 / Robin 这类系统论文和项目被归到相邻方向,反例论文缺席。这里的系统名只作为“应进入检索词表”的示例,不代表对任何产品或论文做真实测试。

AutoResearchBench 把复杂科学文献发现单独拿出来评测:给定研究问题,系统要找相关论文、排序、覆盖不同证据角色,再和预先构造的 gold set 对齐。读这类 benchmark,别只看总分,要看任务输入、gold set 来源、候选排序口径、证据覆盖统计方式。

图1:一份漂亮 Research Agent 报告旁边,放着红色标注的 DOI miss 表;示意图

图1:一份漂亮 Research Agent 报告旁边,放着红色标注的 DOI miss 表;示意图

先审候选池,再写综述

Research Agent 的第一张验收表,应该落在候选文献池。奠基论文漏掉,历史脉络会断;候选文献扎堆近两年,系统会把短期热点当成主线;只召回 review,方法细节会薄;失败案例缺席,研究路线会被写得过热。

工程上,把“感觉不对”拆成字段:query、DOI / OpenAlex ID / PMID、hit、rank、year、source type、evidence role、miss reason。字段很土,但方便复盘。

下面是一个模拟审计表。ID 均为占位符,不对应真实论文,也不代表真实跑分:

query_versionpaper_idyeartypeevidence rolehit@20rankmiss reason
q1MOCK_DOI_0012025system paperpositive evidenceyes7-
q1MOCK_OPENALEX_0022024literature QAmethod evidenceno68reranker 降权
q2MOCK_DOI_0032025biomedical agentfrontier evidenceno-query 未覆盖专名
q3MOCK_PMID_0042022negative studynegative evidenceno-只检索 review

做这张表时,超能文献 可以放在证据入口:用中文描述研究任务,经 PubMed / OpenAlex 检索,拿到 DOI、PMID、OpenAlex ID 等可追溯来源,再导出或整理进 CSV。它适合补候选池和 gold pool;结果仍需人工去重、核验 DOI/PMID、检查来源类型。涉及医疗 AI、临床试验、药物安全、病历、影像等方向时,模型输出只能用于证据入口、文献追踪和研究审计,不能写成诊断或治疗建议。

图2:任务问题 → query rewrite → OpenAlex/PubMed 候选池 → gold DOI pool 对齐 → recall@20 → 人工复核;示意图

图2:任务问题 → query rewrite → OpenAlex/PubMed 候选池 → gold DOI pool 对齐 → recall@20 → 人工复核;示意图

四个数,先跑起来

gold DOI pool 不能靠一个人拍脑袋。可执行做法是:用种子综述和顶会论文打底,做向前/向后引用追踪,让熟悉方向的人补漏,再放一组失败案例、质疑论文和限制性研究。一个只会搜索 “effective”“improve”“automation” 的 Agent,很容易给出过热判断。

  • recall@20:gold pool 中进入候选前 20 的比例,口径可写成 hit_gold_at_20 / all_gold,因为生成器通常只吃前排材料。
  • must-read miss rate:分母只放必读论文,比如奠基论文、标志性系统、近期高影响工作;分子是未进入前 20 的必读项。
  • year coverage:把年份分桶,例如 <=20182019-20212022-20232024+,检查每桶是否有 gold 命中和候选覆盖。
  • negative evidence recall:负证据池单独构造,包含失败实验、反证、限制性研究、临床无效或安全性警示论文;统计其中进入前 20 的比例。

最小实现可以先写成一个 30 行以内的 JSON schema:

{
  "task_id": "arb_mock_001",
  "question": "AI Agent in scientific discovery",
  "query_versions": [
    {
      "id": "q1",
      "text": "LLM agents for scientific discovery",
      "sources": ["OpenAlex", "PubMed"],
      "time_filter": "none"
    },
    {
      "id": "q2",
      "text": "AI co-scientist autonomous research agent",
      "sources": ["OpenAlex", "web"],
      "time_filter": "2020-2026"
    }
  ],
  "gold_pool": [
    {
      "paper_id": "MOCK_DOI_001",
      "role": "frontier_evidence",
      "required": true
    }
  ],
  "candidate_results": [
    {
      "paper_id": "MOCK_DOI_001",
      "query_id": "q1",
      "rank": 7,
      "hit_at_20": true,
      "miss_reason": null
    }
  ]
}

工程侧最容易被省掉的是检索日志。query rewrite 的每个版本、数据库原始返回、reranker 分数、去重规则、时间过滤、source 过滤,都要能回放。很多漏检来自细节:同义词没覆盖,机构名和系统名混用,论文题名与项目名不一致,缩写被当成普通词;也可能已经召回,却被 review 挤到第 80 位。没有日志,下次还会在同一个位置漏。

回到开头那个场景:Research Agent 的报告段落很顺,矛盾藏在 DOI 命中表里。query 没覆盖 AI co-scientist 这类专名,FutureHouse / PaperQA2 / Robin 被归到相邻方向后降权,反例论文没有进入前 20。生成器只能基于已有素材写作,候选池偏了,综述会把偏差写得更完整。

下一步可以很小:先选 50 个研究任务,作为人工复核成本可控的起步规模;每条任务配一个 gold DOI pool,导出候选池,记录 miss reason,计算 recall@20、must-read miss rate、year coverage 和 negative evidence recall。DOI 命中表过线后,再让 Research Agent 写综述、假设和研究路线。 作者:超能文献团队(suppr.wilddata.cn)