😎

RAGのハルシネーション対策をする手法「Astute RAG」

2024/10/15に公開

株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ向けに開発提供しているスタートアップです。本記事では、RAGの性能を高めるための「Astute RAG」という手法について、ざっくり理解します。

この記事は何

この記事は、RAGでハルシネーション対策を強固にするための手法「Astute RAG」の論文[1]について、日本語で簡単にまとめたものです。
https://arxiv.org/abs/2410.07176

今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。
https://zenn.dev/knowledgesense/articles/47de9ead8029ba

本題

ざっくりサマリー

RAGのハルシネーション対策をする手法「Astute RAG」

Astute RAGは、RAGの精度を上げるための新しい手法です。Astute RAGでは、外部知識・内部知識を組み合わせることで、ハルシネーションを抑えます。Google Cloud AI ResearchとUSCの研究者らによって2024年10月に提案されました。

通常のRAGでは、外部ソースから検索して得た情報を直接利用して、最終的な回答を生成します。しかし、この方法だと外部ソースが間違っている場合、回答精度が落ちます。

そこで、Astute RAGは、LLMが元から持っている知識(内部知識)と、外部知識を上手く組み合わせることで、このような課題を解決します。仮に外部知識を参考にする場合でも、「複数の箇所で言及されているか」「信頼できる人が言っているか」などを総合的に加味して、ソースの信頼性を判定します。

問題意識

従来のRAGの課題として、「外部ソースに頼りすぎ」という課題がありました。

例えば、大企業のRAGでは、こんな課題がよくあります。

  1. 過去に蓄積されたドキュメントが、もう最新ではない
    • 過去、改正前の法律について解説した社内向けドキュメントなど。既に現実の法律は改正されていることがある
  2. ある文書は、特定の条件を満たした人にとってのみ「真」となる情報である
    • 特定の部署や役職者のためだけに当てはまる規定など

このように外部ソースが必ずしも正確ではない場合、従来のRAGでは、回答精度が下がります。

本来、RAGは、LLMのハルシネーションを低減させるための手法です。しかし、断片的な外部ソースを「真」としすぎるのも、逆にハルシネーションになることがあるのではないか、という問題提起がされています。

手法

Astute RAGは大きく分けると3ステップです。

RAGのハルシネーション対策をする手法「Astute RAG」

具体的な手順は以下。

【ユーザーが質問を入力して来たとき】

  1. LLMの内部知識を明示的に引き出す

    • ユーザーの質問に対して、外部ソース無しの状態でLLMに回答生成させる
    • 不確かな情報は「分からない」と明示的に述べるよう指示。
  2. 情報の統合

    • 質問に関する外部文書を検索・取得(従来のRAGと同様)
    • この外部知識と1の内部知識を統合。この際、矛盾しない情報群だけでグループを作成。
    • この処理を1回だけでなく、複数回行うことも可能。
  3. 最終的な回答を生成・評価

    • 2で作成した各グループごとに、最終的な回答案を生成。
    • 各回答案の信頼性を評価(情報源、複数源からの確認、頻度、情報の詳細さなどで判断)
    • 最も信頼できる回答を選択し、最終回答とする。

Astute RAGという手法のキモは、「信頼性のある回答」を判断するためのプロセスです。LLMの内部知識も活用したり、外部ソース情報を広く取得したり...それ自体は簡単ですが、そうやって情報が多くなるほど、矛盾する情報も増え、カオスになります。なので、それらの情報を整理して、信頼度でソートする部分が、この手法の重要なポイントです。

成果

  • あらゆるデータセット(NQ、TriviaQA、BioASQ、PopQA)において、Astute RAGは既存のRAG手法を上回る性能。
  • 外部ソースの質が低い場合(検索精度がゼロに近い最悪な場合)でも、Astute RAGはRAGを使用しない場合と同等以上の性能を達成した唯一の手法だった。
  • ソースとなる情報が矛盾している場合でも、最も信頼性でいる情報に基づいて回答生成が可能。

まとめ

弊社では普段、法人向けにRAGサービスを提供しています。その際、お客様からよく聞かれるのは 「情報ソースの中に最新でないものがあったら、RAGの回答はどうなるのか?」 ということです。

この質問、非常に的を射ていて、まさにこの場合、RAGの精度は良くないです。なので、これまでのRAGエンジニアは、「ソースとなる情報を、ちゃんと更新してください!」というような、利用者側に負担を強いるようなアドバイスをしてきたはずです。(もちろん、それも大事。)

Astute RAG の良いところは、このようなユーザー負担を強いることなく、システムとして問題解決できる可能性があることです。また、ちなみに、RAGのハルシネーションを抑えるための別の手法としてはSelf-RAG[2]やCRAG[3]もありますのでご参考ください。

みなさまが業務でRAGシステムを構築する際も、選択肢として参考にしていただければ幸いです。今後も、RAGの回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら

脚注
  1. "Astute RAG: Overcoming Imperfect Retrieval Augmentation and Knowledge Conflicts for Large Language Models", Wang et al. ↩︎

  2. RAGの性能を高める「Self-RAG」を3分で理解する ↩︎

  3. RAGの新しい手法「CRAG」を3分で理解する ↩︎

ナレッジセンス - AI知見共有ブログ

Discussion