Code Graph RAG 教程:知识图谱检索理解多语言代码库

⭐ 4.4k Stars 🔤 语言:Python 📜 协议:Apache-2.0

简介

Code Graph RAG 将知识图谱技术与检索增强生成(RAG)结合,专为理解和分析多语言代码库设计。它通过构建代码实体(函数、类、模块)之间的关系图谱,让 LLM 能够更准确地回答代码相关的问题。与传统的 Graphify 代码知识图谱 方案相比,Code Graph RAG 更侧重于将图谱直接服务于 LLM 推理。

核心功能

功能说明支持语言
多语言解析使用 Tree-sitter 解析多种编程语言 ASTPython/JS/TS/Go/Java/Rust/C++
知识图谱构建自动提取函数调用、类继承、模块依赖关系全部支持语言
图谱检索基于 Cypher 查询的精准代码实体检索-
RAG 集成将图谱检索结果注入 LLM 上下文OpenAI/Anthropic/本地模型
增量更新支持代码变更后的图谱增量更新-
可视化内置代码关系图谱可视化工具-

安装

# pip 安装
pip install code-graph-rag

# 安装 Neo4j 作为图谱数据库(Docker 方式)
docker run --name neo4j-codegraph \
  -p 7474:7474 -p 7687:7687 \
  -e NEO4J_AUTH=neo4j/password \
  -d neo4j:5-community

# 从源码安装
git clone https://github.com/codegraphrag/code-graph-rag.git
cd code-graph-rag
pip install -e ".[all]"

使用示例

from code_graph_rag import CodeGraphRAG

# 初始化
cgr = CodeGraphRAG(
    neo4j_uri="bolt://localhost:7687",
    neo4j_auth=("neo4j", "password"),
    llm_model="claude-sonnet-4-20250514"
)

# 索引代码库
cgr.index_repository(
    path="/path/to/your/codebase",
    languages=["python", "javascript", "typescript"],
    incremental=False
)

# 查询代码关系
result = cgr.query("哪些函数调用了 process_payment?")
for func in result.functions:
    print(f"{func.name} ({func.file}:{func.line})")
    print(f"  调用链: {func.call_chain}")

# RAG 增强问答
answer = cgr.ask("解释支付模块的整体架构和关键流程")
print(answer)
# 输出包含:模块依赖关系图 + 关键函数说明 + 调用链路

# 使用 Cypher 直接查询图谱
cypher_result = cgr.run_cypher("""
  MATCH (f:Function)-[:CALLS]->(g:Function {name: 'process_payment'})
  RETURN f.name, f.file, f.line
  ORDER BY f.file
""")

方案对比

方案检索精度跨语言图谱可视化增量更新部署复杂度
Code Graph RAG✅ 7+语言✅ 内置中等
纯向量RAG
Sourcegraph⚠️ 有限
CTags+grep极低

总结

Code Graph RAG 为理解和导航大型多语言代码库提供了一种全新的方式。通过将代码关系建模为知识图谱并直接服务于 LLM 推理,它解决了传统向量检索在代码理解场景下的不足。对于需要在新项目中快速理解代码架构、进行代码审查或构建智能代码助手的团队,Code Graph RAG 是一个值得尝试的方案。Apache-2.0 协议也使其商业友好。

📚 常见问题

Code Graph RAG是什么?

Code Graph RAG 将知识图谱技术与检索增强生成(RAG)结合,专为理解和分析多语言代码库设计。它通过构建代码实体(函数、类、模块)之间的关系图谱,让 LLM 能够更准确地回答代码相关的问题。与传统的 Graphify 代码知识图谱 方案相比,Code Graph RAG 更侧重于将图谱直接服务于 LLM 推

如何上手Code Graph RAG?

Superpowers AI 编程技能指南