代码图谱RAG

vitali87/code-graph-rag 访问 GitHub ↗
🔤 Python ★ 4623 ⑂ 0 weekly #14 (+910) 抓取 2026-08-19

一句话简介

基于代码图谱的检索增强生成系统,通过构建代码结构图实现上下文感知的智能问答与代码理解。

标签

  • 代码分析
  • 检索增强生成
  • 知识图谱
  • 静态分析
  • Python

适用应用场景

  • 代码库智能问答
  • 代码语义搜索
  • 跨文件依赖分析
  • 新成员代码理解

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 数据,将动态调用合并到图中,从而暴露静态分析无法看到的接口分发、虚方法、函数指针、反射与框架路由行为。

技术架构

系统由两个核心组件构成:

  1. 多语言解析器:基于 Tree-sitter 读取代码库,将函数、类、方法、模块及其相互关系以语言无关的统一模式写入 Memgraph。
  2. 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(产出 ModuleFunctionClass 节点及导入边)。

安装

通过 PyPI 发布,推荐使用 uvpipx 安装,并启用 treesitter-full(全部语言)与 semantic(向量检索)扩展:

# 使用 uv(推荐)
uv tool install "code-graph-rag[treesitter-full,semantic]"

# 或使用 pipx
pipx install "code-graph-rag[treesitter-full,semantic]"

额外依赖:Docker(运行 Memgraph)、cmakeripgrep

快速上手

# 一键启动内置的 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…