ブルーアーカイブのモモトークにGraphRAGを適用してみよう

Project: Strawberry Milk

ゲームのストーリーについて質問すると、人物と事件を結びつけて答えてくれるモモトークを作りたいと思いました。以前、『鳴潮(Wuthering Waves)』のストーリーをAutoRAGで検索してみたのですが、複数のシーンに散らばった関係性を十分に集めるという点で物足りなさがありました。今回はブルーアーカイブのメインストーリーとモモトークに範囲を変え、GraphRAGを適用しました。

シロコの役割のような基本設定を問う質問、複数の人物が経験した事件をまとめる必要がある質問、そしてファンダムのミームと作中の事実が混ざりやすい質問にも答えることができるでしょうか?

  • シロコがアビドスで担っている役割とは何か?
  • ユウカの体重はなぜ100kgなのか?

実験では、同じ人物が複数のノードに分裂し、後続の質問を繰り返しても根拠が増えないという問題が明らかになりました。その後、検索を行わずに同じ質問をGeminiに直接送信する比較も追加しました。ユウカの体重記録の改ざんのように、原文にある事件を探す上では違いが見られましたが、これら3つの事例だけでGraphRAG가 常に優れているとは言えませんでした。以下では、何を作り、どこでつまずいたのか、回答とログを交えながら見ていきます。

GraphRAG

Microsoft GraphRAGは、ドキュメントから人物・組織・事件などの要素と関係性を抽出し、これをナレッジグラフとコミュニティ要約として構成して検索に活用します。原文のチャンクとグラフ情報を回答のコンテキストとして提供するという点がコアです。

GraphRAGのコミュニティ構造

Microsoft:GraphRAGの可視化の例。色はコミュニティを、大きなまとまりと小さなまとまりは異なるレベルの構造を示しています。

ゲームのストーリーでは、同じ人物が複数のエピソードに登場し、関係性も変化します。そのため、意味の似た段落を探すことに加え、人物と事件のつながりを利用すれば、関連するシーンを集めやすくなると期待しました。ただし、ベクトル検索もチャンク構成、クエリ分解、再ランキングによって結果が変わります。この記事では、通常のベクトルRAGとの性能比較までは行っていません。

データとインデックス作成コスト

ストーリーを次のように整理しました。

md
タイトル: RABBIT 4、身を潜めます。
セリフ:
ミユ:あ……先生……。
ミユ:う、いらっしゃいませ。待っていました。
先生:……大丈夫? / なんか通行人たちにめちゃくちゃぶつかられてたけど。
...
ミユ:先生といる時は少し安心できます……

素早く動作を確認するため、全体の約10%をランダムに選んでインデックスを作成しました。ランダム選択がすべての人物や事件を均等に含んでいるという保証はありません。したがって、回答が不十分な場合、検索の失敗だけでなく、必要な原文が最初からインデックスに含まれていなかった可能性についても切り分けて考える必要があります。

インデックス作成には gemma-4-31b-it を、埋め込み(Embedding)には gemini-embedding-2 を使用しました。以下は当時記録したインデックスのトークン量であり、後ほど測定する質問ごとの応答トークンとは別個のものです。

過程 入力 出力 合計
要素・関係抽出 2.3M 0.3M 2.6M
要素説明の要約 1.3M 0.1M 1.4M
コミュニティレポート生成 5.0M 0.7M 5.7M
合計 8.6M 1.1M 9.7M

問題発生! 同じ人物が別のノードになってしまう

最も目立ったのは、SenseiTeacher が別々のノードとして作成された点です。当時確認した元データには Teacher という表記がなかったにもかかわらず、グラフに登場しました。

原因として疑われるのは、チャンクごとの名称抽出と翻訳のプロセスです。チャンクを独立して処理しつつ出力名称を強制しない場合、同じ人物を原文の表記のまま残したり、翻訳した名前で出力したりすることがあります。ただし、今回の実行におけるすべての抽出プロンプトと応答を逆解析したわけではないため、個別のノードが生成された正確な経緯まで確認できたわけではありません。

PlanaとPranaに分かれたプラナのノード

プラナも PlanaPrana に分かれました。人間から見れば同じキャラクターですが、グラフ上では異なる名前に関係性が分散してしまいます。検索が一方のノードからしか始まらない場合、もう一方に紐づく情報を見逃してしまう可能性があります。

この問題は、より強力なモデルを選択するだけで解決すると仮定するのは困難です。同じ人物であることを理解することと、すべてのチャンクで同じ識別子を出力することは別個の問題だからです。人物ごとの基準IDと別名辞書を設け、抽出されたノードをそのIDに紐づけるプロセスを次の改善対象として設定しました。

ドリフトしてみましょう

DRIFT (Dynamic Reasoning and Inference with Flexible Traversal)

HIGH5LANDER

