モデル / データセット
vitali87/code-graph-rag avatar
vitali87/code-graph-rag

Code-Graph-RAGはコードを構造グラフとして検索する

このプロジェクトは「The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs.」を基盤として、実践的に使えるオープンソース実装を提供し、再利用可能なツールチェーンと統合手段を備えています。

スター 5,134フォーク 675PythonMIT

ひと目でわかる

これは何?
Tree-sitterで多言語コードを解析し、Memgraphの知識グラフから自然言語で照会・編集・最適化するCode-Graph-RAGを検証する。
誰に向いている?
向いているのは、複数言語のモノレポを構造情報付きで調べ、MemgraphとDockerを運用できる開発チームです。向かないのは、ソースを外部サービスへ送れない環境や、回答をコードレビューなしで反映したい運用です。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Python です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

Tree-sitterからMemgraphへ

Code-Graph-RAGはTree-sitterで多言語コードベースを解析し、構造をMemgraphへ入れます。混在言語のモノレポを一つのグラフスキーマで扱うことがREADMEの中心的な説明です。単なる全文検索ではなく、定義、参照、呼び出しの関係をクエリの材料にする構成です。

試すときは、関数定義と呼び出しを含む小さなモノレポを用意し、言語ごとの解析結果がグラフのどのノードとエッジになるか確認します。元ファイルの行番号とMemgraph上の結果を照合し、未対応構文がエラーになるのか黙って欠落するのかをログで見ます。

vitali87-code-graph-rag-deep-analysisのTree-sitterからMemgraphへでは、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

自然言語操作の境界

READMEは自然言語でコードをquery、edit、optimiseできるとしています。しかし生成された変更を自動的に正しいものとする説明ではありません。グラフが示す関係、モデルの判断、実際のパッチは別の出力なので、同じ画面で混ぜずに扱う設計が必要です。

最初は読み取り専用の質問に限定し、特定関数の呼び出し元を尋ねて回答とグラフ検索結果を比較します。編集を試す場合は一時ブランチへ出し、差分、テスト結果、変更対象の行を人が確認してから適用します。

vitali87-code-graph-rag-deep-analysisの自然言語操作の境界では、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

最近追加されたインデックス

READMEの最新情報には、名前プロパティのグラフ読み取り経路へのインデックス、文字列で呼び出し先を指定するSQLルーチンの索引、ASTベースの重複コード検出が挙げられています。複数リポジトリ間の重複検出への修正も記載されています。

評価では同名関数を異なる名前空間に置き、名前検索が誤って一つへ収束しないか確認します。SQLルーチンの文字列呼び出しと、二つのリポジトリに同じAST片を置いた場合を分け、検出結果にファイル境界が残るかを記録します。

vitali87-code-graph-rag-deep-analysisの最近追加されたインデックスでは、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

モノレポを一つのスキーマで見る

異なる言語のコードを統一スキーマへ置くことは、横断検索の利点である一方、言語ごとの意味差を隠す可能性があります。READMEが対応言語の一覧や全構文の完全性を保証しているわけではないため、解析できた範囲をプロジェクトごとに確定する必要があります。

実データではJavaScript、Python、SQLなど代表的なファイルを少量ずつ登録し、同じ概念を表すノードの属性を比較します。生成時刻と対象コミットを保存し、再インデックス後にノード数、エラー数、主要な呼び出し経路が変わらないかを見ます。

vitali87-code-graph-rag-deep-analysisのモノレポを一つのスキーマで見るでは、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

Memgraphを含む実行環境

Code-Graph-RAGの価値は解析器だけでなく、グラフデータベースを含む実行経路にあります。Memgraphの起動、永続ボリューム、接続設定、初回インデックス時間は利用環境の条件になります。READMEで紹介される外部バッジは、手元の性能を保証するものではありません。

導入前にコンテナのポートとボリュームを確認し、空のグラフへ一度登録して再起動後も結果が残るかを見ます。小さい入力から大きいモノレポへ段階的に増やし、メモリ使用量、インデックス時間、検索遅延を同じ質問で測定します。

vitali87-code-graph-rag-deep-analysisのMemgraphを含む実行環境では、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

採用判断をパッチ単位で行う

このプロジェクトは、コード関係を自然言語の入口に渡すための解析基盤です。回答の便利さだけでは、誤った参照や欠落した構文を発見できません。CI、レビュー、グラフ更新の担当を既存の開発フローへ置けるかが適合条件になります。

まず読み取りクエリの正答率ではなく、正しいファイルと行へたどり着けるかを確認します。次に重複検出と一つの編集提案を試し、失敗時に元のソースを壊さず復旧できることを確認します。ここまでの証跡を持てない場合は、検索補助の範囲に限定するのが妥当です。

vitali87-code-graph-rag-deep-analysisの採用判断をパッチ単位で行うでは、入力、処理結果、失敗時の記録を別々に確認します。設定を一つだけ変更して再実行し、変更前後の出力とログに説明できる差分があるかを見ます。

編集部の結論

向いているのは、複数言語のモノレポを構造情報付きで調べ、MemgraphとDockerを運用できる開発チームです。向かないのは、ソースを外部サービスへ送れない環境や、回答をコードレビューなしで反映したい運用です。評価では `docker compose` の構成を確認し、インデックス対象、グラフ検索、変更提案を一つの小さなリポジトリで照合してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート