[Paper] 桥接代码图与大型语言模型以实现更好的代码理解
发布: (2025年12月9日 GMT+8 00:00)
6 min read
原文: arXiv
Source: arXiv - 2512.07666v1
概览
大型语言模型(LLM)已成为许多代码相关任务的首选工具,但它们仍将源代码视为平面的 token 序列。这忽略了编译器和开发者依赖的丰富图结构(例如抽象语法树、数据流图)。本文提出了 CGBridge,一种即插即用的“桥梁”,能够将代码图知识注入任意冻结的 LLM,从而在代码摘要、翻译以及其他代码理解基准上显著提升性能,同时保持推理速度。
关键贡献
- 图感知预训练:在 27 万真实代码图上训练专用的代码图编码器,以捕获结构语义。
- 跨模态桥接模块:通过跨注意力对齐代码 token、图嵌入和自然语言提示,生成结构增强的提示,而无需修改 LLM 权重。
- 即插即用设计:可与任意现成的指令遵循 LLM(如 GPT‑3.5、LLaMA)配合使用——无需架构改动或大规模微调。
- 实证提升:在 LLM‑as‑a‑Judge 代码摘要任务上相对提升最高 16 %,在代码翻译的执行准确率上提升最高 39 %。
- 效率:推理速度比 LoRA‑based 微调快 > 4 倍,因为仅在推理时运行轻量级桥接模块。
方法论
-
代码图编码器
- 为每个源文件构建图表示(AST、控制流、数据流)。
- 在 27 万图的大规模语料上使用自监督目标(节点遮蔽、边预测)进行训练,使其学会嵌入结构模式。
-
桥接模块
- 接收三类输入:(a) 原始分词后的代码,(b) 图编码器的嵌入,(c) 自然语言任务提示。
- 通过跨模态注意力层让各模态相互“对话”,生成 结构感知提示,简洁地编码图语义。
-
与冻结 LLM 的集成
- LLM 参数保持冻结。桥接生成的提示与用户提示拼接后送入 LLM。
- 仅对桥接模块在下游任务(如摘要、翻译)进行微调,极大降低训练成本。
-
评估
- 基准包括代码摘要(使用 LLM‑as‑a‑Judge)和代码翻译(以执行准确率衡量)。
- 对照组:原始 LLM、图增强提示(简单拼接图 token)以及 LoRA‑based 微调。
结果与发现
| 任务 | 基线 (LLM) | 图增强提示 | CGBridge | 相对提升(相对于基线) |
|---|---|---|---|---|
| 代码摘要 (LLM‑as‑a‑Judge) | – | +9.12 % | +16.19 % | 16 % |
| 代码翻译 (执行准确率) | – | +9.84 % | +38.87 % | 39 % |
| 推理速度(相对于 LoRA) | 1× | 1× | >4× 更快 | — |
含义:该桥接不仅注入了有用的结构线索,而且比传统的参数高效微调更高效。翻译任务上更大的提升表明结构正确性(如保持控制流)对图知识的依赖更强。
实际意义
- 开发者工具:依赖 LLM 提供代码建议、文档生成或自动重构的 IDE 插件,可在无需重新训练庞大模型的情况下提升准确性。
- CI/CD 流水线:自动代码翻译(例如 Python 2 → 3、Java → Kotlin)可获得更高成功率,降低手动修复 bug 的工作量。
- 低资源环境:仅训练轻量桥接且保持 LLM 冻结,企业可使用现有 LLM API(OpenAI、Anthropic),并在本地为专有代码库添加自定义图编码器。
- 安全与合规:图感知提示帮助 LLM 更好地理解数据流,使得结合生成模型的静态分析或漏洞检测更可靠。
局限性与未来工作
- 图构建成本:为大规模代码库生成 AST/数据流图需要预处理开销,对缺乏成熟解析器的语言尤为显著。
- 领域特异性:编码器在通用语料上训练;嵌入式 C、硬件描述语言等专业领域可能需要额外微调。
- 提示长度仍受限:尽管桥接压缩了图信息,极大的模块仍可能触及某些 LLM API 的 token 上限。
- 未来方向:作者建议探索动态图选择(仅为每个查询挑选最相关子图),将桥接扩展至多模态输入(如测试用例、文档),并在更多任务(如 bug 修复、安全审计)上进行评估。
作者
- Zeqi Chen
- Zhaoyang Chu
- Yi Gui
- Feng Guo
- Yao Wan
- Chuan Shi
论文信息
- arXiv ID: 2512.07666v1
- 分类: cs.CL, cs.SE
- 发布日期: 2025 年 12 月 8 日
- PDF: Download PDF