← Learn に戻る

ナレッジグラフは要るのか 実測と構築の6章

原材料から完成品まで4段に繋がるノードとエッジの図を背景にした、シリーズ「ナレッジグラフは要るのか 実測と構築の6章」のカード

ナレッジグラフの記事は「LLMは関係を辿れないからグラフが要る」で始まるものが多いのですが、では何段目から辿れなくなるのか、グラフを渡せば辿れるようになるのかは、あまり測られていません。このシリーズは、そこを実際に測るところから始めます。そのうえで、入れると決めた人が何をグラフにするかを4つの型で比べ、実際にノード1,050のグラフを組んでNeo4jに載せるところまでを順に扱います。手元で動かした範囲と、一次資料から評価しただけの範囲は、各章で列を分けて示します。

読み終えるとできること

  • ベクトル検索のままでよいのか、グラフを足す価値があるのかを、本番のクエリの段数から切り分けられます
  • グラフを足しても効かない条件を先に知った状態で設計に入れます (9B未満のモデルでは足すと精度が落ちました)
  • 構造化データ・コード・文書・個人メモの4つから、自分が作る型を更新頻度と腐りやすさで選べます
  • ノードとエッジを決め、曖昧さを3種類さばいて、Neo4jに載せて多ホップで辿るところまで手を動かせます

シリーズ目次全 7 章

  1. 0 ナレッジグラフは要るのか 実測と構築の6章 Pillar (現在のページ)
  2. 1 ナレッジグラフとは: 表とベクトルとの3つの違い ナレッジグラフは、ものと関係を機械が辿れる形にしたものです。マインクラフトのクラフトを例に、同じ問いを表・ベクトル検索・グラフに投げて違いを3つに絞ります。
  3. 2 なぜ今ナレッジグラフなのか 2024年の3つの変化 ナレッジグラフは2012年からある道具です。変わったのはLLM側でした。2024年の3つの変化を一次資料で追い、出回っている出所の辿れない数字も見分けます。
  4. 3 ナレッジグラフが効く段数をマインクラフトで実測 ナレッジグラフは何段目から効くのか。マインクラフトのクラフトツリーを正解にして5サイズのモデルに1,010回聞きました。9B未満では渡すと逆に落ちます。
  5. 4 ナレッジグラフ4つの型を6軸で比較する 作ると決めたら次は何をグラフにするかです。構造化データ・コード・文書・個人メモの4つを6軸で比べます。実測済みと未検証は列で分けています。
  6. 5 ナレッジグラフ1050ノードを作って踏んだ3つの罠 ノード1,050・エッジ2,261のグラフを組みました。詰まったのは全部「関係が一意に決まらない場所」で、3種類ありました。1つは実験を丸ごと捨てさせました。
  7. 6 ナレッジグラフをNeo4jに載せて4つ問う ノード1,050・エッジ2,261をNeo4jに投入して、段数を書かずに辿るクエリを4本書きました。ヒープ512MBで足ります。表では書けない問いだけを並べます。

ナレッジグラフの記事は、たいてい「LLM は関係を辿れないからグラフが要る」で始まります。では何段目から辿れなくなるのか。グラフを渡せば辿れるようになるのか。 そこを測った例が、あまり見当たりません。

このシリーズは、そこから始めます。測った結果はこうでした。

崩れ始めるのは3段目です。そしてグラフを1歩渡して効いたのは 9B 以上のモデルだけで、4B に渡すと正解率はむしろ下がりました。渡された中間の名前を答えから落とせないためです。

つまり「グラフを足せば賢くなる」は成り立ちません。要るかどうかは問いの段数で決まり、効くかどうかは使う側のモデルの容量で決まります。

このシリーズが答える4つの問い

順番に決まっていきます。

問い
1そもそもナレッジグラフとは何で、表やベクトル検索と何が違うのか1
2なぜ今この話題なのか。どこまでが実体で、どこからが過熱か2
3自分の場合に本当に効くのか3
4効くとして、何をグラフにして、どう作るのか4-6

3で止まる人がいていいシリーズです。 聞かれることが1段で答えられるなら、グラフを足す理由は薄いです。ベクトル検索とリランカーで足ります。

判断の入口はクエリログにある

導入を検討すべきかどうかの判断は、流行の強さではなく手元のクエリで決まります。

本番のクエリログを1週間ぶん読んで、関係を2段以上辿らないと答えられない質問がどれだけ混ざっているかを数えてください。

1段で閉じる     この API のタイムアウト値は
                 → ベクトル検索で足りる

2段以上が要る   この関数を直すと、どのテストが落ちるのか
                 この方針は、どの決定を受けて変わったのか
                 → グラフを検討する線

数える前に構築を始めると、作ったあとで使いどころが無いという形になりがちです。

このシリーズの検証状態

手元で動かした範囲と、一次資料から評価しただけの範囲を分けます。 各章にも、その章の分だけを書いた同じ形の囲みがあります。

扱い検証状態何を確かめたか
段数と精度の関係実測済み5サイズのモデル × 2条件 × 101問 = 1,010回を手元の GPU で実行。温度0、パース失敗0
構造化データからの構築実測済みノード 1,050・エッジ 2,261 を組んで Neo4j に投入。同じ展開を Python と Cypher の2実装で行い372件すべて一致 (不一致0)
コードのグラフ実測済み18リポジトリで稼働中。シンボル 13,671・エッジ 12,377、うちシンボル 9,769 は構文解析だけで取得 (LLM 抽出は0)
外部の動向と数字一次資料2章の日付と数値はすべて原典に当たっています。出所の辿れない数字は、辿れないと書いています
文書からの LLM 抽出未検証手元で動かしていません
個人グラフの長期運用未検証公開されている実装と運用記録からの評価です

精度の比較 (ベクトル RAG とグラフでどちらが何%正確か) は測っていません。

検証が進むたびに、この表のセルが「未検証」から「実測済み」に上がります。この記事そのものが、検証の進捗表です。

読む順

まず、そもそも何なのか、自分に要るのか。

  1. ナレッジグラフとは: 表とベクトルとの3つの違い — 同じ問いを3つの持ち方に投げる
  2. なぜ今ナレッジグラフなのか 2024年の3つの変化 — 変わったのは LLM 側。出所の辿れない数字の見分け方も
  3. ナレッジグラフが効く段数をマインクラフトで実測 — 1,010回。3段目から崩れ、9B 未満では足すと逆に落ちる

作ると決めたら、何をどう作るか。

  1. ナレッジグラフ4つの型を6軸で比較する — 構造化データ・コード・文書・個人メモ
  2. ナレッジグラフ1050ノードを作って踏んだ3つの罠 — 循環・分岐・葉の定義
  3. ナレッジグラフをNeo4jに載せて4つ問う — 段数を書かないクエリ

周辺として読めるもの。

1から3は型を問わず先に読む章です。4以降は、作ると決めてから読めば足ります。