top of page
IMG_0546.JPG

RAGの弱点:ポイズニングAttackへの新提案:RAGForensicsの紹介:2025/05/01

  • 執筆者の写真: 晋次 宮田
    晋次 宮田
  • 2025年5月1日
  • 読了時間: 4分


はじめに


生成AI(ChatGPTなど)に質問をしたときに、「ん?この回答変だな?」と思ったことありますよね。皆さんご存知のように、AIはハルシネーション(幻覚)と呼ばれるアウトプットを作成してしまいます。

そんな幻覚を減らすために登場したのが、**RAG(Retrieval-Augmented Generation)**という仕組みです。

AIが、サービス提供者側が用意した外部の知識データベースから情報を引っ張ってくることで、より正確な答えを出せるようにする方法です。

ただ、このRAGには弱点があります。それはPoisoning attackと呼ばれるもので、知識データベースに間違った情報・悪意のある情報が含まれた場合、そのデータを参考にして回答をしてしまうという点です。

今回紹介する論文では、この毒の要素が、どのデータから発生しているのか?を突き止める方法論について新しい方法を提示してくれています。

はたして実用的なのでしょうか?見てみましょう。



RAGとは何か?


まずはRAGの基本的な構造を見てみましょう。

[ユーザの質問]
      ↓
Retriever(検索器)← **知識データベース**
      ↓
[質問+検索結果]
      ↓
LLM(AI本体:例 ChatGPTなど)
      ↓
[AIの回答]
  • ユーザの質問を受け取ると、

  • Retrieverがデータベースから関連性が高いテキストを検索

  • それらを文脈としてLLMが回答を生成

このように、RAGは外部知識とAIをつなぐ仕組みで構築されています

元々用意した知識データベースを元に回答を作るため、ハルシネーションが少なく、専門性の高い回答ができるという利点があります。



毒入れ攻撃(Poisoning Attack)とは


RAGでは知識データベースから検索をかけるRetrieverが重要な役割を果たす一方で、攻撃の入口にもなります。

毒入れ攻撃(Poisoning Attack)の方法は以下です。


  1. 攻撃者が意図的に「毒文」(誤情報・誘導文)を知識ベースに混入させる

  2. それがRetrieverによって検索結果の中に入ってしまう

  3. LLMがそれをもとに誤った回答を返す </aside>

こう考えると、

社内文書の中に間違った情報が入ったままRAGに登録されたら?
ユーザー投稿型のサービスでその情報に間違いが含まれていたら?

と、想像は色々できちゃいます。攻撃の意図がなかったとしても、そのデータが原因で、誤った回答をすることは全然あり得るということですね。



従来の防御方法


このような攻撃に対して、従来は次のような防御策が使われていました

  • 文の不自然さを検知する

  • ユーザーからの質問を書き換えて毒を避ける

  • 検索結果の件数を増やして毒の影響を薄める

  • 怪しいキーワードを隔離する

これらはいずれも対処療法であり、根本的な毒データの排除、という点では効果が有りません。



RAGForensicsとは?「毒の出どころを特定する」新しいアプローチ


そこで今回文献で登場したのが、RAGForensicsという新しい発想の仕組みです。

RAGForensicsは、防御ではなく「毒データの追跡」をする仕組みです。


  • 「なぜこの誤答が生まれたのか?」

  • 「その原因となったテキストはどれか?」 </aside>


という視点で、毒データを特定してデータベースから削除することを目的とした手法です。

視点は良さそうですよね。



RAGForensicsの仕組み


RAGForensicsの流れは以下の通りです:

1. ユーザがから誤回答のフィードバックを受ける
          ↓
2. RAGのretrieverを通して、その質問に使われた元文書を取得
          ↓
3. それぞれの文が「毒かどうか」をLLMに聞く(Yes/No)
          ↓
4. 毒文を削除してデータベースを更新
          ↓
5. 正しい回答だけが出るまで繰り返す

非常に面白いのは、LLM自身を毒データかどうか?の判定係として登用している点です。

合わせて、誤答とその文脈の一致度を評価するために、「Chain of Thought(思考の連鎖)」プロンプトを使って、丁寧に考えさせる工夫をしています。



実験結果


論文では、RAGForensicsを既存の6つの手法(PPL、RobustRAG、説明生成など)と比較しています。


その結果

  • 正確度(DACC):常に97%以上

  • 誤検出率(FPR):ほぼ0〜2%

  • 見逃し率(FNR):ほぼ0%

※正確度(DACC):全体として正しく分類できた割合

※誤検出率(FPR):無害な文を毒と誤って判定した割合

※見逃し率(FNR):毒文を見逃した割合


結構優秀です。

将来的にRAGの毒データ検出モジュールとしてDify等のサービスに実装されるといいですね。



おわりに


RAGForensicsは、ただの誤答を避けるのではなく、その原因を特定して対処するという根本治療的な考え方を提示してくれたと思います。教育・医療・法務といった間違うことが致命的になってしまう場面でのAI活用において、このような追跡・特定技術は重要になってきそうです。



書き手


名前:Shindy Miyata

所属:SHARE Security

セキュリティエンジニア

 
 
bottom of page