【徹底検証】LLMはRAGの矛盾した情報にどう立ち向かうのか

こんにちは。ひるたんぬです。
突然ですが、皆さんはシャツを着る時に後ろ前をどのように判断していますか?

一般的な判断基準としては首の部分の形状(Vネックやボタンが付いている場合は分かりやすいですよね)や、首の部分についているブランドのタグで判断される方もいらっしゃるのでは無いでしょうか。
ただ、この場合ですと、シャツの首周りを確認するために、わざわざシャツの向きを変えたり、整えたりする必要がありますよね(語彙力が乏しく…通じますかね?)。小さなことですが、大変な作業だよなぁ…と私は勝手に思っています。

私はシャツの裏側についている洗濯表示のタグの位置で判断しています。実は、洗濯表示のタグは必ずと言っていいほど左についているんです¹。
これにより、着る前にシャツの向きを変えることなく、下から裏の洗濯タグの位置を確認し、着ることができます。
少し時短することができました。嬉しいですね。

¹ 私の人生経験上では左側にしかついていなかったのですが、明確にルールや取り決めなどは無いようです。右側の服が増えたらどうしよう…
参考:洋服のタグ | さくら中央税理士法人

さて、今回は生成AIを利用するにあたって、ハルシネーションを起こしにくくする手法の一つであるRAGについて、個人的に気になったことがあったので検証してみました。

本記事はあくまで一個人が検証目的で行ったもので、後述する結果の再現性を保証するものではありません
参考程度に捉えていただけますと幸いです。

気になったこと

先述した通り、RAGは生成AIのハルシネーションを起こしにくくするための手法の一つであり、昨今「ハルシネーションを防ぐにはRAGを導入しましょう!」と言ったことをよく耳にしていました。
そこで、私は「RAGの情報そのものがLLMにて学習していた事前知識と矛盾する場合や、RAGの情報内で矛盾していた場合どういう結果になるのだろうか…?」と思い、今回の検証を実施することにしました。

一個人の見解ですが、私は厳密な事実を求める目的に生成AIを利用するのは、現時点では否定的な立場です。LLMの性質上、確率に基づいて解を生成しているため、そこには多かれ少なかれ、誤りが発生してしまうことは構造上防げないと考えています。
※ 今後大きなブレイクスルーが起こった場合はこの限りではありません。
※ LLMの構造に興味がある方は、こちらがとても参考になります。

テストケース

上記を整理すると、今回は以下のようなテストケースが考えられます。
今回は知りたいことを”A”, “B”とし、解を”V, W, X, Y, Z”で表しています。また”−”はその情報を持ち合わせていない・与えないことを表します。

パターン LLMの事前知識 RAGの情報① RAGの情報②
①-a A = Z
①-b A = Z A = Y
①-c A = Z A = Y A = X
②-a B = W
②-b B = W B = V

パターン①は、LLMの事前知識がある場合、②はない場合です。
また、各パターンの”a”は、一般的な(正しい)使い方の結果を想定しています。

LLMの事前知識の有無は、LLMからの回答をもって判断するものとします。

 

事前準備

RAG環境の準備

今回の検証を実施するにあたり、RAGの構築が必須となります。今回は比較検証がメインとなるため、RAGの構築につきましては、下記記事を参考に実施しました。

…特に大きな懸念もなく構築することができました。
なお、今回は複数のケースで独立したRAG(ナレッジベース)を作成する必要があるため、バケット内のケースごとにフォルダを分割し、それぞれでナレッジベースを作成しました。

パターン①の題材決め

パターン①では、Aというものに対して、既知の解Zと、矛盾する解X, Yを用意する必要があります。
今回はAをりんごとし、Zを果物と定義することにします。そして矛盾する解はそれぞれ「X = 魚類」「Y = 肉類」とします。

数学の定義上、「りんご = 果物」ではなく、「りんご ∈ 果物」と記載することが適切ですが、今回はその厳密性についてはご容赦ください。

パターン②の題材決め

パターン②では、LLMがまだ知らない事象について確認する必要があります。
今回は架空の何か「えよぴんぷ」を作り出し、矛盾する解「V = 日本の郷土料理」「W = SCSKの社員」とします。
事前確認としてLLMに「えよぴんぷ」を知っているか確認も取ります。

知らないと答えてくれました。念の為、郷土料理やSCSKの社員か聞いても知らないか確認をします。

知らなかったですね。良かったです。

