← 返回 2026-02-25

RankEvolve:通过LLM驱动的进化自动发现检索算法 RankEvolve: Automating the Discovery of Retrieval Algorithms via LLM-Driven Evolution

Jinming Nian, Fangchen Li, Dae Hoon Park, Yi Fang 📅 2026-02-18 👍 6 2026-07-13 08:35
LLM优化 信息检索 自动算法发现 词汇检索 进化算法

用LLM指导程序进化自动发现超越BM25的新型检索算法

前置知识

BM25

BM25是经典的TF-IDF检索算法,由Robertson和Zaragoza系统化阐述。它通过对词频进行饱和处理(使用参数 $k_1$ 控制饱和速度)、文档长度归一化(使用参数 $b$ 调节长文档的惩罚力度)以及逆文档频率IDF加权来计算查询与文档的相关性分数。BM25的核心公式为 $BM25(q,d) = \sum_{t \in q} IDF(t) \cdot \frac{tf(t,d) \cdot (k_1 + 1)}{tf(t,d) + k_1 \cdot (1 - b + b \cdot |d|/avgdl)}$,其中标准参数 $k_1=0.9$、$b=0.4$ 来自Pyserini默认值。BM25因其简单高效,至今仍是大多数检索系统的第一阶段排序器。

BM25是本文RankEvolve的两个种子程序之一,理解其公式结构是理解进化如何改进它的基础

Query Likelihood with Dirichlet Smoothing

查询似然(Query Likelihood)是一种基于语言模型的检索方法,将检索问题建模为估计查询从文档语言模型生成的概率。Dirichlet平滑是最常用的平滑方式,公式为 $QL\text{-}Dir(q,d) = \sum_{t \in q} \log \frac{tf(t,d) + \mu \cdot P(t|C)}{|d| + \mu}$,其中 $P(t|C) = tf(t,C)/|C|$ 是集合语言模型概率,$\mu=2000$ 是平滑参数。该方法通过将文档词频与整个集合的背景概率插值,避免了零概率问题。

QL-Dir是本文另一个种子程序,理解其与BM25的根本差异才能理解两种进化路径的收敛现象

遗传编程(Genetic Programming)

遗传编程是一种进化计算方法,通过维护一个程序种群,使用变异(随机修改子树)、交叉(交换两个程序的子树)和选择(按适应度筛选)操作来迭代改进程序。传统GP将候选解表示为算术表达式树,使用随机子树交换作为变异算子,不理解表达式的语义。本文引用的ARRANGER等早期工作使用GP进化IR特征的算术组合,但受限于表达能力。

理解传统GP的局限性是理解RankEvolve用LLM替代随机变异算子这一核心创新的前提

AlphaEvolve

AlphaEvolve是Google DeepMind提出的程序进化框架,将候选解表示为可执行代码,使用LLM作为变异算子来提出代码修改。它结合MAP-Elites(通过复杂度和多样性两个维度维护种群多样性)和岛屿模型(将种群分割为独立进化的子种群,定期迁移)来管理种群。本文的RankEvolve基于开源实现OpenEvolve构建。

RankEvolve直接建立在AlphaEvolve的程序进化范式之上,理解其架构才能理解RankEvolve的技术设计

MAP-Elites

MAP-Elites(Multi-dimensional Archive of Phenotypic Elites)是一种质量多样性算法,将候选解映射到一个由多个特征维度定义的网格中。每个网格单元只保留该维度组合下表现最好的个体。本文使用代码长度(复杂度)和编辑距离(多样性)两个维度,每个维度分为B=12个bin,形成12×12的网格。新程序只有在目标单元为空或严格优于当前占据者时才被接受。这种机制对于避免局部最优至关重要,因为总是选择表现最好的个体进行变异会导致搜索停滞。

MAP-Elites是RankEvolve种群管理的核心机制,直接决定了搜索能否跳出局部最优

BEIR和BRIGHT基准

BEIR是一个包含18个异构信息检索数据集的零样本评估基准,涵盖不同领域(生物医学、新闻、科学论文等)和任务类型(事实核查、问答、新闻检索等)。BRIGHT是一个针对推理密集型检索的基准,包含12个需要复杂推理的子集(如生物学、经济学、定理证明等)。本文从BEIR选取6个、BRIGHT选取6个共12个数据集用于进化过程中的评估,其余16个作为不可见测试集评估泛化能力。

理解基准的选择和分割方式是评估实验结果有效性和泛化性的关键

研究动机

词汇检索算法如BM25和查询似然仍然是最强、最高效的第一阶段排序器,但数十年来的改进主要依赖于参数调优和人类直觉。BM25T、BM25-adapt、BM25+、BM25L等变体都是在BM25框架内对特定组件的微调,而非根本性的算法创新。传统遗传编程(GP)虽曾被用于自动发现排序函数,如Fan等人提出的ARRANGER框架,但GP通过随机交换表达式树的子树来进行变异,完全不理解表达式的语义含义。这意味着GP只能在预定义的算术运算符空间(如$+$、$\times$、$\log$)中搜索,无法做出有意义的推理驱动的编辑,例如识别到某个信号(如文档对查询的覆盖程度)缺失并主动引入。这种方法的搜索空间极其受限,难以发现真正新颖的算法结构。

本文的目标是本文的核心目标是探索是否可以用大语言模型(LLM)替代传统遗传编程中的随机变异算子,实现推理驱动的程序进化,从而自动发现改进的词汇检索算法。具体而言,RankEvolve旨在:(1)将候选排序算法表示为完整的可执行Python程序(约300行),而非简单的算术表达式;(2)利用LLM理解代码语义并提出有意义的变异;(3)通过在多个IR数据集上的性能驱动选择来指导进化方向;(4)最终发现不仅在训练集上有效、而且能泛化到未见数据集的新型检索算法。

与已有工作不同的是,本文的独特切入角度在于将程序进化范式从数学和组合优化领域迁移到信息检索领域,这是前所未有的尝试。与传统GP的根本区别在于:GP的变异是随机的、无语义感知的,而RankEvolve使用LLM作为变异算子,能够理解程序的意图和结构,做出推理驱动的修改。例如,当LLM观察到一个候选算法的评估指标显示在某些数据集上Recall偏低时,它可以推断出可能缺少对稀有词项的特殊处理,并据此设计新的评分机制。这种从'盲目搜索'到'有指导的探索'的转变,使得RankEvolve能够在远大于传统GP的搜索空间中高效地发现新颖算法。此外,本文还系统研究了种子程序的结构自由度如何影响进化结果,这是传统GP文献中未被充分探讨的问题。

核心方法

RankEvolve的总体思路是将检索算法的发现过程建模为LLM指导的进化搜索。直觉上,可以将其类比为'让AI研究员进行算法研究':种子程序相当于初始假设,变异操作相当于研究者基于实验结果对假设的修改,评估器相当于实验验证,种群管理则维护着多个并行的研究方向。技术路线分为四个阶段:首先,定义种子程序(BM25或QL-Dir)和系统提示,共同确定搜索空间;其次,使用岛屿模型和MAP-Elites维护多样化的候选程序种群;然后,在每次迭代中选择父程序,由LLM基于其评估指标和参考程序提出变异;最后,评估器在多个IR数据集上计算适应度分数。进化目标是 $0.8 \times \text{Avg Recall@100} + 0.2 \times \text{Avg nDCG@10}$,权重设计反映了第一阶段检索的优先级是最大化召回率,为下游重排序器提供足够的候选文档。

RankEvolve的核心创新是用LLM替代传统遗传编程中的随机变异算子,实现'推理驱动的程序进化'。传统GP的变异是随机的子树交换,不理解表达式的语义;而RankEvolve的LLM变异算子能够理解代码的意图,基于评估指标做出有目的的修改。例如,当LLM看到某个候选算法在技术性查询上表现不佳时,它可以引入字符级n-gram匹配来增强对稀有词的处理。另一个关键创新是种子程序的设计方式:将排序函数分解为少量抽象组件(查询表示、文档表示、评分函数),定义'可进化接口',明确哪些代码区域允许LLM修改。这种设计在最大化进化自由度的同时,确保每个候选程序都是有效的、可执行的检索系统。与已有方法的本质区别在于,RankEvolve不仅能调优参数,还能发明全新的评分机制和算法结构。

方法步骤详情

RankEvolve的执行步骤如下:(1)**种子程序初始化**:从BM25或QL-Dir的完整Python实现开始,定义可进化组件(如查询表示、文档表示、评分函数)和受限制组件(如评估器接口、分词器调用)。(2)**种群管理**:维护K=3个独立进化的岛屿,每个岛屿使用MAP-Elites网格(B=12个bin,按代码长度和编辑距离划分)。每M=20次迭代,顶部$\gamma=0.15$比例的程序从一个岛屿迁移到相邻岛屿。(3)**父程序选择**:随机选择三种策略之一——探索(概率$p_e$,均匀随机采样)、利用(概率$p_x$,从精英档案采样)或加权(概率$1-p_e-p_x$,按性能比例采样)。(4)**变异提案**:向LLM提供父程序、T=4个最佳程序、S=4个随机采样程序及其详细评估指标,LLM以SEARCH/REPLACE diff格式提出变异。(5)**评估**:导入变异后的程序,执行完整管道(分词、索引、检索),在12个评估数据集上计算nDCG@10、Recall@100和延迟。(6)**选择**:如果新程序的适应度严格优于目标MAP-Elites单元的当前占据者,则替换之。(7)重复步骤3-6,BM25种子运行300步,QL-Dir种子运行200步。

