知らないのに答えてしまうAIキャラクター:段階的RAG論文メモ

by yasuna

6 min read

この記事はAIエージェントと一緒に執筆しています

こんにちは!yasunaです!

AIキャラクターを動かしていると、「知ってるフリ」をされることがあります。キャラクターの記憶やプロンプトに書いていないことを自信満々に話してしまったり、最近のネットミームを知らないのになんとなく答えようとしたり。

2つは別の問題に見えて、根っこは同じだと思っています。「自分は本当にこれを知っているか?」を問わずに答え始める

そのことを考えていたときに読んだのがこの論文です。

論文:Mitigating LLM Hallucinations through Domain-Grounded Tiered Retrieval(arXiv:2603.17872, 2026)


論文の要約

LLMのハルシネーション問題

LLMは流暢に話せます。でも流暢に話せることと、事実を正しく話せることは別の話です。

このギャップが「ハルシネーション」と呼ばれる問題で、LLMが事実と異なる内容を自信を持って生成してしまう現象のことです。医療・法律・金融など、正確さが求められる場面では特に深刻な問題になります。

従来のアプローチとしてRAG(Retrieval-Augmented Generation)がありますが、単純に外部情報を検索して渡すだけでは、余分な情報や誤誘導情報が混ざって精度が落ちることもある。この論文はその問題に対して、段階を分けた検証アーキテクチャを提案しています。

4段階パイプライン

LangGraph で実装された4段階の自己調整パイプラインです。

Phase I — Intrinsic Verification + Early-Exit

まず「自分はこれを知っているか」を内部でチェックします。モデルが十分な確信を持って答えられると判断した場合は、そこで処理を終了(Early-Exit)します。外部検索が不要なら検索しない、という計算コストの節約にもなります。

Phase II — Adaptive Search Routing

外部検索が必要と判断されたとき、Domain Detectorで質問の分野を判定し、その分野の専門アーカイブに検索を振り向けます。一般的な検索ではなく、分野に特化した情報源を使うことで精度を上げます。

Phase III — Refined Context Filtering (RCF)

取得した外部情報から、不要な情報や誤誘導につながる情報を除去します。余分なコンテキストがモデルを混乱させないようにフィルタリングする工程です。

Phase IV — Extrinsic Regeneration + atomic claim verification

フィルタリングされた外部情報をもとに回答を再生成し、主張ひとつひとつのレベルで事実確認を行います。文章単位ではなく「原子的な主張」レベルで検証するのが特徴です。

実験結果

5つのベンチマーク(TimeQA v2, FreshQA v2, HaluEval General, MMLU Global Facts, TruthfulQA)から650クエリで評価しました。

  • Win rate 最大:TimeQA v2 で 83.7%、MMLU Global Facts で 78.0%
  • Groundedness score:78.8〜86.4% で安定して推移

ゼロショットベースラインをすべての環境で上回る結果でした。

残存する失敗モード:False-Premise Overclaiming

ただし、「間違った前提を含む質問」に対して自信満々に答えてしまう失敗モードが残ることも確認されています。質問の前提が間違っていても、それを指摘せず答えを作ってしまう問題です。

論文はこれに対して、retrieval の前にanswerability nodeを置くことを提案しています——そもそもこの質問に答えられるか?を先に判定するノードです。


自分で考えたこと

AIキャラクター設計への接続

「記憶にないことを話してしまう」問題

キャラクターのプロンプトや記憶に書かれていない情報を、LLMが学習データから補完して話してしまう。「このキャラクターはその出来事を知らないはず」なのに知っているかのように振る舞う。

Phase I の Intrinsic Verification をキャラクター設計に応用するとこうなります:

[視聴者から質問が来る]
  ↓
[思考:この情報はキャラクターの知識範囲内か?記憶・設定に含まれるか?]
  ↓ 範囲外
[「それは私には分からないな〜」として答える]
  ↓ 範囲内
[設定・記憶をもとに答える]

「知らない」と言えるキャラクターを作るには、答え始める前に「自分は知っているか」を問う工程が要ります。

「ネットミームを知らないのに答えようとする」問題

最近のミームは訓練データにない。でもモデルは知らないとは言わず、なんとなく形を作って答えようとする。これは論文の言う answerability node の問題そのものです。

「答えられる質問か?」を retrieval の前に判定できれば、知らないものに対して「最近のネットミームはちょっとわからないかも!」と自然に答えられる。知らないことを知らないと言える設計です。

ミームに答えるには何が必要か

「知らない」と言うだけでは不十分で、ミームを正しく答えられるようにするには別の設計が要ります。

ステップ1:「これはミームか?」の予測が先 まず質問の中に見慣れない言葉・最近よく見る表現・ネットスラングらしいものが含まれているかを判定する。「これは自分が知らないネット用語かもしれない」という予測ができてはじめて、次の検索ステップが意味を持つ。

予測でミームらしいと判定されたら、Wikipedia・ニコニコ大百科・Grokの検索などを使って調べる。ニコニコ大百科はネット文化に特化していて、日本語ミームの解説が充実している。

ステップ2:answerability チェック 検出したらまず「自分は知っているか」を確認する。キャラクターの知識ベースに含まれていなければ、答えを作ろうとせず「知らない」ルートへ分岐する。

ステップ3:知識ベースの定期更新 ミームは鮮度が命なので、ミーム専用の知識ベースを別に持って定期的に更新する。キャラクターの静的な設定とは切り離して管理し「このミームはいつ覚えた」というタイムスタンプも持っておくと、古いミームを知っている・新しいミームは知らない、という自然な知識の境界が作れる。

ステップ4:「知らない」の自然な表現 知識がない場合はフォールバック応答を用意する。「それ最近のやつ?まだ追いついてないかも!」のような、キャラクターらしい「知らない」の言い方を複数持っておく。

Phase II の Adaptive Search Routing を使えば、ミームが検出されたときだけ外部検索(SNSやネットスラング辞書)に振り向けることも理論上はできます。ただしハルシネーションのリスクはここでも残るので、検索結果をそのまま話させるのではなく Phase III〜IV の検証を通す必要があります。

False-Premise Overclaiming はAIキャラクターでも起きる

視聴者が間違った前提で質問してくることがあります。「○○ってゲームもうクリアしたんだよね?」(設定上プレイしたことがない)、「この前の配信で言ってたじゃん」(言っていない)——こういう前提を否定せず乗っかってしまうのが、キャラクター版の False-Premise Overclaiming です。

前提の正誤を判定してから答える仕組みがないと、会話を重ねるうちに「言ってもいないことを言ったことになる」状態が積み上がっていきます。


おわりに

「知らない」と言えるキャラクターを作りたいと思っています。

Phase I の「まず自分は知っているか問う」という設計の順番は、AIキャラクターの知識範囲管理にそのまま使えそうです。そして answerability node の考え方——「そもそも答えられる質問か」を手前で判定する——は、ネットミームや設定外の話題に対する自然な「わからない」表現につながると思っています。


参考