Which Programming Language and Model Work Best With LLM-as-a-Judge For Code Retrieval?

📄 arXiv: 2510.00324v1 📥 PDF

作者: Lucas Roberts, Denisa Roberts

分类: cs.SE, cs.IR, cs.LG

发布日期: 2025-09-30

备注: Accepted as a full paper at SIGIR-AP 2025

DOI: 10.1145/3767695.3769503

🔗 代码/项目: GITHUB


💡 一句话要点

研究代码检索中,编程语言和模型对LLM评判效果的影响,并提出迁移学习方法。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码检索 大型语言模型 信息检索 编程语言 代码搜索 LLM评判 迁移学习

📋 核心要点

  1. 代码搜索领域面临人工标注成本高昂的挑战,需要编程语言和软件工程的专业知识。
  2. 利用大型语言模型(LLM)进行代码检索和标注,探索不同编程语言和检索器表示的影响。
  3. 实验表明,检索器和编程语言之间存在关联,可用于提高人机相关性判断的一致性,并提出使用转译器构建基准数据集。

📝 摘要(中文)

代码搜索是一项重要的信息检索应用,它能加速新开发者入门、减少软件维护工作量并简化大型代码库的理解。尽管搜索算法和基准测试有所改进,但代码搜索领域仍然滞后,原因之一是代码查询和答案的人工标注成本高昂,因为代码标注需要编程语言和软件工程领域的专业知识。本文研究了使用大型语言模型(LLM)检索函数级别的代码并为代码搜索结果生成标注。通过比较C、Java、Javascript、Go和Python等多种流行语言的人工标注,我们比较了检索器表示(稀疏与语义)、编程语言和LLM的影响。我们关注于实现常见数据结构的存储库,这些数据结构可能在任何编程语言中实现。对于相同的人工标注,我们比较了几种LLM-as-a-Judge模型,以评估编程语言和LLM之间的其他关联。我们发现,所选的检索器和编程语言表现出可以利用的关联,以改善人类和AI相关性判断的一致性,并具有显着的性能影响。我们还发现,不同编程语言的表示(稀疏与语义)存在差异,这会影响人类和AI相关性判断的一致性。我们建议使用转译器来引导其他编程语言中可扩展的代码搜索基准数据集,并在案例研究中证明,人机相关性协议率在很大程度上与研究中的(最坏情况)人际协议相匹配。

🔬 方法详解

问题定义:论文旨在解决代码搜索领域中人工标注成本高昂的问题。现有的代码搜索方法依赖于大量的人工标注数据,而代码标注需要专业的编程语言和软件工程知识,这使得构建大规模的代码搜索数据集变得困难。

核心思路:论文的核心思路是利用大型语言模型(LLM)作为代码检索结果的评判者(LLM-as-a-Judge),自动生成代码搜索结果的标注。通过比较不同编程语言和检索器表示(稀疏与语义)下LLM的评判结果与人工标注的差异,探索编程语言和LLM之间的关联,从而优化代码搜索系统。

技术框架:论文的技术框架主要包括以下几个部分:1)代码检索器:使用不同的检索器(例如,基于稀疏表示的检索器和基于语义表示的检索器)检索代码;2)LLM评判器:使用LLM对检索到的代码进行相关性评判;3)人工标注:使用人工标注作为ground truth,评估LLM评判器的性能;4)比较分析:比较不同编程语言和检索器表示下LLM评判结果与人工标注的差异,分析编程语言和LLM之间的关联。

关键创新:论文的关键创新在于:1)探索了使用LLM作为代码检索结果的评判者,降低了人工标注的成本;2)发现了编程语言和LLM之间的关联,可以用于优化代码搜索系统;3)提出了使用转译器构建大规模代码搜索基准数据集的方法。

关键设计:论文的关键设计包括:1)选择了多种流行的编程语言(C、Java、Javascript、Go和Python)进行实验;2)使用了不同的检索器表示(稀疏与语义)进行比较;3)使用了多种LLM-as-a-Judge模型进行评估;4)设计了详细的实验流程,包括代码检索、LLM评判、人工标注和比较分析。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

实验结果表明,所选的检索器和编程语言表现出可以利用的关联,以改善人类和AI相关性判断的一致性,并具有显着的性能影响。研究还发现,不同编程语言的表示(稀疏与语义)存在差异,这会影响人类和AI相关性判断的一致性。人机相关性协议率在很大程度上与研究中的(最坏情况)人际协议相匹配。

🎯 应用场景

该研究成果可应用于改进代码搜索引擎,提高代码检索的准确性和效率,降低软件开发和维护成本。通过自动生成代码搜索结果的标注,可以构建大规模的代码搜索数据集,从而进一步提升代码搜索系统的性能。此外,该研究提出的使用转译器构建基准数据集的方法,可以促进代码搜索领域的发展。

📄 摘要(原文)

Code search is an important information retrieval application. Benefits of better code search include faster new developer on-boarding, reduced software maintenance, and ease of understanding for large repositories. Despite improvements in search algorithms and search benchmarks, the domain of code search has lagged behind. One reason is the high cost of human annotation for code queries and answers. While humans may annotate search results in general text QA systems, code annotations require specialized knowledge of a programming language (PL), as well as domain specific software engineering knowledge. In this work we study the use of Large Language Models (LLMs) to retrieve code at the level of functions and to generate annotations for code search results. We compare the impact of the retriever representation (sparse vs. semantic), programming language, and LLM by comparing human annotations across several popular languages (C, Java, Javascript, Go, and Python). We focus on repositories that implement common data structures likely to be implemented in any PLs. For the same human annotations, we compare several LLM-as-a-Judge models to evaluate programming language and other affinities between LLMs. We find that the chosen retriever and PL exhibit affinities that can be leveraged to improve alignment of human and AI relevance determinations, with significant performance implications. We also find differences in representation (sparse vs. semantic) across PLs that impact alignment of human and AI relevance determinations. We propose using transpilers to bootstrap scalable code search benchmark datasets in other PLs and in a case study demonstrate that human-AI relevance agreement rates largely match the (worst case) human-human agreement under study. The application code used in this work is available at \href{https://github.com/rlucas7/code-searcher/}{this github repo}.