技术新颖性

RankEvolve的技术新颖性体现在多个层面。首先,这是第一个将LLM指导的程序进化应用于检索算法发现的工作,开创了'自动化IR研究'的新范式。其次,进化出的算法展现出令人瞩目的新颖性:从BM25种子进化出的算法包含多通道评分(基础、前缀、二元组、字符级n-gram)、基于PMI的特异性乘子、复合词项权重等全新机制,没有任何人工指导就独立发现了软停用词过滤、集合语言模型和对数长度归一化等已知概念。第三,两种完全不同的种子(基于TF-IDF的BM25和基于概率语言模型的QL-Dir)独立进化出相似的高级策略(词频饱和、软停用词过滤、协调机制、温和长度归一化),但通过不同的架构范式实现(乘性调制vs加性惩罚),这暗示这些可能是词汇检索的'基本需求'而非特定框架的产物。第四,种子程序结构自由度的消融实验揭示了一个重要发现:更大的结构自由度产生更高的优化目标分数和更好的泛化能力。

实验结果

实验结果在三个基准套件(BEIR、BRIGHT、TREC DL 19/20)的28个数据集上展开,其中12个用于进化过程,16个完全不可见用于测试泛化能力。在BRIGHT基准上,BM25★(进化后的BM25)将Recall@100从32.11提升到37.51(提升16.8%),nDCG@10从10.55提升到11.79(提升11.7%),均具有统计显著性($p<0.05$)。在BEIR基准上,BM25★的Recall@100从70.95提升到72.43(提升2.1%)。在TREC DL基准上,BM25★的nDCG@10从62.16提升到64.57(提升3.9%)。QL-Dir★同样在所有基准上持续超越QL-Dir和QL-JM基线。进化轨迹分析显示Recall@100几乎单调递增,而nDCG@10偶尔会退化——这正是优化目标权重设计的结果(0.8×Recall vs 0.2×nDCG),RankEvolve会接受任何用小的nDCG损失换取更大Recall提升的变异。消融实验表明,结构自由度更大的种子产生更好的结果:约束型(仅参数调优)→可组合型(可重写组件公式)→自由形式(完全可进化),优化目标分数从42.87提升到44.58。延迟分析显示BM25★的查询延迟为648.89ms/query,是原始BM25的约11倍,这是因为延迟不是优化目标,进化过程倾向于用计算复杂度换取有效性。

Macro-averaged results on unseen BRIGHT, BEIR, and TREC DL 19/20 datasets
Table 1: Macro-averaged results on unseen BRIGHT, BEIR, and TREC DL 19/20 datasets
Ablation on code structure design (BM25 family)
Table 2: Ablation on code structure design (BM25 family)
Average per-document indexing latency and per-query retrieval latency
Table 3: Average per-document indexing latency and per-query retrieval latency
Combined score over evolution steps for two seed programs
Figure 1: Combined score over evolution steps for two seed programs
Evolution trajectories for the BM25 seed and Dirichlet seed
Figure 2: Evolution trajectories for the BM25 seed and Dirichlet seed
查看结构化数据
任务指标本文基线提升
BRIGHT基准(推理密集型检索) Recall@100 BM25★: 37.51 BM25: 32.11 提升16.8%,统计显著
BRIGHT基准 nDCG@10 BM25★: 11.79 BM25: 10.55 提升11.7%,统计显著
BEIR基准(零样本检索) Recall@100 BM25★: 72.43 BM25: 70.95 提升2.1%,统计显著
BEIR基准 nDCG@10 BM25★: 47.90 BM25: 48.16 略低于原始BM25(-0.5%),但Recall大幅提升
TREC DL 2019/2020 nDCG@10 BM25★: 64.57 BM25: 62.16 提升3.9%,统计显著
TREC DL 2019/2020 Recall@100 BM25★: 47.10 BM25: 46.02 提升2.3%
BRIGHT基准 Recall@100 QL-Dir★: 36.33 QL-Dir: 32.48 提升11.8%,统计显著
BEIR基准 nDCG@10 QL-Dir★: 46.46 QL-Dir: 44.15 提升5.2%,统计显著

