搜索也该跟着进化:EvoDuet 把"查文献"变成了可优化的内循环

你有没有发现一个挺反直觉的事:现在这些 LLM 驱动的进化式搜索框架(FunSearch、OpenEvolve 那一挂),号称在"做科学发现",但它们其实是闭卷考试——能用的知识只有两样:模型参数里存的,和这次运行攒下的进化历史。一旦突破需要外部知识,比如"新版库的 API 怎么用"、"这个问题前人最好的构造长什么样",搜索就卡死了。

给它们塞个搜索工具不就完了?这篇论文的预实验告诉你:不行。直接在循环里挂个 Tavily,模型搜出来的 88.1% 的 URL 都是之前见过的,50 轮之后彻底停滞。工具给了,但模型不会"问问题"。

EvoDuet 的思路一句话讲清楚:把搜索查询也当成进化对象,和解(solution)一起做双层(bi-level)协同进化——外层循环进化解,内层循环进化查询,中间用一个"知识缺口门控"决定什么时候该搜、搜什么。在 21 个优化任务上,它把 OpenEvolve 的归一化发现增益(NDG)从 74.1% 推到 78.0%(GPT-5.6-Luna),更夸张的是 Gemini-3.8-Flash,从 61.3% 直接拉到 82.3%,并在 8 个任务上刷新了此前公开的最优分数。

我的判断:这不是一个"又多了个 agent 工具"的工程 patch,而是给进化搜索范式补了一块真正的短板——开放式知识获取。但它的局限也很诚实:弱模型(Qwen3.5-9B)用了反而更差。值不值得细读,取决于你关不关心 LLM 自动科研这条线。


📖 论文信息

  • 标题:EvoDuet: Bilevel Co-Evolution of Web Searching and Task Solving for Scientific Discovery
  • 作者:Young-Jun Lee, Jinheon Baek, Soyeong Jeong, Minki Kang, Seungyeon Jwa, Jonghyun Choi, Seungho Han, Dongyeop Kang
  • 链接:https://arxiv.org/abs/2609.40340 (arXiv:2609.40340,2026 年 9 月 30 日提交)
  • 项目页:https://open-galapagos.github.io/evoduet_project_page/
  • 致谢显示工作受韩国 IITP 基金和首尔大学 BK21 FOUR 项目支持

🎯 动机:外挂搜索工具为什么不 work

先说背景。LLM 驱动的进化搜索(evolutionary search scaffold)这两年出了不少硬成果:Erdős 最小重叠问题的新上界、GPU kernel 设计、单细胞 RNA-seq 去噪。套路都一样——LLM 当变异算子生成候选解,评估器打分,高分解留下来当下一轮的"亲本"。

问题在于这套循环是封闭的。论文把这个现象讲得很直白:现有框架往 solution loop 外面包的各种循环(比如 EvoX 的策略循环),知识来源都还是那两样——运行历史和参数知识。人类科学家遇到瓶颈会去查文献,查完产生新问题再去查,循环往复;模型不会。

作者管这个设计叫 Loop Packing——把多个优化循环像套娃一样包在一起。EvoDuet 的贡献就是在 solution loop 旁边塞了一个和它共同进化的 search loop。

Loop Packing 示意

图 1:Loop Packing 的图景——紫色是核心的解进化循环,EvoX 这类工作在旁边加了策略循环,而 EvoDuet 把搜索循环(蓝色)以双层协同进化的方式接了进来。右上角虚线的 Human Loop 是个留白:最终形态的科研智能体应该还有人参与。

在正式提出方法之前,作者先做了三个预实验(第 2 节),我觉得这部分甚至比方法本身更有信息量:

实验一:Oracle 文档确实有用,但收益不均。 在 31 个任务上,每轮直接喂"任务相关且有用的文档"(oracle 设定),Qwen3.5-9B 平均 NDG 涨了 10.3 个点,GPT-5.6-Luna 涨了 4.0 个点。差距好理解——GPT 在 16/31 个任务上本来就超过 95% NDG,没多少天花板可挖。但也有反例:oracle 文档在 Rosetta(天体轨道优化)上反而让两个模型分别掉了 9.0 和 23.3 个点。外部知识不是免费的午餐。

