RAGのハルシネーション対策をする手法「Astute RAG」
株式会社ナレッジセンスは、生成AIやRAGを使ったプロダクトを、エンタープライズ向けに開発提供しているスタートアップです。本記事では、RAGの性能を高めるための「Astute RAG」という手法について、ざっくり理解します。
この記事は何
この記事は、RAGでハルシネーション対策を強固にするための手法「Astute RAG」の論文[1]について、日本語で簡単にまとめたものです。
今回も「そもそもRAGとは?」については、知っている前提で進みます。確認する場合は以下の記事もご参考下さい。
本題
ざっくりサマリー
Astute RAGは、RAGの精度を上げるための新しい手法です。Astute RAGでは、外部知識・内部知識を組み合わせることで、ハルシネーションを抑えます。Google Cloud AI ResearchとUSCの研究者らによって2024年10月に提案されました。
通常のRAGでは、外部ソースから検索して得た情報を直接利用して、最終的な回答を生成します。しかし、この方法だと外部ソースが間違っている場合、回答精度が落ちます。
そこで、Astute RAGは、LLMが元から持っている知識(内部知識)と、外部知識を上手く組み合わせることで、このような課題を解決します。仮に外部知識を参考にする場合でも、「複数の箇所で言及されているか」「信頼できる人が言っているか」などを総合的に加味して、ソースの信頼性を判定します。
問題意識
従来のRAGの課題として、「外部ソースに頼りすぎ」という課題がありました。
例えば、大企業のRAGでは、こんな課題がよくあります。
-
過去に蓄積されたドキュメントが、もう最新ではない
- 過去、改正前の法律について解説した社内向けドキュメントなど。既に現実の法律は改正されていることがある
-
ある文書は、特定の条件を満たした人にとってのみ「真」となる情報である
- 特定の部署や役職者のためだけに当てはまる規定など
このように外部ソースが必ずしも正確ではない場合、従来のRAGでは、回答精度が下がります。
本来、RAGは、LLMのハルシネーションを低減させるための手法です。しかし、断片的な外部ソースを「真」としすぎるのも、逆にハルシネーションになることがあるのではないか、という問題提起がされています。
手法
Astute RAGは大きく分けると3ステップです。
具体的な手順は以下。
【ユーザーが質問を入力して来たとき】
-
LLMの内部知識を明示的に引き出す
- ユーザーの質問に対して、外部ソース無しの状態でLLMに回答生成させる
- 不確かな情報は「分からない」と明示的に述べるよう指示。
-
情報の統合
- 質問に関する外部文書を検索・取得(従来のRAGと同様)
- この外部知識と1の内部知識を統合。この際、矛盾しない情報群だけでグループを作成。
- この処理を1回だけでなく、複数回行うことも可能。
-
最終的な回答を生成・評価
- 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の回答精度を上げるような工夫や研究について、記事にしていこうと思います。我々が開発しているサービスはこちら。
Discussion