通用代码嵌入是代码搜索、分类和检索等工具的核心。传统的紧凑 Transformer 编码器通常依赖人工编写的 docstring(成本高且不一致)或采集执行轨迹等结构化信号(需要特定环境且代价大)。本文实验性地探索一种替代方案:在双编码器框架下,对小型编码器进行对比式预训练,使用合成的自然语言描述来强调代码的功能和意图,训练时将描述与代码配对,推理时仅保留代码编码器。我们在 C、C++、Java 三种语言的八个检索、分类和生成任务上,将该方法与基于预训练的基线、通用大语言模型以及专用嵌入模型进行比较。结果显示,合成语义监督在相同推理规模下,在八个任务中有五个实现了统计显著的提升,另外两个保持持平;在微调后,其分类性能可匹配或超越规模大两位数的零-shot 模型,并且在预训练数据相同的条件下,与基于执行信息的监督方法持平,表明该方案在可扩展性和效果上是现有代码表示范式的可行替代。
点评