阅读原文
LLM Agent:PaSa
以 PaSa(Paper Search)为例,接下来将介绍由 LLM 驱动的先进的论文搜索智能体。PaSa 能够自主做出一系列决策,包括调用搜索工具、阅读论文以及选择相关参考文献,最终为复杂的学术查询获取全面且准确的结果。
学术论文搜索是一项极具挑战性的信息检索任务,它需要涉及长尾的专业知识,达到全面的综述级别的覆盖范围,并且具备处理细粒度查询的能力。例如,考虑这样一个查询:“哪些研究专注于使用基于价值的方法,特别是基于上置信界(UCB)算法的非平稳强化学习?” 虽然像谷歌学术(Google Scholar)这种搜索系统对于一般性的查询很有效,但在处理这些复杂查询时往往力不从心。因此,研究人员常常要花费大量时间来进行文献综述。
大语言模型(LLMs)的发展激发了众多利用大语言模型来增强信息检索的研究,特别是通过优化或重新组织搜索查询来提高检索质量。然而,在学术搜索中,这个过程远不止简单的检索。人类研究人员不仅会使用搜索工具,还会进行更深入的活动,比如阅读相关论文以及核查参考文献,以便进行全面且准确的文献综述。
PaSa,旨在模仿人类行为以实现全面而准确的学术论文搜索。如下图所示,PaSa 由两个大型语言模型(LLM)智能体组成:Crawler(爬虫)和 Selector(选择器)。

对于给定的用户查询,Crawler 可以通过利用搜索工具或从当前论文中提取引用来自主收集相关论文,并将这些论文添加到一个不断增长的论文队列中。Crawler 会迭代处理论文队列中的每一篇论文,通过导航参考文献网络来发现更多相关论文。Selector 则仔细阅读论文队列中的每一篇论文,以确定其是否满足用户查询的要求。PaSa 在 AGILE 框架(一种为 LLM 智能体设计的强化学习框架)中进行了优化。
有效的训练需要高质量的学术搜索数据。人类科学家已经创建了大量高质量的学术论文,其中包含对广泛研究主题的全面综述。PaSa 构建了一个合成但高质量的学术搜索数据集 AutoScholarQuery。
尽管 AutoScholarQuery 仅提供了查询和论文答案,而没有展示科学家收集论文的具体路径,但仍可以利用它进行强化学习训练以改进 PaSa。此外,PaSa 设计了一种新的会话级 PPO(近端策略优化)训练方法,以应对论文搜索任务的独特挑战:
- 奖励稀疏:AutoScholarQuery 中的论文是通过参考文献收集的,因此它只是实际合格论文集的一个较小子集
- 轨迹过长:Crawler 的完整轨迹可能涉及数百篇论文,这对于直接输入到 LLM 上下文来说过长
为了评估 PaSa,除了 AutoScholarQuery 的测试集外,还开发了基准数据集 RealScholarQuery。其包含 50个 真实世界的学术查询及其标注的相关论文,用于评估 PaSa 在真实场景中的表现。
该研究的主要贡献总结如下:
- PaSa:一个全面且准确的论文搜索智能体,它能够自主使用在线搜索工具、阅读整篇论文,以及在参考文献网络中进行导航
- 两个用于复杂学术搜索的高质量数据集:AutoScholarQuery、RealScholarQuery
- 尽管 PaSa 仅在合成数据上进行训练,但它在现实世界中取得了显著的性能表现。基于 70 亿参数大语言模型构建的 PaSa 显著优于所有基线模型
8.1、数据集
8.1.1、AutoScholarQuery
为了构建 AutoScholarQuery,收集了 ICLR 2023、ICML 2023、NeurIPS 2023、ACL 2024 以及 CVPR 2024 上发表的所有论文。对于每篇论文的 “相关工作” 部分,提示 GPT-4o 生成学术查询,这些查询的答案对应于 “相关工作” 部分中引用的参考文献。所使用的提示内容如下。
对于每个查询,仅保留可以在 arXiv 网站上检索到的论文,并使用 arXiv 编号作为数据集中文章的唯一标识符。AutoScholarQuery 采用源论文的发表日期作为查询日期。在训练和测试过程中,只考虑在查询日期之前发表的论文。
最终的 AutoScholarQuery 数据集在训练集、开发集和测试集中分别包含 33,551、1,000 和 1,000 个实例。每个实例由一个查询、相关的论文集以及查询日期组成,每个数据集中的查询均来自不同的源论文。下图展示了 AutoScholarQuery 中的一些示例。
为了评估 AutoScholarQuery 数据集的质量,抽取了 100 个 查询-论文(query-paper)对,并评估了每个查询以及相应论文的合理性和相关性。一个合格的查询应该是有意义且明确无误的,一篇合格的论文应该符合学术查询的要求。作者手动检查了每一对数据,确定 94.0% 的查询是合格的。在这些合格的查询中,93.7% 的查询所对应的论文被认为是相关且合适的。
8.1.2、RealScholarQuery
为了在更接近现实的场景中评估 PaSa 构建了真实学术查询数据集,这是一个由 50 个真实世界研究查询组成的测试数据集。在推出 PaSa 的演示版本后,邀请了几位人工智能研究人员使用该系统。从他们提供的查询中随机抽取了一部分查询,并手动过滤掉了过于宽泛的主题(例如,“多模态大语言模型”、“视频生成”)。最终,收集到了 50 个细粒度且贴近现实的查询。
对于每个查询,首先手动收集相关的论文。随后,使用多种方法来检索更多的论文,这些方法包括 PaSa、谷歌搜索、谷歌学术、ChatGPT(启用搜索功能的 GPT-4o),以及搭配 GPT-4o 进行查询改写的谷歌搜索。这些方法得到的结果被汇总到一个候选论文库中。最后,专业的注释人员会对每个查询的所有候选论文进行审查,挑选出那些符合该查询特定要求的论文,从而形成最终的相关论文集。
8.2、方法
8.2.1、概述
PaSa 系统由两个 LLM 智能体组成:Crawler 和 Selector。Crawler 读取用户的查询内容,生成多个搜索查询,并检索相关的论文。检索到的论文会被添加到一个论文队列中。Crawler 进一步处理论文队列中的每一篇论文,以识别值得进一步探索的关键参考文献,并将任何新的相关论文添加到论文列表中。Selector 对论文列表中的每一篇论文进行全面审查,以评估其是否满足用户的查询要求。
总之,Crawler 旨在最大限度地提高相关论文的召回率,而 Selector 则注重在识别符合用户需求的论文时的精确率。
8.2.2、Crawler
用强化学习(RL)的术语来说,Crawler 执行的是基于词元(token)级别的马尔可夫决策过程(MDP)。行动空间 A A A 对应于大语言模型的词表,其中每个词元都代表一个行动。LLM 充当策略模型。智能体的状态由当前 LLM 的上下文和论文队列来定义。Crawler 通过三个已注册的函数来运行,具体内容见下表。当一个行动与某个函数名称匹配时,相应的函数就会被执行,进而修改智能体的状态。