实验二:模型需要更多"出手次数"才能用好文档。 在 Sums/Diffs 任务上,每轮只生成 1 个候选时,喂 oracle 文档反而没用(14.8% vs 15.4%);每轮并行生成 8 个候选,NDG 从 25.8% 跳到 40.7%,涨了 14.9 个点。说实话这个结果让我有点意外——它暗示瓶颈不在"读不读得懂文档",而在"有没有足够多次机会把文档里的思路试出来"。

实验三:查询不进化,搜索等于白搜。 这是最扎心的一组数据。在 Denoising 任务上给 OpenEvolve 挂 Tavily 搜索工具(joint-level 设定,模型自己构造查询),100 轮里它搜了 99 轮、发了 185 个查询——看起来很勤奋。但返回的 URL 里 88.1% 是重复的,只有 85 个不同页面;50 轮后彻底不再进步,最终 held-out NDG 卡在 27.7%。对比之下 EvoDuet 用差不多的查询预算(201 个)拿到了 248 个不同 URL,NDG 干到 84.5%。

查询数量差不多,信息增量差了 2.9 倍。 这就是"会搜"和"瞎搜"的区别。


🧠 方法:外层进化解,内层进化查询

EvoDuet 把科学发现写成了一个双层优化问题:

\[x^{\star}=\argopt_{x\in\mathcal{X}}\mathcal{E}(x) \quad \text{s.t.}\quad q_t^{\star}=\argopt_{q\in\mathcal{Q}_t}\mathcal{E}(x_{t+1}(q))\]

外层照旧优化解 \(x\),内层优化查询 \(q\)——查询的质量由"用它检索到的文档能生成多好的解"来定义。问题来了:\(\mathcal{E}(x_{t+1}(q))\) 只有真把候选解生成出来、跑完评估器才能观测到,对每个查询都这么干,开销爆炸。所以 EvoDuet 用 LLM 自己来预测分数(hypothetical evidence scoring),把内层优化变成纯推理、零评估的轻量循环。

EvoDuet 方法总览

图 5:EvoDuet 三大组件。左(蓝)是内层查询优化循环:构造查询 → 网络搜索 → 证据打分 → 更新知识状态,最多跑 R 轮,全程不生成候选解;中(橙)是知识缺口检索门控,输出 retrieve / look-up / no-op 三选一;右(紫)是外层解优化循环,标准的进化流程,但 prompt 里多了检索到的 Top-K 文档。下方小图展示了真实的知识状态文本和打分样例。

整个系统拆成三块:

外层循环(Solution Optimization):和标准进化搜索一致,选亲本、生成候选、评估、入库。两个小区别:一是 prompt 里会带上检索文档 \(\mathcal{S}_t\)(如果有);二是门控式并行生成——当门控决定用文档(retrieve 或 look-up)时并行生成 \(N\) 个候选取最优,no-op 时只生成 1 个。这个设计很务实:有外部证据时值得多试几次,没有时省点钱。

知识缺口门控(Retrieval Gating):每轮迭代,LLM 先输出一份"知识状态" \(K_t\)——我现在知道什么、之前的搜索发现了什么、关于当前解还有哪些没解决的问题。基于这个自我评估,门控三选一:知识够用就 no-op,本地搜索数据库里有存货就 look-up(不发新请求,省钱),都不够才 retrieve。这个设计和 EvoX 那种"停滞了就触发"的启发式门控形成鲜明对比,后面的消融证明它确实更聪明。

内层循环(Query Optimization):只有 retrieve 时才启动,在当前外层迭代内跑 \(R\) 轮,每轮四步——针对剩余知识缺口构造 \(J\) 个查询;执行搜索,把新文档并入本地文档池;对未打分文档做假设性证据打分(一次调用预测每个文档能帮当前解拿到多少分);更新知识状态,保留预测分数 Top-D 的文档进入下一轮。\(R\) 轮结束后,最终的 Top-D 文档交给外层。

