这项由腾讯与中国科学院信息工程研究所联合开展的研究,以预印本形式发布于2026年7月27日,论文编号为arXiv:2607.24223,有兴趣深入了解的读者可以通过该编号在arXiv平台查询完整论文。
你有没有这样的经历:去图书馆找一本书,管理员给你一张书单,上面写着"这100本书里可能有你要的内容",然后你就只能一本一本翻。翻到第七十本的时候,才找到那句话。而旁边的另一位管理员,不仅给你一张按相关性排好序的书单,还在你开始翻之前递给你几段最可能有用的段落,让你一下子就锁定了目标——这就是这篇论文想解决的核心问题。
在当下的人工智能领域,像ChatGPT这样的大模型在回答问题时,经常需要从一个巨大的文档库里找资料,就像一个助手在一个装满文件的大仓库里帮你找答案。现有的"助手"主要有两种工作方式:一种是先用相似度排名把最像的文件抓出来给你看;另一种则是直接在整个仓库里用关键词搜索,像命令行里的`grep`工具那样一行一行扫描文件。前者像是"聪明但懒",后者像是"勤奋但没章法"。
研究团队的核心洞察在于:这两种方式各有致命缺陷,但它们的优点恰好可以互补。于是,他们提出了一个叫做"相关性感知RipGrep搜索智能体"的方法,英文缩写是RARG(Relevance-Aware RipGrep Search Agent)。简单来说,RARG就是把"哪些文件更值得看"这个判断,直接融入到关键词搜索的执行过程里——让搜索工具先翻最可能有答案的文件,而不是随机乱翻。
实验结果相当亮眼。在一个包含10万份文件的困难问答数据集上,RARG的最强版本比之前最好的方法准确率提升了6到9个百分点,同时所需的搜索步骤减少了46%。换句话说,找得更准,费的力气还更少。
一、两种搜索助手的尴尬处境
要理解RARG的价值,得先弄清楚那两种传统方法的缺陷是什么。
先说第一种,也就是基于语义相似度的检索方法(通常叫做"稠密检索"或"嵌入式检索")。这种方法会把每一篇文档都变成一串数字(专业上叫"向量"或"嵌入"),然后用问题的数字表示去和所有文档的数字对比,找出最像的几篇给AI看。问题在于,"最像"并不等于"最有用"。一篇文档可能整体上看起来很相关,但真正关键的那句话藏在文档中间某个角落,被截断后根本看不到。更麻烦的是,当一个问题需要先找到一个人名,再拿着这个人名去找另一份文档时,一次性的相似度排名根本解决不了这种"接力式"的信息需求。
加州大学等机构的研究者曾专门验证过这个问题:AI可能已经拿到了正确的文档,但依然给不出正确答案,因为关键信息没有被完整呈现出来。
第二种方法是直接语料库交互(Direct Corpus Interaction,简称DCI)。这就像让AI助手直接坐到文件仓库里,用`ripgrep`(一种比`grep`更快的命令行搜索工具,简称`rg`)自己去翻文件。这个方法聪明得多:AI可以自己决定搜什么词、找到一个线索后追着这个线索继续找,甚至可以跨文件比对信息。
但问题也很明显:`rg`搜索文件的顺序完全是随机的,或者说是按照文件系统存放的顺序来的,跟"哪个文件更可能有答案"毫无关系。研究团队把这个现象叫做"相关性无感知"的搜索。后果就是,AI可能要翻很多无关文件,才能偶然碰到真正有用的内容。如果文件库有100万份文件,这个代价就会变得难以承受——工具调用次数急剧膨胀,而准确率却在下降。
已有的改进方案,比如RISE和DR-DCI,思路是先用检索方法圈出一个"候选范围",然后再在这个范围里做DCI式的搜索。这比直接在整个仓库里乱翻要好一些,但研究团队发现,这些方法依然没有解决一个关键问题:即便圈定了范围,在范围内用`rg`搜索时,遍历哪个文件的顺序依然没有被相关性指导。搜索结果里哪些匹配行出现在前面、哪些被截断看不到,也依然没有经过相关性的优化。换句话说,相关性只在"圈地"这一步发挥了作用,进了圈子之后还是在乱翻。
二、RARG的三层"导航系统"
RARG的核心理念是把相关性从"内容筛选器"变成"执行指南"——不仅告诉AI哪些文件值得看,还要告诉它按什么顺序看,以及在搜索结果里优先展示哪些片段。研究团队将其设计为三个层次,从粗到细逐步引导搜索。
第一层叫做文档级相关性注入,也就是RARG的基础版本。具体做法是给AI助手新增一个工具,叫`embed_recall`。当AI想开始搜索时,它先调用这个工具并描述自己的搜索意图。工具在后台用嵌入式检索模型(也就是前面说的那种把文档变成数字来比较的方法)对整个语料库排名,然后把排好序的文件路径列表写入一个临时文件,比如`/tmp/scope_1.txt`,返回给AI的只是这个文件的位置,不包含任何文档内容。
然后,AI被要求用一个特定的命令格式来搜索:先把文件路径列表"读"出来,再通过管道传给`rg`,让`rg`按照列表的顺序去逐文件搜索。这样,和查询最相关的文件就会被最先搜索到,相关的匹配结果也就会最早出现在输出里。
但这里有一个技术细节值得关注:`rg`默认是多线程并行工作的,它会同时扫描多个文件,谁先扫完就先输出谁,这完全破坏了按顺序排列文件路径的意义。研究团队的解决方案是在代码层面自动检测AI发出的`rg`命令,悄悄在其中插入`-j1`参数,强制`rg`用单线程顺序扫描。AI完全感知不到这个修改,但搜索顺序就这样被相关性控制了。
第二层叫做入口点初始化,对应RARG+版本。基础版本的RARG有一个小遗憾:AI拿到的只是一个文件路径列表,没有任何内容可以参考,所以最初的几次搜索可能是在"黑暗中摸索"——不知道该搜什么关键词才能快速找到线索。为了解决这个问题,RARG+在`embed_recall`返回结果时,额外附上从排名靠前的文件里提取的十个最相关段落。
这些段落的提取方式很精细:先把排名靠前的若干文档切成400到1000字符的段落,再用嵌入模型计算每个段落和查询的相似度,取最高分的十个,用特殊标签包裹后附在`embed_recall`的返回结果里。这些段落不是最终答案,而是"开门砖"——AI可以从中获得关键词、人名、时间等线索,从而设计出更精准的第一次搜索,大大缩短"摸索期"。
第三层叫做匹配级相关性注入,对应RARG++版本。即便文件的遍历顺序被相关性指导了,还有一个问题:一次`rg`搜索可能在排名靠前的文件里返回很多匹配行,但这些行本身的质量参差不齐。由于输出被截断,AI看到的只是前面那些行,后面可能更相关的匹配行被切掉了。更棘手的是,有时候真正关键的证据藏在一个整体排名不太靠前的文件里——这个文件因为文档级相关性评分低,在搜索顺序上靠后,甚至它里面的一行精准匹配永远没有机会出现在AI的视野里。
RARG++的做法是:收集更大范围的匹配结果(最多500条),然后对这500条匹配行本身做一次相关性重排序,最终只保留质量最高的30到60条呈现给AI。重排序用的查询不是简单地复用文档检索的查询,而是把当前的全局搜索目标和本次`rg`使用的关键词拼接在一起,形成一个既反映"整体要找什么"又反映"这次具体在搜什么"的综合查询。这样,即便某条关键证据所在的文件排名很低,只要这条匹配行本身足够相关,它就有机会跳到AI的可视范围内。
研究团队还尝试过让AI自己写重排序用的查询(叫做"生成式查询"),效果反而变差了。他们分析认为,这是因为模型原本的训练数据里没有这种"边搜索边写重排序查询"的行为模式,强行要求它这么做反而干扰了它正常的搜索行为。这个问题被留作未来研究方向。
三、在真实战场上的考验
研究团队在两类完全不同的任务上测试了RARG,这两类任务对搜索的要求几乎是相反的,恰好能从不同角度验证方法的有效性。
第一类任务叫做BrowseComp-Plus,简称BC+。这是一个专门设计来"难为"AI的问答数据集,每道题都需要同时满足多个条件才能锁定唯一答案,就像同时过滤多个筛子。比如论文案例研究里用到的那道题:找一个1983年获得数学博士学位、在2005到2020年间成为美国数学学会院士的人,他和另外两个人合写过一篇1990到2005年间的论文,其中一个合著者获得过某个奖,另一个合著者在1990年代发表过一篇题目以"Line"结尾的论文,请问此人全名是什么?(答案是Russell David Lyons)这种问题需要AI在文件库里追踪一连串相互关联的线索,任何一个环节断了就找不到答案。
实验使用了10万份文档的语料库。在使用GPT-5.4-mini这个中等能力的模型时,RARG++达到了84%的准确率,而同等条件下RISE和DCI都只有78%。更重要的是,RARG++平均只需要调用23.9次工具,而DCI需要99.1次,RISE需要28.7次。换算成成本:DCI要花大约0.5美元一题,RARG++只需要0.1美元左右。使用更强的GPT-5.4模型时,RARG++的准确率进一步跃升至91%,比RISE高出9个百分点。
研究团队还专门测试了语料库从10万扩展到100万文档时会发生什么。他们额外加入了90万篇FineWeb-Edu网站上的长篇教育文章。这些文章篇幅很长,里面充满了各种词汇,导致`rg`搜索时会碰到大量"貌似匹配实则无关"的干扰行。结果显示,所有方法的准确率都有所下降——RISE-BM25从77%降到69%,而RARG系列从80/81/84%降到78/78/79%。RARG++依然保持了比RISE-BM25高出约10个百分点的优势。值得关注的是,工具调用次数几乎没有增加,说明RARG的效率在大规模语料库下依然稳健。研究团队分析认为,检索器(负责排序文档)受干扰文档影响不大,但`rg`扫描每个文件时会被这些长文档里的偶然匹配所迷惑,而匹配级重排序只能部分缓解这个问题,如何彻底解决这个弱点被留作未来研究方向。
第二类任务叫做BRIGHT,全称是"基于推理的信息检索基准",包含生物学、地球科学、经济学和机器人学四个领域。这个任务的目标不是回答问题,而是找出所有与查询相关的文档,并按相关性排名,用nDCG@10(一种衡量排名质量的指标,越高越好)来评分。这类任务需要的是"广撒网"式的策略,要尽量找全相关文档,而不是快速收敛到一个答案。
在这个任务上,RARG+(而非RARG++)表现最好,平均nDCG@10达到53.36,超过了专门针对检索任务优化的NeMo智能体(52.89),也超过了DCI(48.43)和RISE-BM25(41.60)。RARG++的表现(50.55)反而不如RARG+,原因也很直觉:匹配级重排序让AI更快聚焦到局部最优的证据片段,对于"快速收敛找答案"的问答任务很好,但对于"尽量找全所有相关文档"的检索任务,这种聚焦反而限制了覆盖面。
四、解剖搜索行为:数据背后的故事
研究团队不满足于只看最终结果,还做了一系列分析来验证RARG的工作机制是否真的如他们设计的那样运转。
他们统计了每种方法在搜索过程中"命中"相关文档时,这些文档在相关性排名中的位置分布。结果形成了一幅颇具说服力的图景。纯嵌入式检索智能体(直接把检索结果给AI看的那种)命中的相关文档高度集中在排名靠前的位置,曲线急剧下降,但总命中数量很少——因为它的检索结果高度冗余,排名靠前的几篇文档往往讲的是同一件事,浪费了宝贵的阅读机会。DCI的命中分布则是一条平坦的直线,而且有大量命中来自"范围外"的文档,证明了相关性无感知的`rg`搜索确实需要全库乱翻,效率极低。
RARG的命中分布落在两者之间:整体上前重后轻,说明文档级相关性确实在引导搜索顺序;同时比纯嵌入式方法覆盖了更多不同的文档,说明`rg`的精确关键词搜索帮助AI找到了嵌入式检索会遗漏的内容。而RARG++的曲线比RARG更平缓,并且在排名较低的文档区域有更多命中——这正是匹配级重排序在发挥作用:一些被文档级排名低估的文档,其中的关键行被重排序提升到了AI的可视范围内。
研究团队还分析了`embed_recall`生成的"搜索范围"的质量。在10万文档的设置下,GPT-5.4-mini生成的范围能覆盖95%到97%的"答案文档"(即包含正确答案的文档),说明封顶1万个路径的设计足以保留几乎所有有价值的文档。扩展到100万文档后,这个比例几乎没变,证明检索器本身不太受干扰文档的影响。但"rg覆盖率"(实际被`rg`搜索命中的答案文档比例)在100万文档时明显下降,原因正是大量干扰行稀释了每次搜索的有效信息密度。
此外,研究团队还统计了AI发出的各类命令的比例。在使用GPT-5.4-mini的实验里,绝大多数命令(超过96%)都是"将范围文件传给`rg`搜索"这种正确的使用方式,说明AI很好地遵循了RARG的协议。而使用GPT-5.4-nano(一个能力稍弱的模型)时,这个比例下降到了87.5%,出现了更多"不按套路出牌"的行为。研究团队认为这反映了模型指令跟随能力的差异,而非RARG机制本身的问题。即便如此,RARG在nano模型上的表现依然优于所有基线方法。
案例研究部分用那道关于Russell David Lyons的题目,直观地展示了三个RARG版本的差异。基础RARG需要17个回合、33次工具调用,在第7个回合才第一次看到包含候选人姓名的简历文档,之后再花了十个回合来验证各个约束条件。RARG+和RARG++都只需要2个回合就看到了这份简历——因为入口点初始化直接把相关段落递到了AI面前。RARG++进一步将工具调用压缩到仅10次,因为匹配级重排序让每一次搜索的信息密度更高,验证环节所需的步骤也随之减少。
说到底,RARG这篇论文解决的是一个"明明有正确方法,偏偏找不到"的效率问题。研究团队用一个优雅的思路把两种看似对立的搜索范式融合在了一起:用嵌入式检索提供方向感,用关键词搜索保持精准度。
归根结底,这项研究的价值在于它改变了"相关性"这个概念在AI搜索里扮演的角色。过去,相关性只是一个"选哪些文件给AI看"的筛子;现在,它成了一个"先看哪里、怎么看"的导航系统。这个转变听起来不大,但在实际效果上的差距——准确率提升6到9个百分点、成本降低近一半——证明了这个思路的实用价值。
对于普通用户来说,这意味着未来那些帮你查资料、整理文献、深度搜索的AI工具,有可能变得更快、更准、更省钱。当AI助手从一个漫无目的翻书的实习生,成长为一个知道先翻哪本书的老手,受益的是每一个依赖它来处理信息的人。
当然,RARG也有明确的局限性。它依赖嵌入模型的质量,而同一个模型未必在文档级和匹配级都表现得同样好——论文中用了两个不同的嵌入模型来分别处理这两个层次。单线程顺序扫描会比并行扫描慢,在实际部署时需要权衡速度与排序精度的取舍。当语料库里充满长篇噪声文档时,关键词搜索的干扰问题还没有被完全解决。有兴趣深入了解技术细节、复现实验或在自己的场景里尝试这套方法的读者,可以通过arXiv编号2607.24223找到完整论文,代码也在GitHub上公开(github.com/LeqsNaN/RARG)。
Q&A
Q1:RARG和普通的RAG检索增强生成有什么区别?
A:普通RAG是把检索到的文档直接喂给AI,相关性只决定"给哪些文档"。RARG则让相关性进一步决定"按什么顺序搜索文档"以及"搜索结果里哪些行优先展示给AI",相当于在搜索执行过程中全程保持相关性指导,而不仅仅是在最开始筛一次。
Q2:embed_recall工具和普通的向量检索有什么不同?
A:功能上类似,但返回的不是文档内容,而是一个排好序的文件路径列表。这个设计是故意的——研究团队认为检索结果直接给AI看容易让AI"偷懒"靠检索吃饭,而路径列表只提供顺序指导,真正的内容还是要靠rg关键词搜索来找,两者分工明确。
Q3:RARG++在问答任务上比RARG+更好,为什么在BRIGHT检索任务上反而更差?
A:因为匹配级重排序会让AI快速聚焦到最相关的局部证据,这对"找到一个准确答案"的问答任务很有利,但对"找全所有相关文档"的检索任务来说,这种聚焦反而限制了覆盖广度,导致一些相关但不够"突出"的文档被遗漏,所以nDCG@10分数反而低一些。
热门跟贴