← 最新论文
🤖 machine learning

SpIDER: Spatially Informed Dense Embedding Retrieval for Software Issue Localization

本文提出了 SpIDER,一种将基于大语言模型(LLM)的推理与基于图的代码库探索相结合的空间感知密集嵌入检索方法,旨在显著提升软件缺陷定位能力,并通过一个新的多语言基准测试 SpIDER-Bench 进行了验证。

原作者: Shravan Chaudhari, Rahul Thomas Jacob, Mononito Goswami, Jiajun Cao, Shihab Rashid, Christian Bock

发布于 2026-02-09
📖 1 分钟阅读☕ 轻松阅读

原作者: Shravan Chaudhari, Rahul Thomas Jacob, Mononito Goswami, Jiajun Cao, Shihab Rashid, Christian Bock

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

SpIDER:空间感知密集嵌入检索 (Spatially Informed Dense Embedding Retrieval) 论文解析

核心问题:在数字干草堆中寻找针头

想象你是一名侦探,正试图在一座巨大的、多层结构的图书馆(代码库)中修复一台损坏的机器(软件漏洞/Bug)。你有一个关于问题的描述,但你并不确切知道是哪本书(文件)、哪个章节(类),或者哪段特定的段落(函数)包含了这个错误。

目前的 AI 代理尝试通过阅读文字来寻找正确的段落。它们会问:“哪段话听起来最像我的问题描述?”这就像是在使用一个只寻找关键词匹配的搜索引擎。这很有用,但 AI 经常会选错段落,因为虽然文字匹配上了,但其位置却是错误的。

缺失的一环:地图

作者意识到,代码不仅仅是一堆文字;它是一种结构。函数会调用其他函数;文件包含类。它就像一棵家族树,或者一张地铁路线图。

  • 缺陷: 目前的 AI 方法忽略了这张“地图”。它们只看文字。
  • 现实情况: 如果一个 Bug 在一个房间里,那么修复方案通常就在隔壁房间,或者楼上的房间。这个“邻里关系”至关重要。

解决方案:SpIDER

作者创建了一个名为 SpIDER(空间感知密集嵌入检索)的新工具。你可以把 SpIDER 想象成一名同时使用两种工具的侦探:

  1. 字典: 用来理解文字的含义(语义相似度)。
  2. 地图: 用来理解建筑物的布局(图结构)。

SpIDER 是如何工作的(类比说明)

想象你正在一本巨大的食谱中寻找特定的菜谱。

  1. 第一次猜测(“Top-K”):
    首先,SpIDER 使用“字典”来找到 20 个听起来最像你请求的段落。假设它选出了 20 个段落。

  2. “种子”(Seed)选择:
    从这 20 个中,它挑选出前 5 个最佳猜测。这些就是“种子”。

  3. 邻域搜索:
    SpIDER 并没有止步于此,它开始查看地图。它会问:“这些 5 个种子的邻居是谁?”

    • 在代码库中,“邻居”可能是一个调用了该种子函数的函数,或者是同一个文件内的函数。
    • SpIDER 会从种子出发走几步(就像在走廊里向下走 4 扇门),看看那里有什么。
  4. 智能过滤器(“LLM”):
    现在,SpIDER 有了一份由原始 20 个段落加上新发现的邻居组成的列表。这份列表太多了,没法全部阅读。于是,它请来了一位超级聪明的 AI(大语言模型)来充当图书管理员

    • 图书管理员会观察这些新的邻居并询问:“这个真的有助于修复 Bug,还是仅仅只是在附近?”
    • 如果管理员说“是的”,SpIDER 就会用这个强力的“新邻居”替换掉原始列表中较弱的猜测。

结果: 你仍然只得到 20 个结果(预算保持不变),但现在你的列表包含了那些通过纯文字搜索可能会错过的“附近”段落。

为什么这很重要(研究结果)

作者在一个名为 SpIDER-Bench 的新基准测试上测试了这种方法,该测试涵盖了 Python、Java、JavaScript 和 TypeScript 的代码。(以往的大多数测试仅关注 Python)。

  • 更高的准确率: 与仅看文字的标准方法相比,SpDR 发现正确代码的频率一致提高了 13%
  • 跨语言魔力: 尽管该 AI 主要是在 Python 上训练的,但 SpIDER 同样能很好地帮助它在 Java 和 JavaScript 中寻找 Bug,因为“地图”(结构)在所有这些语言中的运作方式是相同的。
  • 实际影响: 当他们使用 SpIDER 来辅助 AI 代理实际修复 Bug 时,该代理在解决问题上的成功率更高。找得更准 = 修得更好。

“秘密武器”

论文指出,仅仅依赖文字匹配就像是只通过名字来寻找你的朋友。SpIDER 增加了“我的朋友通常在咖啡馆附近出没”这样的知识,使得 AI 即使在名字匹配不完美的情况下,也能在正确的“邻里”中寻找。

总结

SpIDER 是一种让 AI 寻找代码 Bug 的更聪明的方式。它不仅阅读文字,还观察代码所处的“邻里”。通过将文字匹配与代码结构的“地图”相结合,它能更可靠地找到正确的文件和函数,从而帮助 AI 代理更快、更准确地修复软件。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →