Code-Graph-RAG:一款基于知识图谱的代码搜索引擎
Code-Graph-RAG是一个融合知识图谱与检索增强生成(RAG)技术的代码搜索引擎,目的在于提升代码搜索的精准度。
主要功能:
支持 Python、JavaScript、TypeScript、Rust 和 Go 等多语言代码库
基于 Tree-sitter 实现跨语言的抽象语法树(AST)解析
采用 Memgraph 存储代码结构为互联图谱
支持自然语言查询代码库
通过 Google Gemini 将自然语言转换为 Cypher 查询语句
可直接检索函数/方法的实际源代码
能解析 pyproject.toml 分析外部依赖
支持处理嵌套函数和类层次结构
所有支持语言采用统一图模式设计
技术原理:
知识图谱构建:大模型分析代码库后提取类、函数等实体及其关系(如继承、依赖),构建互联图谱。例如输入代码文档后,系统会拆分文本单元,识别代码结构并生成对应图谱。
图增强检索:
子图检索:用户提问后,系统提取关键实体并在图谱中扩展关联路径(如3跳邻域),生成匹配子图。例如查询某个函数时,可关联到相关类、模块等节点。
混合检索策略:结合向量检索(如BERT嵌入)和图嵌入(如Node2Vec、TransE),通过加权公式(如Score=α⋅cos_sim(q,v)+β⋅graph_score(q,G))确定最终结果。
系统架构:
多语言解析器:基于 Tree-sitter 的代码解析与数据导入系统
RAG 系统:交互式命令行查询界面
核心组件包括:
Tree-sitter 集成:实现跨语言解析
图数据库:Memgraph 存储节点与关系
LLM 集成:Google Gemini 处理自然语言
代码分析:跨语言 AST 遍历提取代码元素
查询工具:专用图查询与代码检索工具
语言配置:多语言映射参数
安装与使用:
前提条件:Python 3.12+、Docker 及 Docker Compose(Memgraph)、Google Gemini API 密钥、uv 包管理器
安装步骤:克隆仓库→安装依赖→配置环境变量→启动 Memgraph
使用流程:解析代码库生成知识图谱→启动 RAG CLI 进行交互查询
应用场景:
代码分析:快速理解代码结构,如查询特定名称类或数据库相关函数
代码复用:通过自然语言描述需求获取语义匹配的代码片段,提升开发效率
项目地址:
https://github.com/vitali87/code-graph-rag