MGS3:面向多粒度的自监督代码搜索框架
软件工程
2025-06-02 v1 信息检索
摘要
在提升软件可重用性和开发者生产力的过程中,代码搜索作为一种关键技术,旨在基于自然语言查询检索与功能相关的代码片段。尽管利用仓储中海量代码数据进行自监督代码预训练取得了显著进展,但现有方法主要聚焦于利用对比学习将自然语言与函数级别代码片段对齐。这些研究忽略了在函数级别代码片段中普遍存在的细粒度(如块级别和语句级别)代码片段,导致在所有粒度上都表现不佳。为解决此问题,本文首先构建了一个包含 536K 以上自然语言与代码片段对的多粒度代码搜索数据集 MGCodeSearchNet。随后,我们引入一种新颖的多粒度自监督对比学习代码搜索框架(MGS)。首先,MGS具备层次化多粒度表示模块(HMGR),它利用语法结构关系进行层次化表示,并将细粒度信息聚合为更粗粒度的表示。然后,在对比学习阶段,我们致力于为细粒度代码构建相同粒度的正样本,并为细粒度代码引入函数内负样本。最后,我们在各种粒度的iams search基准上进行大量实验,证明该框架在多粒度代码搜索任务中表现卓越。这些实验还展示了其模型无关性与现有预训练代码表示模型的兼容性。
引用
@article{arxiv.2505.24274,
title = {MGS3: A Multi-Granularity Self-Supervised Code Search Framework},
author = {Rui Li and Junfeng Kang and Qi Liu and Liyang He and Zheng Zhang and Yunhao Sha and Linbo Zhu and Zhenya Huang},
journal= {arXiv preprint arXiv:2505.24274},
year = {2025}
}