5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

判断特化型GraphRAGをJevを使って構築してみた(ベクトル未使用)

5
Last updated at Posted at 2026-10-08

この記事のチャンクデータには名探偵コナンのデータを登録しています(ほかにONE PIECEと名探偵プリキュア!も少し)。 名探偵コナンを知らない方はアニメまたは単行本全巻読破してからこの記事を読むことをおすすめします。

みなさんGraphRAGの判断を全部LLMにやらせていませんか?文章を書かなくていい判断なら判断が得意なモデルに任せればいい!ということでエンベディングもベクトルDBもグラフDBも使わないGraphRAGを作ってみました。判断はJevに回答はLLMです。

👀 対象読者

  • RAGを組んだことがあり「意味が近い」と「答えに必要」のずれに困ったことがある人
  • GraphRAGを検討したけど登録時のLLM抽出の費用で足踏みしている人
  • Jevのような判断特化型モデルの使いどころを探している人
  • 名探偵コナンが大好きな人

🧐 「意味が近い」だけでは答えに届かない質問がある

普通のRAGは質問と意味が近い文章を探します。困るのは答えが別の名前で書かれているときや、チャンクを辿って答えに行き着くようなパターンです。

「工藤新一って今どこに住んでるの?」

答えは毛利小五郎の探偵事務所です。 新一は薬で子どもの姿になり「江戸川コナン」として毛利家にいます。 でも資料に書いてあるのはこんな文章です。

コナンは正体を隠したまま毛利蘭の家に居候し、蘭の父・毛利小五郎が営む毛利探偵事務所を拠点に事件を解決していく。

質問は新一のことなのに答えはコナンの文章にあるので、意味の近さで探してもなかなか見つかりません。 GraphRAGなら「工藤新一 → 江戸川コナン → 毛利探偵事務所」とたどってこの文章に届きます。

01-x-vector-vs-graph.gif

💸 なぜ判断特化型で試したのか:GraphRAGは高くつく

GraphRAGは便利ですがお金がかかります。 GraphRAGは(手法は色々ありますが)文章から人物や関係を抜き出す作業をLLMにやらせるからです。

  • 登録するとき:文章1件ごとにLLMで人物や関係を抜き出す。
  • 質問に答えるとき:「この線をたどる?」「もう答えられる?」をLLMに判断させると何回もLLMを呼びます。

でも中身をよく見ると、どれもはい/いいえで済む判断ばかりなんですよね。
最近「判断特化型」のモデルが出てきたので任せたら安くなるんじゃない?と思って試してみました。

🎯 Jevは「はい」の確からしさだけ返してくれる

JevはTypeSafe AIの判断特化型モデルです。 文章は書かず問いを投げると「はい」の確からしさを0〜1で返します。

Jevに渡すものと返り値
渡すもの:質問「工藤新一は現在、誰の家に居候し、どこを拠点に事件を解決しているか?」
問い  :この質問文に「工藤新一」は書かれている?
返り値 :0.95

数字だけなので「0.5を超えたら進む」みたいに普通のif文で動きを決められます。

02-x-jev-vs-llm.gif

Jevも回答がブレることはあります(ぶれにくいくらいのニュアンスで受け止めてください)

:japan: 今回の全体構成

architecture-ja.png

実際の画面はこんな感じ

こんな感じです。がごちゃごちゃしてわかりにくいので順を追って説明していきます。

🔧 判断はJevに任せる

「ここは判断だな」という場所を6つ選んで全部Jevに任せました。
LLM(Claude Haiku4.5)を使うのは最後に答えを書くところだけです。

03-fig-judge-points.gif

  • 準備:この文章にこの人は出てくる?
  • 準備:この文章からこの2人の関係って言える?
  • 質問されたら:この質問は誰の話?
  • 質問されたら:この文章は答えに役立つ?
  • 質問されたら:この関係は手がかりになりそう?
  • 質問されたら:集めた文章でもう答えられる?

🗂️ グラフのマスターデータ

上記の「この人」「この2人の関係」に何が入るかはマスターで決めています。

  • 種別:9つ(作品・キャラクター・組織・場所・アイテムなど)
  • 関係:12種類(どの種別どうしをどんな言い方でつなぐか)
  • エンティティ:212件(正式名・別名・種別・ひとこと説明)

毛利小五郎/別名:小五郎、眠りの小五郎、毛利のおじさん、おっちゃん、毛利君/種別:キャラクター/説明:蘭の父。毛利探偵事務所を営む

種別と関係の部分がいわゆるオントロジーです。 マスターはそこに今回のデータのエンティティを当てはめたもの、と思ってもらえればOKです。プログラムはこのマスターを見ながらグラフを組み上げていきます。

04-fig04-master.gif

工夫したのは関係をわざと粗くしたことです。 キャラクターどうしは「間柄がある」の1種類だけにして、家族や師弟は例として文に入れました。

毛利蘭と毛利小五郎には間柄がある(家族・幼なじみ・仲間・師弟・敵対など。今でも昔でもいい)

細かく分けると聞く回数が増えるうえに、スコアが割れてしきい値を超えにくくなります。 家族か敵対かは最後のLLMが本文を読めばわかるので、グラフはつながっていることさえわかれば十分でした。

⛏️ 準備:判断だけでグラフを作る

05-fig-ingest-flow.gif

文章ごとにマスターの名前で候補を拾い、Jevに「出てくる?」「関係ある?」を聞いて、はいっぽいものだけグラフに保存します。 LLMで抜き出すよりずっと安く済みます(試算で約20〜30分の1)。

🔍 質問されたら:つながりをたどって情報が十分に集まったら止まる

06-fig07-search-loop.gif

出発点を決めて「もう答えられる?」がYesになるまで隣へ進みます(最大3回)。 止めどきもJevが決めるので1回で答えられる質問は出発点だけで止まります。

「コナンが使っている便利な道具を発明した人と一緒に住んでいるのは誰?」

実際の画面がこちら

image.png

  • 出発点: 江戸川コナン(回答情報不十分)
     → この時点で実は回答になる「灰原哀」が博士と住んでいるチャンクは出てきているが博士が道具を発明している事実が関連づいていないため回答には不十分と判断している
  • 1回目:麻酔銃、蝶ネクタイ、シューズのエンティティへ進みチャンクを探る
     → この時点で、腕時計型麻酔銃を作っているのが阿笠博士ということが判明し、入口チャンクで得た博士と灰原が一緒に住んでいるという事実を含めて判断した際に十分回答できるという判断となった。
     

回答:灰原哀が阿笠博士の家で暮らしており、コナンが使っている便利な道具を発明した人と一緒に住んでいるのは灰原哀です。

✂️ Jevに総当たりさせない工夫

全文章×全エンティティで聞くと330件×212件で69,960問になります。 さすがに多いので、聞く前に候補を絞っています。

まずマスターの名前・別名が本文に含まれているかをプログラムで調べます(Jevなし・無料)。 表記のゆれはそろえますが単語に区切ったりはしていません。 「名探偵コナン」なら作品と江戸川コナンの両方が候補になり、どちらなのかはJevが見分けます。

  • 出てくるか:名前が見つかったものだけ聞く(69,960問 → 1,457問)
  • 関係があるか:人と人なら「間柄がある?」だけ聞いて「組織に所属している?」は聞かない
  • 出発点:名前が無い質問はまず「人の話?場所の話?」を聞いて、人ならキャラクターとだけ比べる
  • 隣へ進む:つながっている隣だけを候補にして上位3つまで

絞る前は質問1つでJevへの入力が約7万トークンだった例が、約6,400トークンで済むようになりました。

🔢 数字で返ってくるから比べられる

「ジンがいつも乗ってる車って何でしたっけ?」

07-fig10-entry-chunk-scores.gif

「ジンの愛車は黒いポルシェ356Aである」だけが0.97で、残りは0.1未満です。 マスターに「愛車」なんて関係はないのに拾えました。シンプルな質問はこのパターンでホップ0で回答できることが多いですね。

「探偵のおじさんの娘って誰?」

のように名前が出てこない質問は「同じ人のこと?」と聞き直します。 毛利小五郎が0.81で選ばれ、小五郎の文章に「娘の蘭」とあったので毛利蘭と答えられました。

08-x-reask.gif

📊 検証:シンプルな質問

09-x-results.gif

Jevはどこで何を判断したかが全部スコアで残るので、あとから理由をたどれるのも地味に助かりました。

適切なマスター、スコア閾値を設定してる前提の検証結果です
精度を保障するものではありません

⚖️ 検証:エンベディングのGraphRAGと比べてみた

同じグラフ・同じ35問・同じ回答のLLMで、起点の探し方と判断の道具だけを変えて比べました。

  • ①今回の方法:ベクトルを使用しないJev判定
  • ②エンベディング+LLM:起点はエンベディングで探して判断はLLM(Haiku4.5)
  • ③エンベディングだけ:止めどきを判断しないので固定3ホップ進んで集めた文章を全部LLMへ渡す

x-compare-graphrag.png

③は「もう十分?」を判断できないので、集めた文章を全部LLMに渡すしかなく渡す文章(token)が膨らみます。 ②は判断のたびにLLMを呼ぶのでいちばん高く、①の4倍以上かかりました。

x-compare-ingest.png

:surfer: 検証:ホップが要る質問