这个"假设性证据打分"是整套机制的枢纽。它靠谱吗?论文给了验证:4324 次检索中,预测分数和最终评估分数的 Spearman 相关系数达到 +0.86,21 个任务全部正相关(中位数 +0.74)。作为内层优化的代理信号,这个相关性强得有点出乎意料——我自己做类似 surrogate 建模的时候,LLM 直接预测数值通常挺飘的,这里能到 0.86,可能和任务评估器本身比较平滑有关。

Swap Reduction 上的双层循环实例

图 2:Q20 量子线路 Swap 缩减任务的真实运行轨迹。纵轴是迄今为止最优评估分数。第 5 轮 retrieve 触发,内层三轮搜索找到了 dSABRE 论文(arxiv.org),模型学到"距离执行越近的 gate 权重越高"的衰减原则,SWAP 数从 19,953 降到 18,030;中间 38 轮没有新突破,第 64 轮靠 look-up 复用存量文档(不发新搜索),第 66 轮再次 retrieve 找到 IBM 的 SabreSwap 文档,加入"惩罚反转上一个 SWAP"的规则,降到 15,457。最终最优解 14,835 个 SWAP,比 SimpleTES 公开程序(15,186)少 2.31%——新 SOTA。

这张图值得多看两眼。它展示的是论文定义的六种文档使用行为里最常见的 method transfer:模型不是抄代码,而是把检索到的方法论原则(衰减权重、惩罚规则)翻译成自己解的组件。第 5 轮和第 66 轮之间隔了 61 轮迭代,门控没有乱搜,也没有不搜——该出手时才出手。


📊 实验:谁受益,谁翻车

主实验在 21 个任务上跑 OpenEvolve ± EvoDuet,三个 backbone:GPT-5.6-Luna、Gemini-3.8-Flash、Qwen3.5-9B,每轮候选数 \(N \in \{1, 8\}\)。

总盘数字:\(N=1\) 时,EvoDuet 把整体 NDG 从 74.1% 提到 78.0%(GPT,涨 3.9 个点)、从 61.3% 提到 82.3%(Gemini,涨 21.0 个点)。Gemini 这个提升幅度相当能打——它的 baseline 低,天花板空间大,EvoDuet 正好把这块空间吃掉了大半。

分组 ΔNDG

图 6(b):按任务组分组的平均 ΔNDG。数学(Math)是最大的赢家,六种模型/预算组合里有五种为正,平均涨 7.1 个点;量子编译和天体动力学整体也受益。但看 Qwen 那一列——几乎全负。

但 Qwen3.5-9B 翻车了。 \(N=1\) 时掉 14.4 个点,\(N=8\) 还掉 4.7 个点——尽管 oracle 实验里它明明能涨 10.3 个点。这个反差很有意思,作者抽查了 50 条带文档的修改:6% 直接无视了检索到的方法,20% 实现错了,合计 26% 的失败率。oracle 设定只需要"会用文档",EvoDuet 还要求"自己判断什么时候搜、搜什么、判断文档靠不靠谱"——弱模型在这条链路上断了。说实话我觉得这个负结果是全文最有工程价值的发现之一:检索增强的收益是有能力门槛的,给弱模型挂更强的检索回路可能净亏。

并行生成稳定受益。 \(N\) 从 1 加到 8,三个模型的 EvoDuet NDG 全部上升;在 8 个任务上继续扫 \(N \in \{1, 8, 16\}\),GPT 从 89.6% 单调涨到 95.7%,Gemini 从 84.5% 涨到 89.6%。配合预实验二的结论,"多试几次"似乎是这个范式里最简单可靠的收益来源——当然,成本也线性涨。

收益在哪?看任务剩余空间。 把 126 个(任务 × 模型 × 预算)组合按 OpenEvolve baseline NDG 分桶:baseline 在 20–40% 区间的,中位收益 +17.5%;40–60% 的 +9.2%;60–80% 的 +2.4%;超过 80% 的归零。而 baseline 在 5–20% 这个"半死不活"区间,中位数反而是 -5.4%——有点反直觉,但想想也合理:这些任务可能是检索也救不了的硬骨头。最惨的桶(NDG 低于 5%)里,EvoDuet 把一半的案例拉过了 5%,这五例的中位收益高达 +71.8%。收益和 baseline 水平的 Pearson 相关是 -0.41,整体趋势明确:中间段最肥,两头都难。

刷新 SOTA 的成绩单(Table 1(a),我挑重点列):

任务 此前最优 EvoDuet 成本
Swap Reduction ↓ 15,186 14,835 $50.90
Rosetta ↓ 1.552968 1.396424 $44.12
Voyager 2 ↓ 3.430214 3.430206 $43.02
Denoising ↑ 0.722690 0.722906 $38.45
Erdős ↓ 0.380868 0.380859 $29.55
Sums/Diffs ↑ 1.144887 1.144999 $161.33
Hadamard / CP(26) / CP(32) — 持平 —

11 个任务里 8 个超越、3 个打平,平均单任务成本 45.56 美元。有几个数值得玩味:Rosetta 的 Δv 从 1.553 压到 1.396,降了约 10%,这在轨道设计里是很实在的量级;而 Erdős 的 \(C_5\) 上界从 0.380868 改进到 0.380859——第六位小数的进步。别笑,这个任务上模型是搜到了已发表的构造,拿过来当起点再做局部优化(论文称之为 public artifact reuse)。这算发现还是算检索?作者很坦诚,11 个 SOTA 里只有 2 个的最佳程序涉及公开成果复用,且都记录在案。这个边界问题我觉得值得整个领域严肃对待。

成本效率这块有个漂亮的数字:Denoising 任务上,EvoDuet 以 $38.45 做到 100.27% NDG,而 SimpleTES(此前最优)的 API 等价成本估算是 $265.39——便宜了 6.9 倍,分数还略高。

Denoising 成本-性能 Pareto 前沿

图:Denoising 任务的成本-性能 Pareto 前沿。OpenEvolve 裸跑最便宜(\(0.58)但只能到 88.35%;EvoDuet(\)38.45,100.27%)落在 Pareto 前沿上,SimpleTES 在右上角——贵了近 7 倍,分数反而略低。


🔬 消融与分析:每个组件都在干活

Table 1 的几组消融做得挺扎实:

门控机制对比(GPT-5.6-Luna):随机门控(p=0.5)在 Denoising/Erdős 上是 58.5%/93.9%,停滞启发式(EvoX 方案)60.6%/99.5%,知识缺口门控 84.5%/100.0%。Denoising 上比启发式高 23.9 个点——让模型自己评估"我缺什么",比外面定规则判断"是不是停滞了"有效得多。

搜索耦合方式对比是全文我最关心的一张表。把搜索和解进化耦合有三种姿势:

三种耦合方式

图 9:joint-level(搜索工具嵌在解生成步骤内,OpenEvolve+Tavily)、sequential(搜索在每轮迭代之前,DeepEvolve)、bi-level(EvoDuet,搜索循环与解循环协同进化,中间有门控)。下面三行对比了"何时搜、什么指导搜索、有无搜索记忆"三个维度——只有 bi-level 三者俱全。

方法 Molecule ↑ Burgers ↑ CP (n=26) ↑
OpenEvolve(无搜索) 0.8496 0.6937 2.635983
Joint-level 0.8474 0.6919 2.635980
DeepEvolve(sequential) 0.8149 0.6666 2.581971
EvoDuet(bi-level) 0.8524 0.7846 2.635983