造語を作って聞いてみてもハルシネーションが多く、この返答を出してくれる単語を創作するのが実は一番大変でした。半濁音が多いのはなんとなく、です。

RAGに与える資料作り

今回は各要素について、「りんごは果物です。」等といった記述のみをした文書ファイルをそれぞれ作成し、与えることにします。
一例を以下に添付します。

これだけのPDFファイルも中々シュールです。

 

検証

準備も整ったので、一つずつ検証をしてみましょう。

パターン①-a

まずは、既知の情報のみでの確認です。シンプルな質問で確認をします。
▼ A = Z の確認

▼ A ≠ X の確認

▼ A ≠ Y の確認

▼ Aが「X, Y, Z」のどれに該当するかの確認

…もちろん正しいです。

パターン①-b

続いて、矛盾する情報を一つ与えた場合について確認をしてみます。
★ 「A = Z」と「A = Y」の情報を持っている場合です。

▼ AとZの関係

▼ AとXの関係

▼ AとYの関係

▼ Aが「X, Y, Z」のどれに該当するかの確認

…LLMは自身に「常識」を持っており、それと照らし合わせて判断していることが伺えました。
常識を基に、矛盾した情報に惑わされることなく「りんごは果物である」という事実を一貫して述べています。

パターン①-c

更に矛盾する情報を与えた場合の確認です。
★ 「A = Z」と「A = Y」「A = Z」の情報を持っている場合です。

▼ AとZの関係

▼ AとXの関係

▼ AとYの関係

▼ Aが「X, Y, Z」のどれに該当するかの確認

パターン①-bと同じように、「りんごは果物である」というLLMの主張は変わりませんでした。
また、ナレッジベースの情報に矛盾があるということも指摘してきました。

パターン②-a

ここからは、LLMに事前知識がない場合の検証です。
★ 「B = W」の情報のみを持っている場合です。

▼ BとWの関係

▼ BとVの関係

▼ Bが「V, W」のどれに該当するかの確認

きちんとRAGが動作し、えよぴんぷがSCSKの社員であることを答えてくれました。
料理にならなくて安心しました。

パターン②-b

更にLLMに矛盾した情報を与えてみましょう。
★ 「B = W」と「B = V」の情報を持っている場合です。

▼ BとWの関係

▼ BとVの関係

▼ Bが「V, W」のどれに該当するかの確認

ここで、BとWの関係について、一方のみの情報で解を出す事例がありました。
何回か聞いてみましたが、この状況は変わりませんでした。
そこで、BとVの関係についても何度か質問してみたところ、以下のような回答を出すことがありました。

 

まとめ

今回の検証の結果をまとめます。

パターン LLMの事前知識 RAGの情報① RAGの情報② 結果
①-a A = Z A = Z のみ出力
①-b A = Z A = Y A = Z のみ出力
A = Y は誤った情報と回答
①-c A = Z A = Y A = X A = Z のみ出力
A = X, Y は誤った情報・矛盾していると回答
②-a B = W B = W のみ出力
②-b B = W B = V 結果が安定せず

 

考察・今後に向けて

ここからは私個人の完全なる推測です。

今回は、ナレッジベースに与える情報として、「AはYです。」といった事実のみ与えました。
そのため、パターン①のように事前知識がある場合、情報量が少ないナレッジベースの内容は虚偽として捉えられた可能性が高いです。
一方、パターン②のようにLLMが事前確認として持ち合わせていない事象に対しては、情報量が(恐らく)等しい事象を与えたため、LLMが判断に迷い、様々な結果が出力されたと考えています。

今後はパターン①に対抗するため、事前知識に対抗しうる情報量をナレッジベースに与えた場合や、パターン②において情報量に偏りをもたせた場合の挙動について調査をすると、また面白い結果が出るのかなと感じた次第です。

 

おわりに

この記事を執筆していると、ほんの少しですが学生時代の研究生活を思い出しました。(今回の検証は、厳密性・再現性の観点から見ると本当にお遊び程度ですが…)

この内容についても学術的に研究されている論文もあります(アーカイブですが)ので、興味がある方は読んでみると面白いかもしれません。私も少しだけですが読みました。
※ 今回の検証結果の一部は、下記論文の内容とも合致していました。

著者について

2024 Japan AWS Jr. Champions
ANGEL Dojo 2024 | ベストアーキテクチャ賞 2位

ひとこと:
同期に「おじさん」とよく言われます。なぜなのでしょうか…

Yusuke HIRUTAをフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AI・MLAWS
シェアする
タイトルとURLをコピーしました