← ブログに戻る

Vector RAGで3か月粘って壊れた3ケースから作った、GraphRAGへ切り替える7ステップテスト

Vector RAGを本番で3か月動かしていました。壊れるたびにRerankerを足し、top-kをいじり、チャンクを小さくしてはまた壊れる、を繰り返していました。壊れ方はいつも同じ形だったのに、それに気付くまで10週間ほどかかりました。私の学習速度は控えめに言って遅めです。

その形は「2ホップ必要な質問」でした。答えが2つのドキュメントの結合線上にあるとき、私のパイプラインは自信を持って間違えました。「見つかりませんでした」ではありません。それっぽく整った、しかし違う答えを返します。ステークホルダーが1週間だけ信じてくれる、あのタイプの答えです。

この記事は、私が今使っている「切り替えるべきか」を判定する7ステップのテストです。3か月分の失敗をきれいに並べ替えたので、あたかも最初から計画的にやっていたように見えますが、実際はただ間違え続けていただけです。

Vector RAGが本当に止まる3つのクエリ形状

私は失敗ログを rag-failures.md に貯めていて、新しいコーパスで設計を決める前に必ずこの3ケースをテストします。

クエリ形状1: 「AはBにどう影響するか」 答えが、互いを直接参照していない2つのドキュメントの結合部分にある形です。ドキュメントAはconfig変更、ドキュメントBはレイテンシ急増を書いていて、因果を繋ぐ第3の記録(Slackスレッド、runbook、顧客のticket)が両方に触れています。ベクトル検索は「レイテンシ急増」の文書群と「config変更」の文書群を別々に取ってきてLLMに山を2つ渡します。橋はコンテキストに入っていないので、LLMは推測でつなぎます。しばしば間違えます。

クエリ形状2: 「Xに関わる人物を全員、関係別に挙げよ」 答えはエッジのリストです。ベクトルストアが返すのはドキュメントであってエッジではありません。私が一度遭遇したケースでは、正解は40ドキュメントに散らばる14人でした。パイプラインは類似度上位5ドキュメントを返し、LLMは自信満々に6人だけ列挙しました。手作業でground truthと突き合わせないと誰も間違いに気付けません。

クエリ形状3: 「このコーパス全体のテーマは何か」 MicrosoftのGraphRAG論文が最初に潰しに来た例です。ベクトル検索は「データセット全体を要約せよ」に構造的に答えられません。テーマは「テーマはXだ」と書いてあるチャンクではなく、エンティティのクラスタリングから浮かび上がる構造プロパティだからです。私は要約プロンプトをどんどん悪化させながら1日を溶かしました。

自社プロダクトの主要クエリがこの3形状に当てはまるなら、Rerankerのチューニングは救ってくれません。3か月Rerankerをいじり倒した経験からお伝えします。

「とりあえずグラフを足す」で買えないもの

7ステップテストに入る前に、私が無視して痛い目にあった警告を1つ。グラフを足すというのはpgvectorテーブルの隣にNeo4jを立てることではありません。コーパスが変わるたびに構築コストを払うということです。

Microsoft GraphRAGは500ページのコーパスで50〜200ドルの構築コストがかかります。ベクトルRAGは同じコーパスで5ドル未満です。10〜40倍のインデックス倍率で、コーパスサイズと共にコストが積み上がります。10万件で目に見える予算項目になり、100万件で経営承認案件になります。エンティティ抽出だけでインデックストークンの58%を消費するというデータもあります(Graph RAG in 2026)。

「コーパスが2倍になったらどうする?」に肩をすくめるチームなら、7ステップテストを先にやってください。そうでないと、4か月目に誰もメンテしないETLジョブが完成します。

7ステップ切替テスト

Yes/No判定です。Yesの数を数えます。

GraphRAG切替判定7ステップと、LinkedIn/Microsoftベンチマークの実数字

ステップ1: 実クエリの30%以上が2ホップ以上か? 本番のクエリログを1週間分サンプリングし、手で読みます。関係性を尋ねるクエリが3割未満ならグラフは要りません。過半数ならほぼ確実に要ります。「本番ログを読む」を面倒がるとここで失敗します。私は失敗しました。

ステップ2: ユーザーは関係質問か類似質問か? 「Xについてのドキュメントを見つけて」は類似検索。「XとYはどう繋がっているか」は関係検索。Vector RAGは前者に特化した構造で、後者に対して構造的にハンディを負っています。

ステップ3: エンティティの同一性が安定しているか? GraphRAGはドキュメントAのUserAPIとドキュメントBのUserAPIを同じノードに繋げる前提です。エンティティが揺れている(顧客名の表記揺れ、製品バージョンのドリフト、同じチームに3つの呼び方)場合、グラフが働き出す前にエンティティ解決で何週間か消えます。

