Code-Graph-RAG:ナレッジグラフベースのコード検索エンジン 80

小编 ·

Code-Graph-RAG:ナレッジグラフベースのコード検索エンジン

Code-Graph-RAGは、ナレッジグラフとRetrieval-Augmented Generation(RAG)技術を融合したコード検索エンジンで、コード検索の精度向上を目指しています。

Code-Graph-RAG:ナレッジグラフベースのコード検索エンジン

Code-Graph-RAGは、知識グラフと検索拡張生成(RAG)技術を融合したコード検索エンジンであり、コード検索の精度向上を目的としています。

Code-Graph-RAG:ナレッジグラフベースのコード検索エンジン.webp

主な機能:

  • 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