belong try で論文の輪読会をしてみました! ~Adaptive-RAGの基礎を学ぶ~
はじめまして。Shuhei です。
2024 年 7 月に 株式会社 Belong に入社しました。DataPlatform チームに所属するソフトウェアエンジニアです。
先日、社内の勉強会で論文の輪読会に参加させていただきました。今回はその会で取り扱った論文の要旨を自分なりにまとめあげ、今後の生成 AI 系の情報収集がやりやすくなるよう、基本的な知識や考え方をアウトプットしてみようとしました。初学者の目線を大切にして書き残していきます。
前置きが長くなり恐縮ですが、弊社で実施している勉強会について紹介させていただきます。
弊社では定期的に belong try という社内勉強会を実施しています。この勉強会の建付けとしては「知らないもの、興味があったけどやってない、挫折したものを挑戦してみよう!」といったもので、過去には「非フロントエンドエンジニアのメンバーが React に挑戦」等に取り組んでいました。
私が入社してすぐ、「論文の輪読会をしてみよう!」というテーマで belong try が開始しました。ありがたくも「 Shuhei さんも参加してみる?」とお誘いいただいたので、軽い気持ちで参加してみました。
最初に扱う論文のテーマは Adaptive-RAG についての論文でした。
論文を読むのは学生時代ぶりでしたし、そもそも RAG って?みたいな状態でしたので、不安はありましたが、乗りかかった船ということで、合計 4 回の輪読会に参加させていただきました。先日 4 回目の会を終え、ついに 1 本の論文を読み切ることができました。
昨今期待を集める Adaptive-RAG に対するはじめの一歩を踏み出せたような気がするので、早速レポートしていきます。
前提となる用語をおさえる
まずは、Adaptive-RAG についての論文を読むにあたって、事前に備えておいたほうがよいと思われる最低限の知識を簡単に書き記しておきます。
- Generative AI ( 生成 AI )
- 画像、音声、言語などのコンテンツを自律的に生成する
- LLM ( Large Language Model / 大規模言語モデル )
- Generative AI の一種
- ある単語のあとに続く単語を予測する
- 従来の言語モデル ( LM / Language Model ) とは、「データ量」「計算量」「パラメータ数」が大規模である点で異なる。
- 例えば Chat-GPT は 自然言語コミュニケーションに特化した LLM のモデルの一種
- RAG ( Retrieval Argumented Generation / 検索拡張生成 )
- LLM が学習していない内容であっても、外部の情報を参照することで回答できるようにする手法
- 従来の LLM で発生しうるハルシネーションをある程度防ぐことが可能
- 本稿で言及されている Adaptive-RAG は RAG の手法の一種
論文のざっくりとした要旨
前提となる用語をおさえたところで、論文の要旨を確認していきましょう。重要と思われる用語は適宜整理しながら書き進めていきます。
概要
RAG は回答の精度を向上させる手法として注目されています。
RAG が問い合わせされた内容を処理し、回答を生み出すまでの手法はいくつかあるものの、以下のような状況に陥ってしまうこともあります。
- シンプルな問い合わせに対して、複雑な検索手法を用いることで、検索効率が悪くなってしまう
- 複雑な問い合わせに対して、シンプルな検索手法を用いることで、精度の低い回答となってしまう
しかし、Adaptive-RAG はその課題を解消できると、執筆者は言及しています。
Adaptive-RAG の新規性
Adaptive-RAG の新規性は、問い合わせの複雑性に応じて最適な検索手法を選択できることにあります。
Adaptive-RAG は問い合わせ内容の複雑性を判別し、その複雑性に応じて、下記のように検索手法を動的に選択します。
- No Retrieval Approach
- (LLM だけで回答が可能な) 単純な問い合わせに対しては、外部のソースを検索しない
- Single-Step Approach
- シンプルな問い合わせに対しては、外部のソースを一度だけ検索する
- Multi-Step Approach
- 複雑な問い合わせに対しては、外部のソースを複数回検索する
※ 「外部のソースを検索しない」とは、LLM のモデル内にて回答を導き出すこと。
Adaptive-RAG のイメージを膨らませるために、下記の画像をご覧ください。
まさにこの「問い合わせに応じて検索手法を選択できること」がポイントです。
他の手法との比較
Adaptive RAG では検索方法を動的に決定しますが、検索手法が固定化されているとどうどうなるでしょうか?
下記の画像をご覧ください。
Single-Step Approach はシンプルな問い合わせに対しては効率的に回答を導き出すことができます。LLM だけでは対処できない問い合わせに対しても、外部のドキュメントを参照することができるため、LLM に対して補足情報を与えることができます。
しかしながら、複雑な問い合わせに対しては、回答の精度が低くなってしまう可能性があります。
一方、Multi-Step Approach は複雑な問い合わせに対しては、精度の高い回答を導き出すことができます。Single-Step Approach と異なり、複数回・複数種類のドキュメントを参照した上で、回答することができます。
しかしながら、この複数回の検索がネックとなり、シンプルな問い合わせに対しては、検索効率が悪くなってしまいます。
- Single-Step Approach
- シンプルな問い合わせには効果的だが、複雑な問い合わせには向かない
- Multi-Step Approach
- 複雑な問い合わせには効果的だが、シンプルな問い合わせには向かない
- Adaptive-RAG
- 問い合わせの複雑性に応じて、最適な検索手法を選択可能
すなわち、検索方法が固定されている場合、回答の精度と効率性のトレードオフを受け入れる必要があるのです。
問い合わせ内容の判別
では、Adaptive-RAG はどのように問い合わせ内容の複雑性を判別しているのでしょうか?
執筆者によれば、Classifier (分類器) によって判別するとのことです。
本稿では、Classifier にて問い合わせを A, B, C の 3 段階にラベル付けし、問い合わせ内容の複雑性を評価しています。
- Label A
- 問い合わせ内容が単純で、No Retrieval Approach で回答するのが望ましい場合
- Label B
- 問い合わせ内容がシンプルで、Single-Step Approach で回答するのが望ましい場合
- Label C
- 問い合わせ内容が複雑で、Multi-Step Approach で回答するのが望ましい場合
この Classifier は"小さな言語モデル" であり、このモデルは問い合わせ内容の複雑性を評価できるようにトレーニングされています。
"小さな言語モデル"について
この"小さな言語モデル"というのは、クエリとその複雑性が関連付けられたデータセットを用意して、本稿のために新たにトレーニングされたものと、私は解釈しました。さらに、このクエリとその複雑性が関連付けられたデータセットは、本稿で示されている SQuAD 等の既存のデータセット (テキストとそれに対する質問、回答が含まれるデータ群) を用いて構築したと読み取りました。実験手法
本稿では、Adaptive-RAG の性能を下記のモデルと比較していました。
- No Retrieval
- Single-step Approach
- Multi-step Approach
- Adaptive Retrieval
- Self-RAG
Adaptive Retrieval について
Adaptive-RAG と名称の似ている Adaptive Retrieval について補足をします。Adaptive Retrieval は問い合わせ内容の複雑性から、外部のドキュメントを参照すべきかどうかを判定する検索手法で、外部のドキュメントを参照する際の検索手法の判定までは行わない点で、Adaptive-RAG と異なります。性能を比較するうえでの指標としては下記を用いていました。
- パフォーマンス指標
- EM (Exact Match, Exactly Match)
- 予測された回答と学習データの回答が同一かどうかを計測
- F1
- 予測された回答と学習データの回答との重複する単語の数を計測
- F 値、F1 スコア (F1-score) ともいわれる
- Acc ( Accuracy )
- 予測された回答に学習データの回答が含まれているかどうかを計測
- Step
- 回答までのステップ数
- Time
- 回答時間
- EM (Exact Match, Exactly Match)
効果を示す EM, F1, Accuracy の指標は数値が高いほど良く、効率性を示す Step, Time の指標は数値が低いほど良いものと、私は解釈しました。
※ これらは機械学習における代表的な指標のようです。上記の説明は論文の言葉を借りましたが、個人的な課題として、より一層詳細に理解する必要があるなと思いました。この点は今回では扱いきれなかったため、今後の課題として取っておきます。
実験結果
結果として、Adaptive-RAG はその効果、効率性の両面において、高い性能を示したと執筆者は言及します。
下記の表をご覧ください。
Adaptive-RAG の計測された性能は太字で示されています。効果を示す EM, F1, Accuracy では比較対象と比べておおむね高い数値を示しており、効率性を示す Step, Time でもおおむね低い数値を示していることが読み取られると思います。
※ 列で示されている FLAN-T5_XL(3B), FLAN-T5-XXL(11B), GPT-3.5(Turbo) は LLM の種別となります。この 3 種類のモデルを利用して実験を行うことが本稿において記されていました。
Adaptive-RAG w/ Oracle について
表の最下行の Adaptive-RAG w/ Oracle も高い性能を示していることが読み取られます。これは、Adaptive-RAG に「問い合わせの複雑性を完璧に判別できる Classifier 」を備えたものといいます。執筆者が、性能を最適化するために Classifier を改善を今後の展望としていることから、さらなる Classifier の改善を視野に入れた結果として示したのだと、私は解釈しました。おわりに
以上、私なりに Adaptive-RAG についての論文を読んで、要点をかいつまんでご紹介させていただきました。取り扱った論文は今年執筆されたものでしたので、Adaptive-RAG の活用事例は現時点ではなかなか見当たりませんでしたが、今後の浸透に期待したいです。すでに弊社では RAG の活用に取り組み中ですが、Adaptive-RAG はそういった活動のさらなる進展・改善に役立ちそうです。
また、今回は扱い切れませんでしたが、Adaptive-RAG の Tutorial 資料を見つけました。今後はこういった題材に取り組んでみたいです。
論文を読むのは久々で、慣れない部分も多々あったのですが、なんとか読み切ることができました。そして、みんなで読む機会がないとこういったテーマには触れづらかったため、貴重な経験が得られました。ついでに英語の勉強にもなりました。
生成 AI についての予備知識はほどんどない状態でしたが、論文を読み進める中で様々な知識に出会うことができ、生成 AI について理解を深めるための第一歩を踏み出せたかなと思います。こういった新たな知見に触れられるのも、輪読会の醍醐味だなと感じました。
Belong ではこのように積極的に勉強会を開催しています。そして、生成 AI によるさらなるプロダクトの改善にも取り組んでいる最中です。「生成 AI に興味があるぞ!」という方はぜひ Belong Entrance Book for Engineer をご覧ください!