注意前两行:joint-level 加搜索工具反而比不搜还差(Burgers 上 0.6919 vs 0.6937)。这坐实了第 2 节的发现——搜索工具本身不是资产,用不好是负债。Burgers 上 EvoDuet 比 DeepEvolve 高了 0.118,顺序式"先搜后做"和真正的协同进化之间隔着一道鸿沟。

跨框架迁移:EvoDuet 不只服务 OpenEvolve。嫁接到 Top-K 和 EvoX 上,Sums/Diffs 的 ΔNDG 分别是 +46.7% 和 +55.1%,Denoising 是 +63.6% 和 +37.8%。EvoX 本身已经有策略循环了,再包一层搜索循环还能涨这么多——Loop Packing 这个故事讲得通。

文档到底怎么起作用的:82 个 GPT 运行、8200 轮迭代的统计显示,检索到"有前途文档"(预测分超过亲本实际分)的迭代里,67.1% 改进了亲本,而 no-op 迭代只有 52.1%;复用文档的 look-up 介于中间(61.2%)。但别高兴太早——29/82 的运行里出现过"文档预测有用、实际改完更差"的情况,所以预测收益永远要过评估器这道闸。还有 36.5% 的检索压根没捞到有前途的文档,这些轮次的亲本改进率只有 38.3%,还不如不搜。文档使用行为上,方法迁移最常见(55/82),排第二的是用已发表最优分当参照目标(40/82)。


💡 我的判断

这篇论文最值钱的地方,不是"给进化搜索加了 web 搜索"——DeepEvolve 已经干过——而是证明了朴素加搜索是负收益,必须把查询本身纳入优化循环。预实验三(88.1% 重复 URL、50 轮停滞)和消融里的 joint-level 负收益,这两个证据把"为什么需要双层结构"讲得干干净净,比很多论文硬凑 motivation 的做法扎实得多。

批评也说几点。第一,对 backbone 的依赖是个硬伤。三个模型里一个明确负收益,意味着这套方法的适用面受限于"模型既要会找证据又要会用证据"。作者自己也承认这点(附录 F),但目前没有给出"什么能力门槛才够用"的可操作判据,26% 的失败率统计样本也只有 50 条,略显单薄。第二,algorithm engineering 任务上一致性掉分(六种设置里四种为负,平均 -1.6%),说明检索到的通用知识在这类重启发式调参的任务上可能帮倒忙,论文没有深挖原因。第三,public artifact reuse 这个行为——搜到已发表构造再优化——严格说是"检索+精修"而非从零发现,虽然作者透明地记录了,但这给"AI 科学发现"的新颖性声明提了个醒:评估这类系统时需要区分原创和复用。

工程上的启发反而最直接:如果你在做 LLM 驱动的迭代优化(代码生成、prompt 优化、超参搜索都算),这篇论文给了三条可以直接抄的经验——检索要有记忆(搜索数据库 + look-up 决策,避免重复搜索烧钱)、检索要有门控(让模型自评知识缺口,别无脑每轮都搜)、文档要用预测分筛一遍再喂(零评估成本的代理排序)。哪怕不实现完整的双层结构,光这三条也能救活不少"挂了搜索工具却没用"的系统。

至于"模型参数冻结、纯靠检索回路进化"这个定位,我觉得是个聪明的中间路线:不动权重,就没有灾难性遗忘和训练成本的问题,知识全部外置在可审计的搜索数据库里。附录里连每次检索的轨迹都记录了,这种可审计性对科学场景是刚需。


📝 收尾

EvoDuet 给 LLM 科学发现补上了一块明显的短板:封闭的循环被打开了,而且打开的方式本身是可优化、可审计的。它现在还不是万能的——弱模型用不了、工程类任务会掉分、成本和 \(N\) 成正比——但"搜索循环与解循环协同进化"这个抽象,大概率会成为这类框架的标准组件。接下来值得盯的问题:能不能把"识别知识缺口、筛选证据、实现证据"拆成可训练的技能,让 Qwen 这个量级的模型也吃得上检索红利?如果能,这套范式的适用面会宽得多。

觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我