重写代码:一种大语言模型增强代码搜索的简单方法
软件工程
2024-06-04 v2 计算与语言
信息检索
机器学习
摘要
在代码搜索中,生成增强检索(GAR)框架通过生成示例代码片段来增强查询,已成为解决代码片段与自然语言查询之间模态不对齐这一主要挑战的有前景策略,特别是利用了大语言模型(LLMs)所展示的代码生成能力。然而,我们的初步研究表明,此类 LLM 增强框架所带来的改进受到一定限制。这一局限性可能归因于生成的代码虽然在功能上准确,但经常与代码库中的真实代码表现出显著的风格偏差。在本文中,我们扩展了基础 GAR 框架,并提出了一种简单而有效的方法,即额外重写(Rewrites the Code, ReCo)代码库中的代码以进行风格归一化。实验结果表明,ReCo 在不同的搜索场景中显著提高了检索准确率,在稀疏检索(最高提升 35.7%)、零样本稠密检索(最高提升 27.6%)和微调稠密检索(最高提升 23.6%)设置中均表现优异。为了进一步阐明 ReCo 的优势并激发代码风格归一化方面的研究,我们引入了代码风格相似度(Code Style Similarity),这是首个专为量化代码风格相似性而设计的指标。值得注意的是,我们的实证发现揭示了现有指标在捕捉风格细微差别方面的不足。源代码和数据可在 \url{https://github.com/Alex-HaochenLi/ReCo} 获取。
引用
@article{arxiv.2401.04514,
title = {Rewriting the Code: A Simple Method for Large Language Model Augmented Code Search},
author = {Haochen Li and Xin Zhou and Zhiqi Shen},
journal= {arXiv preprint arXiv:2401.04514},
year = {2024}
}
备注
Accepted to ACL 2024