局限与改进

论文明确承认的主要局限性包括:(1)**延迟大幅增加**:BM25★的查询延迟为648.89ms/query,是原始BM25(56.72ms)的约11倍,这是因为延迟未被纳入优化目标,进化过程倾向于用计算复杂度换取有效性。(2)**算法复杂度显著增加**:进化出的BM25算法包含4个并行token空间、多层乘子链和复杂的词项权重函数,远比原始BM25复杂,可能影响可解释性和维护性。(3)**依赖商业LLM API**:实验使用GPT-5.2,成本和可访问性可能限制广泛复现。从我的观察来看,还有以下局限:(4)**仅验证了词汇检索**:未探索向稠密检索、学习稀疏表示等方向的扩展。(5)**数据集语言单一**:所有实验数据集均为英文,多语言检索场景的效果未知。(6)**进化目标的线性加权可能非最优**:$0.8 \times R@100 + 0.2 \times nDCG@10$ 的权重选择缺乏充分的消融研究。(7)**进化出的算法可能过拟合评估分布**:尽管展示了泛化能力,但12个训练数据集的选择可能偏向某些检索特性。

独立分析的弱点

(1)**延迟效率问题**:BM25★的延迟是原始BM25的11倍(648.89 vs 56.72 ms/query),在实际部署中可能不可接受。改进方向:将延迟作为显式优化目标,或在系统提示中明确要求LLM考虑效率。(2)**算法可解释性差**:进化出的算法包含多通道评分、多层乘子链、PMI计算等复杂机制,难以理解每个组件的贡献。改进方向:引入简洁性约束,或对进化出的算法进行后处理简化。(3)**种子程序设计的先验知识**:虽然进化过程是自动的,但种子程序的分解方式(查询表示、文档表示、评分函数的划分)仍需要人工设计。改进方向:让LLM同时进化种子程序的结构分解方式。(4)**评估器的数据集偏差**:12个评估数据集的选择可能影响进化方向,不同数据集组合可能导致截然不同的进化结果。改进方向:研究评估数据集选择对进化结果的影响,或使用动态评估集。(5)**变异提案的LLM依赖**:使用GPT-5.2这样的闭源模型,不同LLM可能产生不同进化轨迹。改进方向:研究开源模型在RankEvolve中的表现。

未来方向

作者在结论中提出了几个重要的未来方向:(1)**将效率约束纳入优化目标**:这是最直接的扩展,可以通过在适应度函数中添加延迟惩罚项来实现。(2)**扩展到稠密检索和学习稀疏表示**:RankEvolve的框架不局限于词汇检索,可以进化双编码器的相似度函数或学习稀疏表示的权重函数。(3)**扩展到LLM重排序方法**:探索是否可以用类似方法进化重排序器的提示策略或评分逻辑。(4)**定义和鼓励简洁性**:如何让进化过程在有效性之外兼顾算法的优雅和简洁,是自然的下一步研究方向。基于现有成果,还可以延伸:(5)**多目标进化**:同时优化多个指标(如不同数据集上的性能、延迟、内存占用),而非使用线性加权。(6)**集成学习**:从多种子结构进化出的互补算法可以组合使用,利用它们在不同基准上的互补优势。(7)**迁移学习**:研究进化出的算法组件是否可以模块化地迁移到其他检索任务。(8)**自动化种子设计**:让LLM同时探索最优的种子程序分解方式,进一步减少人工干预。

复现评估

论文的可复现性较好。作者声明代码已开源(基于OpenEvolve实现),这使得核心框架可以被复现。实验使用的12个评估数据集和16个测试数据集均来自公开的BEIR、BRIGHT和TREC DL基准,数据获取无障碍。进化过程使用GPT-5.2 API,温度0.85,这是可复现的配置,但需要相应的API访问权限和成本。超参数设置明确:K=3个岛屿、B=12个bin、M=20次迭代迁移、$\gamma=0.15$迁移比例、T=4个参考程序、S=4个随机程序。BM25种子运行300步,QL-Dir种子运行200步,每步需要完整执行检索管道并计算指标,计算成本中等但需要多次API调用。复现的主要难度在于:(1)需要GPT-5.2的API访问权限;(2)进化过程的随机性可能导致不同运行产生不同结果;(3)需要配置完整的评估环境(Pyserini、BEIR数据集等)。