「Vector RAGはもう古い、これからは GraphRAG だ」という記事を、私は2024年から見続けています。
Microsoft Research の論文も、GraphRAGの包括性が +26%、多様性が +57% という派手な数字を提示しています。けれど、私の周りの実務エンジニアで「GraphRAGを本番投入した」という人は、思いの外少ない。
理由は2つだと感じていました。(1) 構築コストが高い、(2) 単純な事実検索だと負けるケースがある。これを自分で確かめないと納得できないので、私のドキュメント約1万件 (ブログ記事 + 技術メモ + Slack履歴) を使って、Vector RAG と GraphRAG (Microsoft版) と LightRAG の3つを並べて検証しました。
この記事では、その結果と、どういうユースケースで GraphRAG を採用すべきか を、コスト数字込みで書きます。
前提: Vector RAGとGraphRAGの違い
軽くおさらいします。
Vector RAG (従来型)
質問 → 埋め込みベクトル化 → 類似ドキュメント上位N件を検索
→ LLMに「これら参考にして答えて」と投げる
シンプルで安く速い。pgvectorやChromaDBでサクッと作れます。
GraphRAG (Microsoft版)
[インデックス時]
ドキュメント → LLMがエンティティと関係を抽出
→ ナレッジグラフ構築
→ Leidenアルゴリズムでコミュニティ分割
→ 各コミュニティをLLMが要約
[クエリ時]
質問 → 関連コミュニティ要約を取得 → LLMが回答
ドキュメントを単なる「テキストの塊」ではなく、エンティティと関係のネットワーク として扱います。
質問タイプによる得意/不得意
| 質問タイプ | Vector RAG | GraphRAG |
|---|---|---|
| 「Xとは何か」(単一事実) | 得意 | 苦手 (オーバーキル) |
| 「XとYの違いは」(比較) | 普通 | 得意 |
| 「Xに関連する全プロジェクトを教えて」(俯瞰) | 苦手 | 得意 |
| 「このリポジトリ全体のテーマは」(集約) | 不能 | 得意 |
| 「ABCDの4者の関係性は」(多段推論) | 苦手 | 得意 |
これが理論的な前提です。問題は、実データで本当にこの差が出るか、です。
検証設計
コーパス
私の過去5年分のドキュメント。内訳:
- 個人ブログ記事: 320本
- Zenn / Qiita 記事: 180本
- 技術メモ / 設計ドキュメント: 6,200ファイル
- Slack のチャンネルログ (export): 約3,300スレッド
合計約 1万件のテキスト単位、約 45MB、約 800万トークン。
検索エンジン
3パターン構築:
- Vector RAG (Baseline): pgvector + OpenAI text-embedding-3-small
- GraphRAG (Microsoft版): 公式リポジトリ (microsoft/graphrag) で構築
- LightRAG: HKUDS版 (HKUDS/LightRAG)
評価質問
質問タイプ別に50問ずつ、計250問を用意。
| 質問タイプ | 例 |
|---|---|
| 単一事実 (50問) | 「Whisper v3 Turboの RTF はいくつ?」 |
| 比較 (50問) | 「Neo4jとArangoDBの違いは何ですか?」 |
| 俯瞰 (50問) | 「私が過去に書いた音声AI関連の記事を全部教えて」 |
| 集約 (50問) | 「2025年の検証結果から見える、ローカルLLMのコスパ傾向は?」 |
| 多段推論 (50問) | 「voice-ai-300ms-ux で言及した量子化技術と、ローカルLLM電気代記事で使ったモデル選定の関係は?」 |
各回答は人間 (私) が4段階評価: 0=的外れ, 1=部分的, 2=ほぼ正解, 3=完全正解。
構築コストの実測
1万件のコーパスをインデックスする時点でのコスト比較です。
| エンジン | 所要時間 | API課金 | ローカル計算負荷 |
|---|---|---|---|
| Vector RAG (pgvector) | 約 12分 | $3.20 | CPU負荷ほぼゼロ |
| GraphRAG (Microsoft) | 約 8時間 | $184.50 | LLM呼び出し7,200回 |
| LightRAG (HKUDS) | 約 2時間 | $42.80 | LLM呼び出し1,800回 |
GraphRAGの 57倍のコスト です。
参考: paperclipped.de/en/blog/graph-rag-production でも「10倍〜40倍のインデックスコスト」と報告されており、私の実測ともおおむね一致します。
クエリ時のコストはほぼ同じ ($0.001〜0.005/クエリ)。差はインデックス時に集中します。
GraphRAGをまっとうに動かすなら、最低でも本番LLM (GPT-4o or Claude Sonnet) が必要です。GPT-4o-miniやHaikuだとエンティティ抽出の品質が落ち、Leidenクラスタリングの結果が崩れます。コスト最適化のためにモデルを下げると、GraphRAGの旨味そのものが消えます。
質問タイプ別の正解率
これが本題です。
| 質問タイプ | Vector RAG | LightRAG | GraphRAG |
|---|---|---|---|
| 単一事実 | 86% | 78% | 72% |
| 比較 | 64% | 76% | 84% |
| 俯瞰 | 38% | 64% | 88% |
| 集約 | 22% | 58% | 80% |
| 多段推論 | 26% | 52% | 78% |
| 総合平均 | 47% | 66% | 80% |
結論: GraphRAGは「単一事実」では Vector RAG に負け、それ以外の4タイプでは圧倒的に勝つ。LightRAGは中間。
これは Microsoft の論文の傾向 (包括性 +26% / 多様性 +57%) と同じ向きの結果です。
単一事実でなぜ GraphRAG が負けるのか
GraphRAGはコミュニティ要約を介して回答します。コミュニティ要約は 抽象化されたサマリー なので、「Whisper v3 Turbo の RTF は1300倍」のような特定の数値が、要約の過程で「Whisper v3 Turboは非常に高速」のように丸められてしまうことがあります。
Vector RAGは元のチャンクをそのまま渡すので、数値や固有名詞の保持に強い。
俯瞰・集約で Vector RAG が壊滅する理由
「過去に書いた音声AI関連の記事を全部教えて」のような俯瞰質問は、コーパス全体をスキャンしないと答えられません。Vector RAGは「クエリに類似した上位N件」しか返さないので、関連記事の半分以上を取り逃します。
GraphRAGはコミュニティ単位で要約しているため、「音声AIに関するコミュニティ」を丸ごと取れます。
どこから GraphRAG を入れるべきか
実測結果と構築コストを並べたうえで、私の判断基準を書きます。
GraphRAGを 採用すべき 条件
- ユーザー質問の 半数以上が「俯瞰」「集約」「多段推論」型 であること
- コーパスのインデックスコスト ($100〜$1,000) を許容できること
- ドキュメント追加が バッチ更新 で済むこと (リアルタイム追加が頻発する用途は不向き)
- ドメイン知識のオントロジー (エンティティの型定義) を 事前に設計する人員 がいること
Vector RAG を 維持すべき 条件
- 質問が 個別の事実検索が中心 であること
- インデックスコストを最小化したいこと
- ドキュメントが 頻繁に追加・更新 されること
- プロトタイプフェーズで、まず動くものを早く出したいこと
LightRAG (中間案) を選ぶ条件
- GraphRAGの恩恵は欲しいが、Microsoft版のコストは無理
- Leidenクラスタリングをスキップして、エンティティ単位の検索で十分
- プロダクション統計が少ないことを受け入れられる (まだ採用事例が浅い)
参考: agentmarketcap.ai/.../graph-rag-vs-vector-rag-agent-memory によると、エージェントメモリ用途では Neo4j ベースのGraph RAGがpgvectorを多段推論で上回るとのこと。私の検証結果とも整合的です。
私の現在の構成
長期記憶が必要なものと、即応答性が必要なものを分けています。
[Vector RAG (pgvector)]
- 個別の事実検索
- 最新のドキュメント (24時間以内)
- 検索レスポンス < 200ms
[GraphRAG (Microsoft版、Neo4j バックエンド)]
- 「過去N年の傾向は」のような俯瞰
- 多段推論が必要なリサーチ質問
- Slack履歴の関連スレッド検索
- 週次バッチでインデックス更新
ハイブリッドにすることで、Vector RAGの低コスト+高速応答と、GraphRAGの俯瞰・集約能力を両取りしています。
質問が来たら、まずクエリの型を判定 → 単一事実なら Vector、それ以外は GraphRAG、というルーティングです。判定自体は GPT-4o-mini で十分の精度が出ます。
GraphRAG導入で見落とした罠
3ヶ月運用して、最初の設計では気付かなかった罠を共有します。
罠1: コーパスの 更新頻度 とインデックスコストの掛け算
日次更新が必要なドキュメントを GraphRAG に乗せると、月のAPI課金が 5万〜10万円 超え始めます。私は最初これを見落として、月 ¥87,000 の請求書が来ました。
GraphRAG は 週次〜月次更新で運用するもの、と割り切るのが安全です。
罠2: 抽出されたエンティティの 正規化
「Claude Code」「claude code」「Claude-code」「クロード」がすべて別エンティティになります。LLM抽出はカジュアルにブレるので、後処理での正規化が必須です。
私のグラフには Claude Code が7種類の表記で並んでいて、最初に気付いた時は静かに画面を閉じました。
私はエンティティ名を OpenAI Embedding → 類似度0.92以上で同一視 というポストプロセスを入れています。
罠3: Leidenクラスタリングの 再現性
同じコーパスでも、エンティティ抽出のLLM出力が微妙にブレるため、再インデックスのたびにコミュニティ構造が変わります。「先週のグラフと今週のグラフでコミュニティIDが違う」が起きる。
初回と2回目で「同じコーパスなのに違うグラフが返ってきたんだが」と一晩悩んだのは私です。LLMが入っている以上、ある程度の非決定性は前提として受け入れるしかない。
これを許容できる設計にするか、シード固定 + 差分インデックスにするかは、要件次第です。
詳しいナレッジグラフ構築、GraphRAG vs Vector RAG の比較設計、Neo4j Cypher クエリの実践はナレッジグラフ実践ガイドにまとめています。LightRAG の組み込み、エンティティ正規化、コミュニティ要約のプロンプト設計まで、本番投入用のチェックリスト込みで書きました。
まとめ
- 私のコーパス (約1万件) で Vector RAG / LightRAG / GraphRAG を比較
- インデックスコストは Vector $3 / LightRAG $43 / GraphRAG $185 (約57倍差)
- 総合正解率は Vector 47% / LightRAG 66% / GraphRAG 80%
- ただし「単一事実」では Vector RAG が GraphRAG を上回る (86% vs 72%)
- 俯瞰・集約・多段推論では GraphRAG が圧勝
- 採用条件: 質問の半数以上が俯瞰型 + バッチ更新OK + オントロジー設計人員あり
- 実運用ではVector + GraphRAGのハイブリッド、クエリ型でルーティング推奨
- 罠: 更新頻度×コスト、エンティティ正規化、Leidenの非再現性
「GraphRAG vs Vector RAG」は二択ではなく、質問タイプで使い分ける のが2026年5月時点の現実解です。
面白くいきましょう。