ノードが分かれる問題もさることながら、ナレッジグラフから望む答えを見つけ出す方式自体も重要です。そこで活用するのがDRIFT検索です。DRIFTは、グラフのノードを柔軟に辿りながら探索していく方式です。1回の検索で終わりにするのではなく、自ら次々と連鎖する質問を作り出しながら正解にたどり着きます。

最初の質問を受け取ると、グラフ全体をざっと見渡し、さらに必要な情報を探すために後続の質問を作成します。その質問を基にグラフの深くまで入り込み、関係性のネットワークを再び探索します。回答できるだけのコンテキストが十分に集まるまでこのプロセスを繰り返した後、集まった情報を1つにまとめて最終的な回答を作成します。

それでは、この方式を適用して質問を投げかけたときにどのような結果になるか確認してみましょう。

Q. シロコの役割

砂狼シロコ · 直接呼び出し
シロコがアビドスで担っている役割とは何か?

ネクソンゲームズのゲーム『ブルーアーカイブ』のキャラクター、砂狼シロコがアビドス高校(正確にはアビドス対策委員会)で担っている役割は主に以下の通りです。


1. 公式的な役割:行動隊長および現場戦術担当

  • 最前線突撃手(ポイントマン): 対策委員会で実戦戦闘が発生した際、最前線でリードする行動隊長(突撃隊長)の役割を担っています。
  • 現場指揮: ノノミが資金(一部)支援、アヤネが後方参謀/情報分析、ホシノが部長として中心を据えるならば、シロコは現場で直接駆け回って作戦を遂行する実働部隊のパワーの核心です。

2. 実質的/作中の役割:過激な解決策の提案者および起爆剤

  • 突拍子もない過激なアイデアの提供(別名「銀行強盗」): アビドスの膨大な借金を返すため、「銀行を襲おう」といった荒唐無稽で過激ながらも直感的な解決策を臆することなく提案し、実行に移す起爆剤の役割を果たします。(実際にメインストーリー第1章のコンビニ/銀行襲撃事件の首謀者です。)
  • 推進力担当: 他の部員たちが悩んでいる時に最も先に行動を起こす、圧倒的な推進力を持っています。

3. 日常的な役割:偵察および体力づくりの主導

  • 学校周辺の偵察および捜索: 趣味のロードバイク(自転車)乗りを活用し、広大なアビドスの砂漠地帯や廃墟を偵察して異変を察知する役割を担っています。
  • 部員たちの運動担当: 強靭な体力をもとに、対策委員会の部員たちにジョギングや体力づくりを強制(?)させる体育部長のような役割も兼ねています。

要約すると: シロコはアビドス対策委員会の「現場行動隊長」であり戦闘の核心、そして事件を引き起こし解決していく「行動派エース」の役割を担っています。

砂狼シロコ · GraphRAG
シロコがアビドスで担っている役割とは何か?

概要

シロコ(Shiroko)はアビドス高校の生徒であり、学校の危機を解決し地域の安全保障を守る核心組織であるアビドス対策委員会(Abydos Foreclosure Task Force / Countermeasures Committee)の主要部員です。


詳細な役割と活動

  1. 対策委員会および生徒会の主要部員

    • 所属と地位:シロコはアビドス高校の生徒であり、アビドス内で活動する対策委員会の主要部員(Core Member)です。
    • 組織活動:アヤネ(Ayane)、セリカ(Serika)らとともに対策委員会およびアビドス生徒会の構成員として所属し、学校の懸案事項に取り組むことに参加します。
  2. 現場対応および治安・戦闘戦力

    • 危機対応:アビドス地域内で銃声や治安の脅威が発生した際、ノノミ(Nonomi)、セリカ、アヤネなどの仲間や先生(Sensei)と共に現場に即座に出動して対応します。
    • 仲間の守護と作戦遂行:先輩のホシノ(Hoshino)が単独行動をとったり危険に陥ったりした際、ホシノを保護し救出するために作戦を展開し、アビドスの安全を守る実戦戦力の役割を遂行します。

結論

シロコはアビドスにおいて「対策委員会の中心的な主導人員」として、仲間たちの生徒と共に地域の安全およびアビドス高校の問題を解決するために先頭に立つ現場対応の役割を担っています。


Reference Story Files

  • N/A(提供されたナレッジグラフのパス内に別途ストーリーファイル名の記載なし)

Q. ユウカ 100kg

早瀬ユウカ · 直接呼び出し
ユウカの体重はなぜ100kgなのか?

結論から申し上げますと、ユウカの体重が100kgというのは、公式設定ではなくファンコミュニティから始まった代表的な「ミーム(Meme)」です。

実際のユウカの身長は156cmであり、公式の体重は公開されていませんが、プロフィール上は普通の体型の女子高生です。このミームが生まれ、流行するようになった理由は以下の通りです。


1. 魅力的な下半身(太もも)のデザイン

ユウカの公式イラスト、特にEXスキルカットシーン(電卓を叩きながら座るモーション)において、太ももがかなり太く健康的に描写されました。これを見たファンたちがユウカの下半身の体型をからかい、「下半身に質量が集中している」というネタを言い始めました。