上記は一般的な質問の結果比較でした。お次は質問文の名前と答えが同じ文章に書かれておらず、チャンクを辿る必要がある質問で比べ直してみました。

x-compare-hop.png

ホップが要る質問では判断をJevに任せた①が優秀でした。②も推論でホップするのでいい線まで行くのですが、途中の誤り判断がやや目立ちました。③は判断しない分安くて速いですが推論しないため正しくホップできませんでした。

後から見返すと①が有利になるような質問の傾向が見えました:bow_tone1:
今回の検証条件下ということで参考値としてご参照ください。

⚠️ 「ハルシネーションしない」とまでは言えない

Jevは文章を書かないので存在しない人物をでっち上げたりはしませんが判断を間違えて大事な文章を落とせば、答えられたはずの質問を断ってしまいます。 なので「根拠のない答えは出しにくい」くらいに思っておくのがよさそうです。またJevは決定的判断ではないため検索によってホップが変わり回答がブレるこもあります。

🚧 うまくいかなかったこと

マスターにないものはたどれない

「サンジが二年間修業してた国の女王って何の実の能力者?」

途中の「カマバッカ王国」がマスターになくて道が途切れました(いきなりONE PIECEですみません)

10-x-gap.gif

「カマバッカ王国」がわからない方はONE PIECEを全巻読破してからまたこの記事に戻ってきてください

  • 答えのない質問は高くつく
    探し切ってから断るので、すぐ答えられる質問の約2.8倍Jevを呼んでいました
  • コストを削りすぎると精度が落ちる
    LLMに渡す文章をJevでさらに絞ってみたら、答えにたどり着くのに必要な「つなぎ役」の文章まで落として、断る質問が6問から10問に増えました。なのでこの絞り込みはやめました。

🌱 まだできていないこと:マスターを育てる仕組み

文章が増えればマスターにないものはどんどん出てきます。 毎回人が書き足すのは続かないので自動で育てる仕組みが必要です。 種別や関係はそうそう変わらないので増やすのはエンティティだけで済むはずです。

11-x-grow-master.gif

  1. マスターにない言葉を出てきた文章と一緒にためる
  2. 人物か場所か、ただの言葉かをJevが判断する
  3. 既にいる誰かの別名かをJevが判断する
  4. 本当に新しいものだけLLMが説明を書く
  5. マスターを更新して、その言葉が出てくる文章だけ登録し直す

ここでも大量にふるい分けるのはJevで、説明を書くのはLLMです。

🏢 実務で使えそう?

ここまで耳障りのいいことばかり書いてきましたが...

使えないことはないが...扱いがとてもデリケート:sweat_smile:

というのがぶっちゃけな感想です...

大変なところ

  • エンティティマスターを先に用意すること:初期データとしてグラフの型を用意する必要があります。 オントロジーをベースにLLMで作る部分でここが精度に大きく影響します
  • スコアのしきい値の調整:0.5で進む、0.7で止めるといった値はデータと質問傾向を見ながら絶妙な閾値を決めるしかありません。

試してしきい値を直し、足りないエンティティを足してまた試す。 便利ツールというより腰を据えて一緒に育てていくシステムになる感じがしました。

漠然とした質問や要約ならスタンダードRAGやMSGraphRAGのグローバル検索のほうが向いています。 使いどころを選んで組み合わせるものだと思います。

📈 データが増えたらコストはどうなる?(私の見立て)

Jevは候補を1つずつ聞くので、文章が増えれば聞く回数も増えます。

ただRAGに入れる文章はたいてい決まった分野にまとまっています。 同じ分野ならいくら文章が増えても、人物や関係はだんだん出そろってきて増え方が落ち着くはずです。

12-x-scale.gif

なので多少データが増えても倍々ゲームにはならない、というのが私の見立てです。

ここはまだ測っていないので想像の域を出ません

🍜 〆締め

当初思ったほど「ぼくのかんがえたさいきょうのらぐ」にはなりませんでした:sob:前準備とチューニングがめちゃめちゃ大変なのでチームにRAGオタクがいないと運用は難しいです:dizzy_face:

検証してみて感じたのはRAG=Emmbedingという常識が自分の中にあったので、ベクトルから解放されるのはちょっと新鮮でしたw Jevをはじめとした判断特化モデルも続々登場していますし、2026/10現在 haiku5.5のような高速軽量LLMモデルも登場しているので、ベクトルにとらわれる事なく幅広い選択肢からワークロードにあった選定できるのはとても良い事です。

最後に反省点...
わたくし、どうしても検証データ(質問)作成の際に自分の思い描くストーリになるようなデータを作ってしまう傾向がありました。(思いが強すぎて...)結論ありきの検証データは意味がないため今後改善したく思います:bow_tone1:

また、いろいろ検証してみたいと思います。

検証資産

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?