摘要
尽管最近取得了进展,但大型语言模型( LLM )仍然会生成易受攻击的代码。检索增强生成( RAG )具有通过整合外部安全知识来增强LLM以实现安全代码生成的潜力。然而,传统的RAG设计难以应对原始安全相关文档的噪音,现有的检索方法忽略了任务描述中隐含的重要安全语义。 为了解决这些问题,我们提出了\ textsc {Rescue} ,这是一个新的RAG框架,用于安全代码生成,具有两项关键创新。首先,我们提出了一种混合知识库构建方法,该方法将LLM辅助的集群-然后-总结蒸馏与程序切片相结合,生成高级安全指南和简洁的、以安全为中心的代码示例。 其次,我们设计了一个层次化的多方面检索,从上到下遍历构建的知识库,并在每个层次上集成多个安全关键事实,确保全面准确的检索。我们在四个基准上评估了\ textsc {Rescue} ,并将其与六个LLM的五种最先进的安全代码生成方法进行了比较。 结果表明,\ textsc {Rescue}将SecurePass @ 1指标平均提高了4.8分,从而建立了全新的最先进的安全性能。此外,我们进行了深入的分析和消融研究,以严格验证\ textsc {Rescue}中单个组件的有效性。我们的代码位于\ url {https://github.com/steven1518/RESCUE}。