代码图谱RAG
一句话简介
基于代码图谱的检索增强生成系统,通过构建代码结构图实现上下文感知的智能问答与代码理解。
标签
适用应用场景
- 代码库智能问答
- 代码语义搜索
- 跨文件依赖分析
- 新成员代码理解
README 中文摘要
项目概述
Code-Graph-RAG 是一个面向多语言代码库的检索增强生成(RAG)系统。它使用 Tree-sitter 解析源代码,在 Memgraph 图数据库中构建代码结构知识图谱,并允许用户用自然语言查询、编辑和优化代码。整个系统采用统一的图模式,能够在同一个 monorepo 中处理多种混合编程语言。
核心特性
基于图谱的能力包括:
- 用自然语言提问,获得基于真实代码结构的回答。
- 按名称或意图检索函数、类、方法的源码。
- 通过代理执行基于 AST 的精准代码修改,并在改动前显示 diff 预览。
- 按语言最佳实践或自定义编码规范进行代码优化。
- 从入口点追踪调用与引用边,发现死代码。
- 使用 ast-grep 进行结构化的 AST 模式搜索与重写。
- 通过
cgr trace命令运行时调用追踪,覆盖 Python、JVM、Node.js、.NET、PHP、Lua、Dart、Go、Rust、C/C++,并支持导入 eBPF 持续剖析器(Parca、Pyroscope、OpenTelemetry)产出的 pprof 数据,将动态调用合并到图中,从而暴露静态分析无法看到的接口分发、虚方法、函数指针、反射与框架路由行为。
技术架构
系统由两个核心组件构成:
- 多语言解析器:基于 Tree-sitter 读取代码库,将函数、类、方法、模块及其相互关系以语言无关的统一模式写入 Memgraph。
- RAG 系统(
codebase_rag/):交互式 CLI,将自然语言转换为 Cypher 查询语句,从图中检索匹配代码,并驱动 AI 编辑与优化流程。
Source Code -> Tree-sitter Parser -> AST Analysis -> Memgraph Knowledge Graph
|
User Query -> AI Model (Cypher Gen) -> Cypher Query -> Graph Results -> Response
支持的语言
完全支持:Python、TypeScript、TSX、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua、Dart。
开发中:Scala。
通过可插拔的 ast-grep 层支持结构化解析:Ruby(产出 Module、Function、Class 节点及导入边)。
安装
通过 PyPI 发布,推荐使用 uv 或 pipx 安装,并启用 treesitter-full(全部语言)与 semantic(向量检索)扩展:
# 使用 uv(推荐)
uv tool install "code-graph-rag[treesitter-full,semantic]"
# 或使用 pipx
pipx install "code-graph-rag[treesitter-full,semantic]"
额外依赖:Docker(运行 Memgraph)、cmake、ripgrep。
快速上手
# 一键启动内置的 Memgraph + Qdrant 服务(无需 compose 文件)
cgr daemon up
# 解析仓库到图中,然后开始查询
cgr start --repo-path /path/to/repo --update-graph
cgr start --repo-path /path/to/repo
图是共享的,可对多个仓库分别建立索引,互不影响。如需清空全部项目重置,添加 --clean 参数——该操作会删除共享图中的所有项目,并在影响其他项目时要求确认。
MCP 服务器
Code-Graph-RAG 同时作为 MCP 服务器运行,使 Claude Code 等 MCP 客户端可直接查询和编辑代码库。
Python SDK
提供图加载器、Cypher 生成器、语义搜索等模块的编程接口,便于将图能力集成到自有工具链中。
摘要更新于 2026-08-18 00:33:29
· 原文 10944 字符
· md5 4a4b6ec457c2…