ステップ4: 専門家は答えを図で描くか? 一番柔らかく聞こえて、私の経験上一番当たるシグナルです。ドメインエキスパートに難しめのクエリをその場で解いてもらいます。ホワイトボードに向かってノードと矢印を描き始めたらグラフ形状です。Confluenceを開いてCtrl-Fしたらドキュメント形状です。

ステップ5: 既に複数リトリーバルをプロンプトで縫合していないか? 現行パイプラインが1クエリで2回リトリーバルを走らせ、「configドキュメントとアラートドキュメントを別々に渡すからLLMで繋いで」と頼んでいるなら、それは既にプロンプト内で手作りのグラフクエリを書いています。ちゃんとグラフ側でやった方が安く正確なことが多いです。

ステップ6: 監査可能な推論経路が要るか? コンプライアンス、医療、法務のドメインでは、答えに証拠チェーンが必要です。「A→B→Cのエッジからこう結論した」というやつです。Vector RAGはtop-kドキュメントを返しますが、経路は返しません。GraphRAGはサブグラフを返すので、そのまま推論トレースとして読めます。

ステップ7: 「遅い答え」より「間違った答え」の痛みが大きいか? ここでLinkedIn事例が効いてきます。LinkedInのSIGIR ‘24論文はKG拡張パイプラインへの切り替えで問い合わせ解決時間の中央値-28.6%、MRR +77.6%を報告しています。「インデックスが遅い、事前準備の手間、その代わり本当に効く形状で回答品質が高い」というトレードオフが、GraphRAGに賭ける理由の全部です。

数えます。

  • 0〜2個: Vector RAGで粘ります。Reranker、ハイブリッドキーワード検索、チャンキング調整の方が回収が早いです。
  • 3〜4個: ハイブリッド構成を検討します。小さめの分類器でクエリをルーティングし、関係質問はGraphRAG、類似質問はVectorに流します。最近のアーキテクチャ選定記事もここに収束しています。
  • 5〜7個: グラフ案件です。構築コストを引き受けてください。引き受けないと、同じ額をRerankerの実験とプロンプトハックに使い切り、より遅く、より高く、より不正確なシステムが残ります。

マルチホップの実数字

Microsoft GraphRAG論文(arXiv

.16130)はHotpotQAでlocal mode 55.2 EM / 68.6 F1を報告しています。競合ベースラインを圧倒するほどではありません。差が開くのはMuSiQueと2WikiMultiHopQAという難しいマルチホップデータセット、そして「コーパスを要約せよ」型のデータセット全体を跨ぐ質問です。マルチホップ検索ではグラフベースリトリーバルが約86%、Vector RAGは30%台前半という比較もあり、シングルホップでは両者ほぼ互角。この差がまるごと切替判断の実体です。

私はGraphRAGに飛び付いて構築コストを見誤ったチームを2社見ました。1社はそれでも出して動いています。もう1社は静かにVector RAG + 良いRerankerに戻してこれも動いています。両方とも正しい判断で、違いは「実クエリ形状がグラフの得意な形と一致していたか」だけでした。ここで一致しないと、どんな高級な構成もSlackの恨み節に変わります。

スタック選択は、意外と難しくない

5個以上Yesが出たら、スタック選択は難所ではありません。Neo4jはエンタープライズのデフォルトで、Cypherエコシステムが成熟しています。Kuzuは組み込み用途、アプリの隣にグラフを置きたいときに強い。Memgraphはリアルタイム分析枠。多くのチームにとっての正直な回答は「頭打ちになるまでNeo4j、頭打ちは初年度には来ない」です。1つ選び、最初のクエリを動かし、そこから再評価します。

切り替える前に、私が今やっていること

7ステップテストより処方箋的でないことも1つ言わせてください。

私が4か月目に一番役に立ったのは、「どのアーキテクチャが優れているか」を問うのをやめて、「ユーザーが実際にお金を払っている質問はどんな形か」を問うようになったことです。クエリログを真剣に読み直したら、上位10クエリのうち4つが上記の形状1か2でした。Vector RAGでは構造的に綺麗に答えられないやつです。違う仕事のために作られたシステムを、私はいじり続けていたわけです。

いま3か月RAGの品質と戦っている方へ。クエリログを、サンプリングじゃなく、全部読んでください。プリントして、マルチホップに蛍光ペンを引きます。半日で終わります。そのうえで7ステップテストを回すと、「グラフが要ると思い込んでいたが要らない」か「要らないと思い込んでいたが要る」のどちらかがはっきり出ます。

私は自分に8週間遅れて答えを出しました。この記事はその遅れに対する、未来の自分への詫び状です。


オントロジー設計、7ステップKG構築、上記3形状のCypherパターン、GraphRAG評価ハーネスまで、実装側の詳細は ChatGPTの嘘を見抜く!Knowledge Graph実践ガイド に書きました。この記事が「切り替えるべきか」で、書籍が「切り替えたあと、どう作るか」です。