今天是2025年6月23日,星期一,北京,晴
接着看代码RAG,在前面的文章《代码类型的RAG做chunk切分怎么做?兼看改进AST方案》(https://mp.weixin.qq.com/s/N7C-1IRgJYZyyNYiFexC2Q)中,我们看了如何进行切分,而如何跟GraphRAG做结合?
代码GraphRAG项目简单案例
如何跟GraphRAG做结合,也是可以看下一个项目:code-graph-rag(https://github.com/vitali87/code-graph-rag),基于图的Python代码库检索增强生成。
核心点几个:
1、怎么做代码切分?
chunk阶段基于AST做切分,解析Python文件以提取类、函数、方法及其关系;
2、怎么做成知识图谱?
存储上,使用Memgraph将代码库结构存储为知识图谱,这里的知识图谱架构设计如下:

其中:
节点类型包括:项目:代表整个存储库的根节点;包:语言包(Python:__init__.py等);模块:单独的源代码文件(.py等).js.ts.rs.go;类:所有语言的类/结构/枚举定义;功能:模块级功能和独立功能;方法:类方法和相关函数;文件夹:常规目录;文件:所有文件(源代码和其他);ExternalPackage:外部依赖项
关系类型包括:ONTAINS_PACKAGE/MODULE/FILE/FOLDER:分层遏制;DEFINES:模块定义类/函数;DEFINES_METHOD:类定义方法;DEPENDS_ON_EXTERNAL:项目依赖于外部包
3、用来做啥?
这个主要还是面向基础小白使用,用来做代码分析:

如上图,可以支撑的问题如下:
“显示所有名称中包含‘用户’的类”、“查找与数据库操作相关的函数”、“User 类有哪些方法?”、“显示处理身份验证的函数”、“列出所有 TypeScript 组件”、“查找 Rust 结构及其方法”,实际上这个在代码领域,这种用法意义不是很大。
4、怎么查?
利用GoogleGemini将自然语言翻译成Cypher查询,这里主要依靠prompt实现,例如:

参考文献
1、https://github.com/vitali87/code-graph-rag
(文:老刘说NLP)