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