2. コミュニティの強引なミームと「100kg」という数字の語呂の良さ

ユーザーコミュニティ等でユウカのEXスキルカットシーンや行動を分析し、「ユウカが座る時に衝撃波が起きる」、「実はドローンやシールドよりもユウカのほうが重い」といったおふざけの投稿が上がりました。その際、妙にしっくりくる「100kg」という象徴的な数字がくっつき、ミームとして定着しました。

3. からかわれた時の反応(ツンデレなキャラクター性)

ユウカはミレニアムサイエンススクールの首席会計として非常に厳格で理性的なキャラクターですが、先生(プレイヤー)に好意を寄せる「正妻」ヒロインの位置にいます。 ファンたちが「100kg」とからかった時にユウカが慌てたり怒ったりする反応(ツンデレ)が非常に可愛らしいため、ユーザーたちがより一層悪気なく(?)サンドバッグのようにからかうようになりました。

4. 公式(開発会社)によるミームの受容

このミームが広く広まると、ブルーアーカイブの開発陣(ネクソンゲームズ)や公式メディアでもこれを積極的に取り入れました。

  • 公式4コマ漫画およびイベントストーリー: ユウカが体重計やダイエット、体重の話に極度に敏感に反応する描写が頻繁に登場します。
  • 公式配信: シャーレのストア商品や配信などでも、「ユウカと100kg」をそれとなく連想させるギャグ要素を取り入れたりしました。

要約

ユウカの本当の体重は、40kg台後半〜50kg台前半の正常な女子高生の体重である可能性が高いです。「100kgユウカ」は、太い太もものデザイン + ファンたちの愛情あるからかい + 公式によるミームの受容が合わさって作られた、ブルーアーカイブ屈指の人気ミームの一つです。

早瀬ユウカ · GraphRAG
ユウカの体重はなぜ100kgなのか?

ユウカの体重が100kgとして記録された理由は、実際の身体測定の数値ではなく、ハッキング部「ベリタス(Veritas)」の部員であるマキ(Maki)が仕掛けたデータ改ざんのいたずらが原因です。


ユウカの体重記録の原因および経緯

  1. 初期の背景と動機(いたずらのきっかけ)

    • セミナーの会計担当であるユウカの干渉に不満を感じたマキは、ユウカを標的にしてイタズラをすることに決めました。
  2. 展開のプロセス(生徒記録サーバーのハッキングとデータ改ざん)

    • マキは身体検査の結果が保存されている生徒記録サーバーにアクセスするハッキング作戦を主導しました。
    • サーバー内のデータ改ざん(Data Manipulation)を通じて、ユウカの身体検査の体重記録を不法に修正しました。
  3. 最終結果

    • ユウカの体重の数値は、マキが意図的に100kgに変造した改ざんデータです。

Reference Story Files

  • story_복면_라이더.txt
  • story_제17화.txt
  • story_제26화.txt
  • story_게으른_경찰의_순찰.txt
  • story_당신의_소원은.txt
  • story_도망치는_하늘은_지칠_줄_모르고.txt
  • story_달려라_아야네.txt

実践応用

早瀬ユウカ
ユウカの体重はなぜ100kgなのか?
[GraphRAG Reasoning Trace]
ユウカの体重が100kgとして記録された原因を探索しました。ベリタスの「マキ」がユウカの干渉に不満を抱き、生徒記録および身体検査のサーバーデータをハッキング・改ざんしたことを確認しました。
早瀬ユウカはその数字を聞くなり凍りついた。顔が一瞬にしてトマトのように真っ赤になると、すぐに眉間を思いきりしかめたままあなたを睨みつけた。彼女が持っていたタブレットを机にドンと置き下ろす音が事務所内に響き渡った。
ユウカ 早瀬ユウカ
な、なんですって?! いま何ておっしゃいました?!
彼女は我慢ならないといった様子で息を荒げ、反論をまくし立てた。
ユウカ 早瀬ユウカ
100kgだなんて、そんなの物理的にも生物学的にもあり得ると思いますか?! 昨年に比べて体重が少し増えはしましたけど、まだ正常な体重の範囲内ですから! その数字はベリタスの連中が悪意を持って流布した明白なデマなのに、いまだにそれを信じる人がいるなんて本当にあきれちゃいます!

今回の実験で残ったもの

ユウカの質問では、原文の具体的な事件を回答に含める上で検索が役立った事例を確認しました。一方、シロコの質問では原文の引用がなく、根拠不足の判断が繰り返された後にも断定的な回答を生成しました。グラフを作成したという事実だけで回答の信頼性が確保されるわけではありませんでした。それでも、今回の試みが改善に向けた出発点になれば幸いです。

グラフを直接見てみる


当該プロジェクトはNEXON Co., Ltd.の公式プロジェクトではありません。