FLARE: 能動的検索拡張生成
先週、Lewisらによる基礎的なRAGの論文を読んでいました。一度検索し、結果を先頭に付加し、生成する。これは機能しますが、何が必要になるかを事前にすべて把握していることが前提となります。FLARE (EMNLP 2023) は、その前提を直接攻撃します。モデルが確信を持てなくなった瞬間、つまり文の途中で検索するのが最適なタイミングだとしたらどうでしょうか?この問いは、単一のコンテキストウィンドウには収まりきらない元帳履歴に基づいて推論を行う必要があるBeancountエージェントのようなシステムにとって、慎重に検討する価値があります。
論文の概要
Zhengbao Jiang、Frank F. Xu、Luyu Gao、Zhiqing Sun、Qian Liu、Jane Dwivedi-Yu、Yiming Yang、Jamie Callan、Graham Neubigによる「Active Retrieval Augmented Generation」は、FLARE (Forward-Looking Active REtrieval augmented generation) を提案しています。彼ら が解決しようとしているのは、長文生成におけるハルシネーション(幻覚)の問題です。モデルが長い出力を生成する際、複数の知識を断続的に取り出す必要があります。標準的なRAGはクエリ時に一度だけ検索を行い、取得した文章が生成に必要なすべてをカバーしていることを期待します。これは短い回答には適していますが、数段落にわたる回答では脆弱になります。
FLAREは生成を文レベルのステップに分解します。各ステップで、まず次の一文の候補を生成します。その候補内のいずれかのトークンの予測確率がしきい値 θ を下回った場合、FLAREはそれら低確信度のスパンを検索シグナルとして扱い、それらを使用して(マスキングまたは補完によって)クエリを形成し、Wikipediaから検索を行って、取得したコンテキストをもとに文を再生成します。その結果、モデルが確信を持てない場合にのみ、かつその場所においてのみ検索を行うシステムが実現します。決して必要のないコンテンツのために検索をフロントローディングすることはありません。すべての実験は、ファインチューニングなしのGPT-3.5 (text-davinci-003) で実行されました。
主なアイデア
- 検索トリガーとしての確信度: トークンの確率が θ を下回ることは、モデルがハルシネーションを起こす可能性が高いことを示唆します。検索はデフォルトではなく、その時にのみトリガーされます。著者らは、40〜80%の文でトリガーするのが通常最も効果的であることを発見しました。
- 前方向きのクエリ (Forward-looking queries): すでに生成された内容のみをクエリとして使用するのではなく(「過去ウィンドウ」アプローチ)、FLAREは予測された「次に来る文」—モデルが言おうとしていること—を、よりターゲットを絞った検索クエリとして使用します。
- 2つのバリアント: FLARE-instructは低確信度トークンをマスクし、そのマスクされたスパンをクエリとして使用します。FLARE-directは予測された文全体を使用します。2WikiMultihopQAでは、directバリアントが51.0 EMに達したのに対し、instructバリアントは42.4でした。
- 単一検索に対する利得は実在するが不均一: 2WikiMultihopQAでは、FLARE-directが51.0 EMを記録し、単一検索の39.4、検索なしの28.2に対して決定的な改善を見せました。一方、ASQAではその差ははるかに小さく(41.3 vs. 40.0)、WikiAsp(UniEval 53.4 vs. 52.4)ではほぼ同等でした。
- 明示的な失敗ケース: 著者らは、出力が短いWizard of WikipediaやELI5では、多段階検索が利益をもたらさずオーバーヘッドを増やすだけであるため、利得がないことを報告しています。
- コスト: 生成と検索がインターリーブされるため、各例で複数のLM補完と検索コールがトリガーされる可能性があります。キャッシングは単純ではありません。