如下图所示,智能体首先接收用户的查询,将其纳入自身的上下文,并开始采取行动。如果生成的词元是 [search]
,大语言模型会继续生成一个搜索查询,然后智能体调用一个搜索工具来检索论文,这些论文随后会被添加到论文列表中。如果词元是 [Expand]
,LLM 会继续从当前上下文中的论文提取一个子章节名称。接下来,智能体使用解析工具提取该子章节中的所有引用论文,并将它们添加到论文列表中。如果标记是 [Stop]
,智能体就会将其上下文重置为用户查询以及论文队列中下一篇论文的信息。这些信息包括标题、摘要以及所有章节和子章节的提纲。

Crawler 的训练过程包括两个阶段。在第一阶段,为训练数据的一小部分生成轨迹,然后进行模仿学习。在第二阶段,应用强化学习。
模仿学习数据生成
PaSa 以会话为单位生成用于模仿学习的训练数据。会话有两种类型:搜索会话(从状态 S q S_q Sq 开始)和拓展会话(从状态 S q + p S_{q + p} Sq+p 开始)。
对于从 S q S_q Sq 开始的搜索会话,从 AutoScholarQuery 的训练集中采样用户查询,并提示 GPT-4o 生成相应的搜索查询。提示模板见下表。
会话轨迹的构建方式是,在每个查询前添加一个 [Search] 词元,将这些查询连接起来,并在末尾添加一个 [Stop] 词元,如下表所示。总共生成了 3011 条搜索会话轨迹。
对于从 S q + p S_{q + p} Sq+p 开始的拓展会话,使用谷歌搜索生成的查询。然后,从搜索结果中采样论文,并获得初始状态,该状态既包括查询也包括一篇论文。为了构建会话轨迹,检查论文的每个子部分。如果该子部分引用了自动学术查询数据集训练集中与该查询对应的至少一篇论文,则选择该子部分。否则,以 10% 的概率选择该子部分,以增加轨迹的多样性。将选定的部分填入上表中的模板,完成会话轨迹的构建。总共构建了 9978 条拓展会话轨迹。
下面将描述强化学习训练的具体实现细节。
a、奖励设计
PaSa 在 AutoScholarQuery 的训练集上进行强化学习训练,其中每个实例都由一个查询 q q q 和相应的论文集 P P P 组成。从一个查询 q q q 开始,Crawler 生成一个轨迹 τ = ( s 1 , a 1 , ⋯ , s T , a T ) \tau = (s_1, a_1, \cdots, s_T, a_T) τ=(s1,a1,⋯,sT,aT) 。在每个时间步 t t t ,将当前的论文队列记为 Q t Q_t Qt 。在采取行动 a t a_t at 后,Crawler 将一组新的论文 ( p 1 , p 2 , ⋯ , p n t ) (p_1, p_2, \cdots, p_{n_t}) (p1,p2,⋯,pnt) 添加到论文队列中。如果 a t = [ S t o p ] a_t = [Stop] at=[Stop] ,则这组论文为空。
在状态 s t s_t st 下执行行动 a t a_t at 的奖励定义为:
r ( s t , a t ) = α × ∑ i = 1 n t I ( q , p i , t ) − c ( a t ) r(s_t, a_t) = \alpha \times \sum_{i = 1}^{n_t} \mathbb{I}(q, p_i, t) - c(a_t) r(st,at)=α×i=1∑ntI(q,pi,t)−c(at)
其中,如果 p i p_i pi 与查询 q q q 匹配且不在 Q t Q_t Qt 中,则 I ( q , p i , t ) = 1 \mathbb{I}(q, p_i, t) = 1 I(q,pi,t)=1 ,否则 I ( q , p i , t ) = 0 \mathbb{I}(q, p_i, t) = 0 I(q,pi,t)=0 。这里, α \alpha α 是奖励系数, c ( a t ) c(a_t) c(at) 是行动 a t a_t at 的成本。
指示函数 I ( q , p i , t ) \mathbb{I}(q, p_i, t) I(q,pi,t) 可以通过检查 p i p_i pi 是否属于 P − Q t P - Q_t P−Qt 来确定。然而,需要注意的是,AutoScholarQuery 数据集可能只包含真实论文集的一个子集,因为参考文献通常只强调有限数量的关键引用。如果 Crawler 仅仅根据与 AutoScholarQuery 数据集中论文的匹配情况来获得奖励,这可能会导致训练过程中的奖励稀疏问题。为了缓解这个问题,将 Selector 作为 Crawler 的辅助奖励模型。修正后的 I ( q , p i , t ) \mathbb{I}(q, p_i, t) I(q,pi,t) 定义为:
I ( q , p i , t ) = { 1 , if( Selector ( q , p i ) = 1 or p i ∈ P )and p i ∉ Q t 0 , otherwise \mathbb{I}(q, p_i, t) = \begin{cases} 1, & \text{if($\text{Selector}(q, p_i) = 1$ or $p_i \in P$ )and $p_i \notin Q_t$ } \\ 0, & \text{otherwise} \end{cases} I(q,pi,t)={1,0,if(Selector(q,pi)=1 or pi∈P )and pi∈/Qt otherwise
这里,如果 Selector 判定论文 p i p_i pi 符合查询 q q q ,则 Selector ( q , p i ) = 1 \text{Selector}(q, p_i) = 1 Selector(q,pi)=1 ,否则 Selector ( q , p i ) = 0 \text{Selector}(q, p_i) = 0 Selector(q,pi)=0 。
b、强化学习训练
使用强化学习训练 Crawler 的一个关键挑战是,对于给定的查询,采样一个完整的轨迹需要花费大量时间。这是因为每个 [Search] 或 [Expand] 行动都会向论文列表中添加多篇论文,导致最终的论文队列中可能有数百甚至数千篇论文。
为了解决这个问题,将一个会话(session)定义为一个子轨迹,从一个会话的初始状态开始,以 [Stop] 行动结束。如此确定了两种类型的会话初始状态: S q S_q Sq ,只包含一个查询;以及 S q + p S_{q + p} Sq+p ,由一个查询和一篇论文组成。
形式上,将 Crawler 建模为一个策略 π θ ( a t ∣ s t ) \pi_{\theta}(a_t \mid s_t) πθ(at∣st) 。将整个轨迹 τ \tau τ 划分为一系列的会话: ( τ t 1 : t 2 − 1 , τ t 2 : t 3 − 1 , ⋯ ) (\tau_{t_1:t_2 - 1}, \tau_{t_2:t_3 - 1}, \cdots) (τt1:t2−1,τt2:t3−1,⋯) 。
每个会话是 τ t i : t i + 1 − 1 = ( s t i , a t i , ⋯ , s t i + 1 − 1 , a t i + 1 − 1 ) \tau_{t_i:t_{i + 1} - 1} = (s_{t_i}, a_{t_i}, \cdots, s_{t_{i + 1} - 1}, a_{t_{i + 1} - 1}) τti:ti+1−1=(sti,ati,⋯,sti+1−1,ati+1−1) ,其中初始状态 s t i s_{t_i} sti 要么属于 S q S_q Sq 类型,要么属于 S q + p S_{q + p} Sq+p 类型,并且最终行动 a t i + 1 − 1 a_{t_{i + 1} - 1} ati+1−1 是 [STOP]。
从这些会话初始状态中采样这样一个子轨迹在计算上是高效的。在 PPO 训练期间,在时间步 t ∈ [ t i , t i + 1 ) t \in [t_i, t_{i + 1}) t∈[ti,ti+1) ,使用蒙特卡罗采样来估计会话中的回报:
R ^ t = ∑ k = 0 t i + 1 − 1 − t γ 0 k [ r ( s t + k , a t + k ) + γ 1 ∑ j = 1 n t + k V ^ ϕ ( S q + p j ) − β ⋅ log π θ ( a t ∣ s t ) π s f t ( a t ∣ s t ) ] \hat{R}_t = \sum_{k = 0}^{t_{i + 1} - 1 - t} \gamma_0^k \left[ r(s_{t + k}, a_{t + k}) + \gamma_1 \sum_{j = 1}^{n_{t + k}} \hat{V}_{\phi}(S_{q + p_j}) - \beta \cdot \log \frac{\pi_{\theta}(a_t|s_t)}{\pi_{sft}(a_t|s_t)} \right] R^t=k=0∑ti+1−1−tγ0k[r(st+k,at+k)+γ1j=1∑nt+kV^ϕ(Sq+pj)−β⋅logπsft(at∣st)πθ(at∣st)]
这里, γ 0 \gamma_0 γ0 是会话内的折扣因子, γ 1 \gamma_1 γ1 是跨会话的折扣因子。 V ^ ϕ ( ⋅ ) \hat{V}_{\phi}(\cdot) V^ϕ(⋅) 是用于近似状态值的价值函数模型。在执行 a t + k a_{t + k} at+k 后,论文队列会更新,以包含新找到的论文 ( p 1 , p 2 , ⋯ , p n t + k ) (p_1, p_2, \cdots, p_{n_{t + k}}) (p1,p2,⋯,pnt+k) 。由于 Crawler 随后会启动新的会话来处理这些额外的论文,它们相关的未来奖励应该纳入到回报估计中。
此外,在每个词元上引入一个从学习到的策略 π θ \pi_{\theta} πθ 到通过模仿学习得到的初始策略 π s f t \pi_{sft} πsft 的每个词元的 KL 散度惩罚项,以减轻过度优化问题。这个项由系数 β \beta β 进行缩放。
然后,优势函数可以近似为:
A ^ ( s t , a t ) = R ^ t − V ^ ϕ ( s t ) \hat{A}(s_t, a_t) = \hat{R}_t - \hat{V}_{\phi}(s_t) A^(st,at)=R^t−V^ϕ(st)
最后,策略目标和价值目标可以分别表示为:
L p o l i c y ( θ ) = E τ ′ ∼ π θ o l d [ min ( π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ ( s t , a t ) , clip ( π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) , 1 − ϵ , 1 + ϵ ) A ^ ( s t , a t ) ) ] \mathcal{L}_{policy}(\theta) = \mathbb{E}_{\tau' \sim \pi_{\theta}^{old}} \left[ \min \left( \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta}^{old}(a_t|s_t)} \hat{A}(s_t, a_t), \text{clip} \left( \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta}^{old}(a_t|s_t)}, 1 - \epsilon, 1 + \epsilon \right) \hat{A}(s_t, a_t) \right) \right] Lpolicy(θ)=Eτ′∼πθold[min(πθold(at∣st)πθ(at∣st)A^(st,at),clip(πθold(at∣st)πθ(at∣st),1−ϵ,1+ϵ)A^(st,at))]
和
L v a l u e ( ϕ ) = E τ ′ ∼ π θ o l d [ max ( ( R ^ t − V ^ ϕ ( s t ) ) 2 , ( R ^ t − V ^ ϕ c l i p ( s t ) ) 2 ) ] \mathcal{L}_{value}(\phi) = \mathbb{E}_{\tau' \sim \pi_{\theta}^{old}} \left[ \max \left( (\hat{R}_t - \hat{V}_{\phi}(s_t))^2, (\hat{R}_t - \hat{V}_{\phi}^{clip}(s_t))^2 \right) \right] Lvalue(ϕ)=Eτ′∼πθold[max((R^t−V^ϕ(st))2,(R^t−V^ϕclip(st))2)]
其中,
V ^ ϕ c l i p ( s t ) = clip ( V ^ ϕ ( s t ) , V ϕ o l d ( s t ) − ϵ , V ϕ o l d ( s t ) + ϵ ) \hat{V}_{\phi}^{clip}(s_t) = \text{clip} \left( \hat{V}_{\phi}(s_t), V_{\phi}^{old}(s_t) - \epsilon, V_{\phi}^{old}(s_t) + \epsilon \right) V^ϕclip(st)=clip(V^ϕ(st),Vϕold(st)−ϵ,Vϕold(st)+ϵ)
这里, π θ o l d \pi_{\theta}^{old} πθold 和 V ϕ o l d V_{\phi}^{old} Vϕold 用于采样, τ ′ \tau' τ′ 是会话轨迹。然后将这些组合成统一的强化学习损失:
L R L ( θ , ϕ ) = L p o l i c y ( θ ) + η ⋅ L v a l u e ( ϕ ) \mathcal{L}_{RL}(\theta, \phi) = \mathcal{L}_{policy}(\theta) + \eta \cdot \mathcal{L}_{value}(\phi) LRL(θ,ϕ)=Lpolicy(θ)+η⋅Lvalue(ϕ)
其中 η \eta η 是价值目标的系数。
8.2.3、Selector
Selector 接受两个输入:一个学术查询和一篇研究论文(包括其标题和摘要),生成两个输出:
- 一个单一的决策词元 d d d,取值为 “True” 或 “False”,表示该论文是否满足查询要求
- 一个理由 r = ( r 1 , r 2 , ⋯ , r m ) r = (r_1, r_2, \cdots, r_m) r=(r1,r2,⋯,rm),包含 m m m 个词元,用于支持这一决策。这个理由有两个作用:
- 通过联合训练模型来生成决策和解释,从而提高决策的准确性
- 在 PaSa 的应用中提供推理依据,进而增强用户的信任度
为了提高 Crawler 的训练效率,决策词元会在理由之前给出,这使得 Selector 在 Crawler 的训练过程中可以充当一个单词元奖励模型。此外,决策词元的词元概率可用于对搜索结果进行排序。决策和理由的顺序并不影响选择智能体的性能。
PaSa 通过进行模仿学习来优化 Selector。训练数据的收集和训练细节如下。
选择智能体的实现细节
首先从 AutoScholarQuery 的训练集中采样用户查询。对于 AutoScholarQuery 训练集中的每个用户查询及其对应的一篇论文,提示 GPT-4o 生成一个决策词元以及理由(提示内容见下表)。
剔除那些决策词元为 “False” 的数据,因为这与 AutoScholarQuery 的标签相矛盾。剩余的数据将作为正样本 <用户查询,论文> 对保留下来。
接下来,使用基于 GPT-4o 的 PaSa-GPT-4o 模拟部分论文搜索过程。在这个模拟中,每篇论文都有 50% 的概率被添加到论文队列中。如果某篇论文没有被 GPT-4o 选中,并且也不在 AutoScholarQuery 的训练集中,那么对应的 <用户查询,论文> 对将被标记为负样本。
最终的训练数据集由 19,812 个 <用户查询,论文> 对组成,每个对都带有由 GPT-4o 生成的决策词元以及理由,这些数据对均取自 AutoScholarQuery 训练集中的 9000 个实例。
论文选择提示
下表展示了用于 PaSa 的 Selector 和 GPT-4o 判断一篇论文是否符合用户查询要求的提示内容。
下表呈现了用于与 GPT-4o 配合自动生成 AutoScholarQuery 的提示模板。对于每篇论文,提取其 “相关工作” 部分,将其输入到 GPT-4o 中,并使用该提示从 “相关工作” 部分中提取学术查询及其相应的论文答案。
参考文献
- PaSa: An LLM Agent for Comprehensive Academic Paper Search