← 返回资料站  /  AutoResearch
论文 文献调研

PaSa: An LLM Agent for Comprehensive Academic Paper Search

PaSa:用 RL 训练的学术论文检索 agent
一句话字节 Seed 用两个 Qwen2.5-7B(Crawler 负责搜索+沿引文扩展、Selector 负责精筛)加 session 级 PPO 训出的论文检索 agent,在真实查询集 RealScholarQuery 上 recall@20 比 Google+GPT-4o 高 37.78 个百分点;但第三方用开源代码复现的 recall 只有 0.26-0.32(论文报 0.61),作者承认线上 demo 依赖仓库里没有的工程 trick。

这是什么

复杂的学术检索(比如"有哪些工作分析了多模态模型的 scaling law")在 Google Scholar 上很难一次查全,研究者往往要多轮改写关键词、顺着引文网络人肉爬。PaSa 把这个流程做成了一个自主 agent:接到查询后自己生成多个搜索词调 Google、读回来的论文、决定展开哪些小节的参考文献继续爬,直到判断没必要再挖。

系统由两个 7B 模型组成:Crawler 追求查全(recall),在 token 级 MDP 里执行 [Search]/[Expand]/[Stop] 三种动作,把候选论文塞进 paper queue;Selector 追求查准(precision),逐篇读 title+abstract 判定是否满足查询,先输出 True/False 决策 token 再输出理由,这样它还能兼任 Crawler RL 训练的单 token reward model。

训练数据是合成的:用 GPT-4o 从 ICLR/ICML/NeurIPS/ACL/CVPR 论文的 related work 反向生成 35k 条细粒度查询(AutoScholarQuery),答案就是该段引用的论文。评测除了 AutoScholarQuery 测试集,还做了 50 条真实研究者查询、由专业标注员尽量穷举答案的 RealScholarQuery。论文中了 ACL 2025 main,代码、双模型权重和数据集都开源(Apache-2.0,GitHub 1.6k stars)。

PaSa 双 agent 架构:Crawler 读用户查询,自主选择 [Search](生成搜索词调 Google)、[Expand](展开某小节的引文)或 [Stop],所有收集到的论文进入 paper queue;Selector 逐篇对照查询判定 Select/Drop。Crawler 管查全,Selector 管查准。
PaSa 双 agent 架构:Crawler 读用户查询,自主选择 [Search](生成搜索词调 Google)、[Expand](展开某小节的引文)或 [Stop],所有收集到的论文进入 paper queue;Selector 逐篇对照查询判定 Select/Drop。Crawler 管查全,Selector 管查准。

机制与做法

Crawler:token 级 MDP + 三个动作

Crawler 的动作空间就是 LLM 词表,三个特殊 token 触发函数:[Search] 后接生成的搜索词,调 serper.dev 的 Google API(限定 site:arxiv.org 和查询日期之前);[Expand] 后接当前论文的某个小节名,把该小节引用的全部论文加入队列(全文和引文靠 ar5iv 解析);[Stop] 把上下文重置为用户查询+队列里的下一篇论文(title、abstract、章节目录)。整个爬取过程展开是一棵搜索树,推理时限制深度为 3。

一次真实查询(多模态模型 scaling law)的爬取过程展开成搜索树:根节点发出多个 [Search],对返回的每篇论文再决定 [Expand] 哪些小节或 [Stop],绿勾/红叉是 Selector 的判定。注意即使被 Selector 判 Drop 的论文(如 robotics 综述)仍可能被 Expand 出相关文献——这正是纯排序式搜索做不到的。
一次真实查询(多模态模型 scaling law)的爬取过程展开成搜索树:根节点发出多个 [Search],对返回的每篇论文再决定 [Expand] 哪些小节或 [Stop],绿勾/红叉是 Selector 的判定。注意即使被 Selector 判 Drop 的论文(如 robotics 综述)仍可能被 Expand 出相关文献——这正是纯排序式搜索做不到的。

RL:session 级 PPO + Selector 当 reward model

完整 trajectory 太长(一次查询最终队列可达上千篇论文),没法直接采样训练。论文把 trajectory 按 [Stop] 切成 session,每个 session 从"只有 query"或"query+一篇论文"两种初始状态开始,PPO 在 session 内做 Monte Carlo 回报估计,新入队论文的后续价值用 value model V(S_q+p) 折价(跨 session 折扣 γ1)记入回报,外加对 SFT 策略的 per-token KL 惩罚。

reward 是"每找到一篇新的相关论文得 α 分,每个动作扣固定 cost"。由于 AutoScholarQuery 的标注来自引文、天然不全,只按标注给分会导致奖励稀疏,所以额外用 Selector 判定为相关的论文也计分。消融显示这一项在 RealScholarQuery 上贡献 9.6 个百分点的 recall;调大 α 会让 agent 更激进(α 从 0.5 到 2.0,平均动作数从 176 涨到 786)。训练分两阶段:先在 12,989 条数据上模仿学习(轨迹由 GPT-4o 生成),再在 16k 条查询上 PPO,8 张 H100。

评测设定

对 Google 系 baseline 报 recall@20/50/100;对无排序的 agent 系 baseline(ChatGPT、GPT-o1、PaSa-GPT-4o)报最终结果的 precision/recall。PaSa-GPT-4o 是同框架换纯 prompt 的 GPT-4o,用来隔离 RL 训练的贡献。注意论文里的"surpasses by 37.78%"是绝对百分点差(0.5798 vs 0.2020),不是相对提升。

关键结果

实证核查

有水分方法和开源都是真的(ACL 2025 main,模型/数据/训练代码齐全),但论文指标用开源仓库跑不出来:多个第三方 issue 报告 recall 只有论文的一半以下,作者在 issue 里承认线上系统依赖未开源的工程后处理;仓库自 2025 年 5 月起基本停更,线上 demo 也被报不可用。
论文与 README 声称 PaSa-7b 在 RealScholarQuery 上 recall 0.6111,"Model, datasets, and code are available",暗示结果可用开源件复现。
issue #10 按仓库代码+官方权重在 RealScholarQuery 上只测出 crawler recall 0.2902、recall 0.2588;issue #45 在按作者建议加了 LLM 标题修正后也只到约 0.32;issue #31 同样报告达不到指标。三个复现 issue 均无最终解决,#45、#31 至今 open。
[Expand] 动作通过 ar5iv 解析引文来扩展论文,是 recall 的最大来源(消融中贡献 32 个点)。
作者在 issue #10 的回复中承认:ar5iv 解析出的引文 title "基本都是错误的",直接用会导致后续搜不到论文、recall 显著下降;pasa-agent.ai 线上版用 LLM 自动解析 title 做了后处理,"这主要是工程实现上的一些 trick,没有在代码仓库中体现"。即最关键组件的可用实现并未开源。
RealScholarQuery 是可长期使用的真实场景 benchmark。
issue #44 指出其 answer 里的 arXiv URL 已经陈旧;且该集只有 50 条查询、答案由标注员"尽量穷举",recall 分母本身不完备,论文 Limitations 也承认只覆盖 ML 领域。
提供在线服务 pasa-agent.ai 供直接使用。
issue #42(12 条评论)和 #49 报告线上服务搜不出结果/疑似宕机,均 open 无官方修复;仓库最后 push 是 2025-05-27,此后 51 个 issue 大多无人回应,项目实际处于停维护状态。
对比 Google/Google Scholar 大幅领先(recall@20 高 37.78%)。
数字属实但口径要注意:这是绝对百分点差,且 Google 系 baseline 是单次查询、无多轮爬取,而 PaSa 平均执行数百个动作(α=1.5 时 382 次 search/expand),比较的是"agent 流程 vs 单次搜索",不是同等成本下的检索质量。

与我们方向的关系

对 autoresearch 方向,PaSa 是"文献调研"这一环最完整的开源参照:Crawler+Selector 的查全/查准分工、把 Selector 复用为 RL reward model 缓解标注不全导致的奖励稀疏、以及 session 切分让长 trajectory PPO 可行,这三点设计都可以直接借鉴到我们自己的 research agent 训练里。AutoScholarQuery 的构造方法(从 related work 反向合成查询-答案对)也是低成本造检索训练数据的通用配方。

但如果想直接把它当组件用要小心:开源代码原样跑不出论文指标(引文解析这个关键环节缺工程后处理),线上服务已不稳定,paper_database 的构建代码也没给(issue #22)。更现实的用法是复用它的数据集和训练框架(魔改版 trl/transformers),检索基建换成 Semantic Scholar API 等更可靠的引文源自己搭。

阅读笔记

复现前必读 issue #10 的作者回复:ar5iv 引文 title 解析是坑,需自己加 LLM 修正;serper.dev 的 Google API key 需自备。训练侧依赖作者 fork 的 trl/transformers(hyc2026/trl、hyc2026/transformers),与上游版本不兼容。

材料清单

TeX 源码
已存档:Raw/pasa/source/
代码仓库github.com/bytedance/pasa
1653★ · 最近推送 2025-05-27
项目主页 / 报告pasa-agent.ai
数据集huggingface.co/datasets/CarlanLark/pasa-dataset
AutoScholarQuery 35k + RealScholarQuery 50 + SFT 数据 + 论文数据库
Selector 权重huggingface.co/bytedance-research/pasa-7b-selector
可单独当论文相关性判定/reward model 用
训练框架github.com/hyc2026/trl
作者魔改的 trl(含 session 级 PPO 与 search tool),配套 hyc2026/transformers
复现讨论github.com/bytedance/pasa/issues/10
作者解释开源代码与线上指标差距的关键 issue

同类条目