AI・機械学習
上級

GraphRAG(グラフラグ)

テキストコーパスからナレッジグラフを自動構築し、グラフのコミュニティ構造を活用してRAG(検索拡張生成)の検索精度と回答品質を向上させる手法。Microsoft Researchが2024年に提唱し、従来のベクトル検索RAGでは困難だった「全体像を問う質問」への回答を可能にする。

0 回閲覧
0 いいね

GraphRAGとは

GraphRAGとは、テキストコーパスからLLMを用いてナレッジグラフを自動構築し、そのグラフ構造(特にコミュニティ検出)を活用して検索拡張生成(RAG)の品質を大幅に向上させる手法である。Microsoft Researchが2024年4月に論文を公開し、同年7月にOSSとして公開(GitHub Star 25,000+、2025年12月時点)された。従来のベクトル検索ベースRAGが「特定の事実を問う質問」に強い一方、「データセット全体の傾向や要約を問う質問」には弱いという課題をグラフ構造で解決する。

概要

GraphRAG のパイプラインは大きく2フェーズに分かれる:

インデキシングフェーズ:

  1. テキストをチャンクに分割(デフォルト300トークン)
  2. LLM(GPT-4o推奨)でエンティティと関係を抽出
  3. エンティティグラフを構築
  4. Leidenアルゴリズムでコミュニティ検出(階層的クラスタリング)
  5. 各コミュニティのLLM要約(Community Summary)を生成

クエリフェーズ:

  • Local Search: クエリに関連するエンティティの近傍サブグラフから回答生成(Vanilla RAG類似だがグラフ構造活用)
  • Global Search: 全コミュニティ要約を Map-Reduce で集約して回答生成(全体像把握に特化)

Local Search vs Global Search

特性Local SearchGlobal Search
クエリタイプ特定の事実・エンティティ全体傾向・テーマ要約
検索対象エンティティ近傍のサブグラフ全コミュニティ要約
レイテンシ1-3秒5-30秒
API コスト/クエリ$0.01-0.03$0.05-0.15
精度 (Comprehensiveness)ベクトルRAG比 +15%ベクトルRAG比 +60-80%

インデキシングコスト実測値

コーパスサイズチャンク数LLM (GPT-4o) コスト処理時間エンティティ数
1,000文書 (500KB)3,200$5-1030-60分2,000-5,000
10,000文書 (5MB)32,000$50-1004-8時間15,000-40,000
100,000文書 (50MB)320,000$500-1,0002-4日100,000-300,000

実装方法

Microsoft公式 graphrag パッケージ

pip install graphrag
graphrag init --root ./my-project
graphrag index --root ./my-project
graphrag query --root ./my-project --method local "質問文"

LlamaIndex PropertyGraphIndex

LlamaIndex 0.10+ で PropertyGraphIndex が利用可能。Neo4j をバックエンドに使用する場合、Neo4jPropertyGraphStore でグラフストアを構成する。

LangChain GraphCypherQAChain

Neo4j に直接 Cypher クエリを生成して問い合わせるシンプルなアプローチ。GraphRAG ほどの包括性はないが、既存KGがある場合は構築コストが不要。

ベンチマーク比較(AP News データセット)

手法ComprehensivenessDiversityEmpowerment平均勝率
GraphRAG Global83%78%81%80.7%
Naive RAG (Top-K)52%48%54%51.3%
Map-Reduce Summarization64%55%62%60.3%

課題と改善の方向性

  • 初期コストの高さ: インデキシングでLLMを大量に呼び出すため、大規模コーパスでは$500-1,000超の費用が発生
  • 更新の困難さ: 差分更新(Incremental Indexing)は2025年12月時点で実験的サポート。全再構築が基本
  • ローカルLLM対応: Ollama/vLLM 経由での構築は可能だが、エンティティ抽出精度がGPT-4o比で20-30%低下
  • DRIFT Search (2025): Local と Global の中間的な手法。コミュニティ要約から開始し、関連サブグラフへドリルダウン

よくある質問(FAQ)

Q1: 通常のベクトルRAGとGraphRAGのどちらを使うべきですか? A: 「特定の事実を答える」用途なら通常RAGで十分。「データ全体の傾向」「複数文書にまたがる洞察」が必要ならGraphRAG。コスト許容度が低い場合は通常RAGにKGを補助的に追加するハイブリッド構成が現実的。

Q2: GraphRAGの構築にGPT-4oは必須ですか? A: エンティティ抽出の品質がパイプライン全体の精度を決定するため、GPT-4oまたはClaude 4 Sonnet以上が推奨。GPT-4o-mini やローカルLLMでも動作するが、抽出漏れ・誤抽出が増加し、最終的な回答品質に影響する。

Q3: GraphRAGは日本語コーパスでも使えますか? A: 使用可能。ただしエンティティ抽出のプロンプトを日本語に調整する必要がある。日本語特有の問題として、固有名詞の境界判定やカタカナ外来語の正規化に注意が必要。

まとめ

  • GraphRAGはグラフ構造のコミュニティ検出を活用してRAGの包括性を向上させる
  • Global Searchで全体像、Local Searchで詳細事実への回答に対応
  • インデキシングコストが高い(10万文書で$500-1,000)点が導入障壁
  • Microsoft公式パッケージが最も成熟、LlamaIndex/LangChainでも類似構成が可能