SPENCER:面向高效代码检索的自适应模型蒸馏
软件工程
2025-08-04 v1 人工智能
摘要
代码检索旨在根据用户的自然语言查询提供所需的代码片段。随着深度学习技术的发展,采用预训练模型进行此任务已成为主流。鉴于检索效率,之前的大多数方法采用双编码器进行处理,分别对描述和代码片段进行编码生成表示向量。然而,双编码器的模型结构往往限制了模型性能,因为在训练过程中缺乏对代码片段和描述在底层的交互。为在保持效率的同时提高模型效果,我们提出一种框架,即采用自适应模型蒸馏技术高效检索,命名为SPENCER。SPENCER首先采用双编码器缩小搜索空间,然后采用交叉编码器提高准确性。为提高SPENCER的效率,我们提出一种新颖的模型蒸馏技术,可大幅减少双编码器的推理时间,同时保持整体性能。我们还提出一种教学助手选择策略,用于在模型蒸馏期间为不同的预训练模型灵活选择合适的教学助手模型,以确保模型性能。大量实验表明,双编码器和交叉编码器的组合在代码检索方面的总体性能优于仅采用双编码器的模型。此外,我们的模型蒸馏技术在保持超过98%整体性能的同时,将双编码器的推理时间缩短70%。
引用
@article{arxiv.2508.00546,
title = {SPENCER: Self-Adaptive Model Distillation for Efficient Code Retrieval},
author = {Wenchao Gu and Zongyi Lyu and Yanlin Wang and Hongyu Zhang and Cuiyun Gao and Michael R. Lyu},
journal= {arXiv preprint arXiv:2508.00546},
year = {2025}
}