Context-Augmented Code Generation Using Programming Knowledge Graphs

📄 arXiv: 2601.20810v1 📥 PDF

作者: Shahd Seddik, Fahd Seddik, Iman Saberi, Fatemeh Fard, Minh Hieu Huynh, Patanamon Thongtanunam

分类: cs.SE, cs.LG

发布日期: 2026-01-28

🔗 代码/项目: GITHUB


💡 一句话要点

提出基于编程知识图谱的上下文增强代码生成方法,提升复杂问题解决能力

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码生成 大型语言模型 检索增强生成 编程知识图谱 上下文增强 知识图谱 代码检索

📋 核心要点

  1. 现有代码生成模型在处理复杂问题时,面临检索信息不准确和生成内容出现幻觉等挑战。
  2. 论文提出编程知识图谱(PKG)方法,通过细粒度表示和检索代码与文本,增强上下文信息。
  3. 实验结果表明,该方法在代码生成任务中,显著提升了准确率,尤其是在复杂问题上。

📝 摘要(中文)

大型语言模型(LLMs)在代码生成方面表现出色,但在处理复杂问题时面临挑战。检索增强生成(RAG)通过整合外部知识来缓解这个问题,但检索模型经常遗漏相关上下文,生成模型则会产生与问题无关的幻觉。我们提出了一种编程知识图谱(PKG),用于代码和文本的语义表示和细粒度检索。我们的方法通过树剪枝提高检索精度,并通过整合非RAG解决方案的重排序机制来减轻幻觉。将外部数据构建成更细粒度的节点可以提高检索粒度。在HumanEval和MBPP上的评估表明,pass@1准确率提高了高达20%,在MBPP上超过基线34%。我们的研究结果表明,我们提出的PKG方法与重排序器有效地解决了复杂问题,同时对无需RAG即可正确解决的问题保持了最小的负面影响。复制包已发布在https://github.com/iamshahd/ProgrammingKnowledgeGraph。

🔬 方法详解

问题定义:现有的大型语言模型在代码生成任务中,尤其是在解决复杂编程问题时,面临着两个主要的痛点。一是检索增强生成(RAG)方法依赖的检索模型,常常无法准确地找到与问题相关的上下文信息。二是生成模型在缺乏充分上下文的情况下,容易产生与问题无关的“幻觉”代码,导致生成结果不正确。

核心思路:论文的核心思路是构建一个编程知识图谱(PKG),用于对代码和文本进行语义表示和细粒度检索。通过将代码和文本分解为更小的、语义更明确的节点,PKG能够更精确地捕捉问题所需的上下文信息。此外,论文还引入了一个重排序机制,用于过滤掉检索到的不相关信息,从而减少生成模型产生幻觉的可能性。

技术框架:整体框架包含以下几个主要模块:1) 编程知识图谱构建:将代码和文本数据构建成细粒度的知识图谱,其中节点表示代码片段或文本片段,边表示它们之间的关系。2) 检索模块:利用构建好的PKG,根据输入的问题检索相关的代码和文本片段。检索过程采用树剪枝策略,提高检索效率和精度。3) 重排序模块:对检索到的代码和文本片段进行重排序,过滤掉不相关的信息,减少生成模型产生幻觉的可能性。重排序机制整合了非RAG解决方案。4) 代码生成模块:利用检索到的上下文信息,生成最终的代码。

关键创新:论文的关键创新在于提出了编程知识图谱(PKG)的概念,并将其应用于代码生成任务中。与传统的基于文本的检索方法相比,PKG能够更精确地表示代码和文本的语义信息,从而提高检索精度。此外,重排序机制的引入,有效地减少了生成模型产生幻觉的可能性。

关键设计:PKG的构建涉及对代码和文本进行解析和分解,提取关键的语义单元,并建立它们之间的关系。检索模块采用树剪枝策略,以提高检索效率。重排序模块的设计需要考虑多种因素,例如代码片段的相关性、重要性等。具体的参数设置和损失函数等技术细节在论文中进行了详细描述(具体细节未知)。

📊 实验亮点

实验结果表明,该方法在HumanEval和MBPP数据集上取得了显著的性能提升。在HumanEval上,pass@1准确率提高了高达20%。在MBPP上,该方法超过基线34%。这些结果表明,该方法能够有效地解决复杂编程问题,并提高代码生成质量。同时,该方法对无需RAG即可正确解决的问题保持了最小的负面影响。

🎯 应用场景

该研究成果可应用于智能编程助手、自动化代码生成、代码补全、程序理解和软件维护等领域。通过提供更准确的上下文信息,可以显著提高代码生成质量和开发效率,降低软件开发成本。未来,该技术有望进一步扩展到其他编程语言和领域,并与其他AI技术相结合,实现更智能化的软件开发。

📄 摘要(原文)

Large Language Models (LLMs) excel at code generation but struggle with complex problems. Retrieval-Augmented Generation (RAG) mitigates this issue by integrating external knowledge, yet retrieval models often miss relevant context, and generation models hallucinate with irrelevant data. We propose Programming Knowledge Graph (PKG) for semantic representation and fine-grained retrieval of code and text. Our approach enhances retrieval precision through tree pruning and mitigates hallucinations via a re-ranking mechanism that integrates non-RAG solutions. Structuring external data into finer-grained nodes improves retrieval granularity. Evaluations on HumanEval and MBPP show up to 20% pass@1 accuracy gains and a 34% improvement over baselines on MBPP. Our findings demonstrate that our proposed PKG approach along with re-ranker effectively address complex problems while maintaining minimal negative impact on solutions that are already correct without RAG. The replication package is published at https://github.com/iamshahd/ProgrammingKnowledgeGraph