[Paper] SweRank+: 多语言、多轮代码排序用于软件问题定位

发布: (2025年12月24日 GMT+8 00:18)
7 min read
原文: arXiv

Source: arXiv - 2512.20482v1

概览

SweRank+ 解决了处理大型多语言代码库时的一个痛点:将自然语言的 bug 报告或功能请求转化为需要修复的确切函数。通过将跨语言代码排序引擎(SweRankMulti)与迭代的“代理式”搜索循环(SweRankAgent)相结合,作者将问题定位的准确率提升到了远超当前最先进水平——尤其是在 Python 之外的语言上。

关键贡献

  • SweRankMulti:一个两阶段排序管道(稠密检索器 + 基于 LLM 的列表式重排序器),在覆盖最流行编程语言的大规模多语言问题定位数据集上进行训练。
  • SweRankAgent:一个具备代理功能的搜索框架,执行多轮推理,将中间候选项存入记忆缓冲区,并在多次迭代中细化搜索。
  • 大规模多语言数据集:从真实世界的问题跟踪系统中策划,提供 10 多种语言(Python、Java、JavaScript、Go、C# 等)的高质量训练信号。
  • 最先进的结果:单独使用 SweRankMulti 即在所有基准语言上超越先前的单遍基线;SweRankAgent 进一步提升 top‑k 准确率 3–7 %。
  • 开源发布:代码、模型和数据集均公开可用,支持可复现性和下游工具的使用。

方法论

  1. Embedding Retriever – 仓库中的每个函数都使用一种语言无关的代码编码器(在代码‑注释对上微调的 Transformer)进行编码。Bug 描述也以相同方式编码,随后通过快速的近似最近邻搜索返回前 N 个候选函数。

  2. Listwise LLM Reranker – 将这 N 个候选函数连同原始问题文本一起输入大型语言模型(LLM),对整个列表进行联合打分,使模型能够考虑候选之间的交互(例如,“如果函数 A 相关,则函数 B 的相关性会降低”)。

  3. Agentic Search Loop (SweRankAgent) – 系统不会在一次遍历后停止,而是保持一个 memory buffer,记录之前检查过的候选项。每一次迭代,代理执行以下操作:

    • 使用包含缓冲区洞见的更新提示词(例如,“问题提到了 null pointer;优先考虑处理指针的函数”)查询检索器。
    • 用 LLM 对新批次进行重新排序。
    • 将得分最高的候选项更新到缓冲区。

    循环运行固定的轮次数(通常为 3–5 轮)或直至收敛,实际上实现了粗到细的搜索。

所有组件在多语言数据集上端到端训练,检索器通过对比损失进行优化,重新排序器通过列表式交叉熵进行优化。

结果与发现

基准语言Top‑1 Acc.(先前 SOTA)Top‑1 Acc.(SweRankMulti)Top‑1 Acc.(SweRankAgent)
Defects4JJava58.2 %66.7 %71.3 %
BugsJSJavaScript49.5 %57.9 %62.4 %
GoBugsGo45.1 %53.2 %58.0 %
多语言(10 种语言)52.3 %(平均)60.8 %65.5 %
  • 跨语言迁移:在合并数据集上训练可使低资源语言(如 Rust、Kotlin)的表现提升超过 10 %(绝对值)。
  • 多轮增益:代理循环始终提升 3–7 % 的 top‑k 准确率,验证了迭代推理有助于解决模糊或噪声的错误描述。
  • 效率:尽管增加了轮次,得益于快速的 ANN 检索器和批量 LLM 推理,单 GPU 下每次查询的平均延迟仍保持在 1 秒以下。

实际影响

  • 更快的分流: 将 SweRank+ 集成到 CI/CD 流水线中,可在新问题出现时自动建议要检查的确切函数,显著减少手动搜索时间。
  • 跨语言代码库: 使用多语言技术栈的公司(例如 Java、Go 和 Node.js 的微服务)可以使用单一模型,而无需维护针对特定语言的工具。
  • 开发者助手: IDE 插件可以在你输入错误描述时展示排序后的函数候选项,将自然语言调试转化为引导式代码导航体验。
  • 安全与合规: 当漏洞以高层描述报告时,SweRank+ 能快速定位跨语言受影响的代码路径,加速补丁部署。

限制与未来工作

  • 对高质量问题数据的依赖:当问题描述极其简短或缺乏领域术语时,模型性能会下降。
  • 对大型单体仓库的可扩展性:虽然 ANN 索引可良好扩展,但代理缓冲区的内存消耗随仓库规模增长;需要更智能的剪枝策略。
  • LLM 成本:列表式重排序器依赖大型语言模型,在没有量化或蒸馏的情况下,可能对本地部署成本过高。
  • 未来方向:作者计划探索 (1) 对专有代码库的少量示例适应,(2) 与静态分析工具更紧密的集成以丰富候选集,(3) 开源轻量级重排序器,以保留大部分准确性提升。

作者

  • Revanth Gangi Reddy
  • Ye Liu
  • Wenting Zhao
  • JaeHyeok Doo
  • Tarun Suresh
  • Daniel Lee
  • Caiming Xiong
  • Yingbo Zhou
  • Semih Yavuz
  • Shafiq Joty

论文信息

  • arXiv ID: 2512.20482v1
  • 分类: cs.SE, cs.AI
  • 发表时间: 2025年12月23日
  • PDF: Download PDF
Back to Blog

相关文章

阅读更多 »