[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 倍,因为仅在推理时运行轻量级桥接模块。

方法论

  1. 代码图编码器

    • 为每个源文件构建图表示(AST、控制流、数据流)。
    • 在 27 万图的大规模语料上使用自监督目标(节点遮蔽、边预测)进行训练,使其学会嵌入结构模式。
  2. 桥接模块

    • 接收三类输入:(a) 原始分词后的代码,(b) 图编码器的嵌入,(c) 自然语言任务提示。
    • 通过跨模态注意力层让各模态相互“对话”,生成 结构感知提示,简洁地编码图语义。
  3. 与冻结 LLM 的集成

    • LLM 参数保持冻结。桥接生成的提示与用户提示拼接后送入 LLM。
    • 仅对桥接模块在下游任务(如摘要、翻译)进行微调,极大降低训练成本。
  4. 评估

    • 基准包括代码摘要(使用 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)>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
Back to Blog

相关文章

阅读更多 »