2024年にMicrosoft Researchが発表したGraphRAGは、従来のRAG(Retrieval-Augmented Generation)が抱えていた「全体像を把握できない」という弱点を克服し、AIによるドキュメント理解を次のフェーズへと引き上げました。
本記事では、GraphRAGの核心的なアイデアから、劇的なコストダウンを実現したLazyGraphRAG、そして実務で不可欠なNeo4j/LangChainとの連携実装までを徹底解説します。
1. 従来のRAG vs GraphRAG:なぜ「グラフ」が必要なのか
従来のRAG(Baseline RAG)は、テキストを断片(チャンク)に分け、ベクトル類似度で検索します。これは「局所的な事実」を問う質問には強いですが、**「グローバル質問(俯瞰的な問い)」**には極めて脆弱でした。
従来のRAGが苦手な質問の例
- 「この100件の議事録全体から、隠れた共通課題を5つ挙げて」
- 「登場人物たちの相関図と、物語全体の大きな変化の転換点を教えて」
- 「過去1年間の調査資料から見える、市場の大きなトレンドは?」
GraphRAGの解決策
GraphRAGは、LLM(大規模言語モデル)を用いてテキストから**「知識グラフ(Knowledge Graph)」を自動構築します。さらに、グラフ理論のコミュニティ検出アルゴリズム**を用いて情報を階層的にクラスタリングし、各階層の「要約レポート」を事前に作成しておきます。
これにより、クエリ時には関連する「要約」を読み込むだけで、膨大なデータセット全体のコンテキストを考慮した回答が可能になります。
2. 処理フロー:IndexingとQuery
GraphRAGの処理は、事前の「インデックス構築」と、実行時の「クエリ処理」の2段階に分かれます。
Indexingフェーズ(知識の構造化)
- チャンク分割: テキストを適切なサイズに分ける。
- エンティティ・リレーション抽出: LLMで「誰が・何に・どうした」を抽出。
- コミュニティ検出: Leidenアルゴリズム等で、関連の強いノード群をクラスタ化。
- コミュニティ要約(重要): 各クラスターに対し、LLMが要約レポートを作成。 これが「全体像」を答えるための鍵となります。
Queryフェーズ(探索と生成)
- Local Search: 特定のエンティティ(例:特定の人物や製品)に関連する近傍情報を検索。
- Global Search: 事前作成した「コミュニティ要約」を多段階で集計し、全体像を回答。
