RAFT(Retrieval Augmented Fine-Tuning)は、RAGパイプラインにおいてretrieverが返す文書群から必要な情報を正確に抽出する能力をLLMに訓練するファインチューニング手法。ドメイン固有のオープンブック試験を模倣し、正解文書(oracle)と無関係文書(distractor)を混在させた学習データでモデルを鍛えることで、ノイズ耐性と情報抽出精度を同時に向上させる。
RAFT(Retrieval Augmented Fine-Tuning)は、2024年にUC BerkeleyのGorilla LLMチーム(Tianjun Zhang, Shishir G. Patil, Naman Jain, Sheng Shen, Matei Zaharia, Ion Stoica, Joseph E. Gonzalez)が提案した、RAG(Retrieval-Augmented Generation)パイプラインの性能を大幅に向上させるファインチューニング手法である。従来のRAGでは、retrieverが取得した文書をそのままコンテキストとしてLLMに渡すが、取得文書にはノイズ(無関係な情報)が多く含まれることがある。RAFTはこの問題に対し、LLM自体を「オープンブック試験の受験者」として訓練することで、関連文書から必要な情報だけを抽出し、無関係な文書を無視する能力を獲得させる。
論文「RAFT: Adapting Language Model to Domain Specific RAG」では、この手法がドメイン固有のQAタスクにおいて、標準的なRAGやファインチューニングを大幅に上回る性能を達成することが示された。特に、医療・法律・技術文書など、専門知識を要するドメインでの効果が顕著である。
RAFTの核心は「試験勉強のアナロジー」にある。学生が試験勉強をする際、教科書を読みながら重要な箇所にハイライトを引き、無関係な情報を無視する訓練をする。RAFTはこれと同じプロセスをLLMに適用する。
訓練データは以下の3要素で構成される:
| 要素 | 説明 | 役割 |
|---|---|---|
| 質問(Question) | ドメイン固有のQAクエリ | 学習の目標設定 |
| Oracle文書(D*) | 質問の回答に必要な情報を含む正解文書 | 正解情報源 |
| Distractor文書(Di) | 質問とは無関係だが同ドメインの文書 | ノイズ耐性訓練 |
訓練時には、oracle文書とdistractor文書を混在させたコンテキストをLLMに与え、oracle文書から正確に回答を抽出するよう学習させる。重要なのは、一定割合のサンプルではoracle文書を含めず、distractorのみのコンテキストで回答させることで、LLM自身のパラメトリック知識に頼る能力も維持する点である。
RAFTの設計思想を理解するために、以下の試験勉強アナロジーを詳しく見てみよう。
クローズドブック試験(Closed-Book Exam):教科書を持ち込めない試験。標準的なSFT(Supervised Fine-Tuning)に相当し、モデルはパラメータに記憶した知識のみで回答する。
オープンブック試験(Open-Book Exam):教科書の持ち込みが許可される試験。RAGに相当するが、単に教科書を持ち込むだけでは十分ではなく、必要な情報をすばやく見つけ出す技術が必要。
RAFTの学習法:オープンブック試験に特化した勉強法。教科書から関連ページと無関係ページを混在させた模擬問題を繰り返し解くことで、重要な情報を素早く見つけ、無関係な情報に惑わされない力を身につける。
| 手法 | 試験タイプ | 参照文書 | 知識源 |
|---|---|---|---|
| 標準SFT | クローズドブック | なし | パラメトリック知識のみ |
| RAG | オープンブック(未対策) | retriever出力 | コンテキスト依存 |
| DSF(Domain-Specific FT) | クローズドブック | なし | ドメイン記憶 |
| RAFT | オープンブック(対策済) | oracle + distractor | コンテキスト + パラメトリック |
RAFTでは、回答を直接生成するのではなく、Chain-of-Thought(CoT)形式で回答を生成するよう訓練する。具体的には、回答に至る推論過程を段階的に記述し、参照した文書の該当箇所を明示的に引用する形式をとる。これにより、回答の根拠が明確になり、ハルシネーション(幻覚)の検出も容易になる。
訓練データにおいてoracle文書を含むサンプルの割合をP比率と呼ぶ。論文ではP比率の最適値として概ね40〜80%の範囲が効果的であることが示されている。P=1.0(常にoracleを含む)では、モデルが常にコンテキストに正解があると仮定してしまい、retrieverが失敗した場合の対応力が低下する。逆にP=0.0ではRAGの利点が失われる。
Distractor文書の数を増やすことで、よりノイズ耐性の高いモデルを訓練できる。典型的な設定では4〜5つのdistractor文書を使用するが、ドメインの特性に応じて調整が必要である。
| パラメータ | 推奨範囲 | 効果 |
|---|---|---|
| P比率 | 0.4〜0.8 | oracle含有率。高すぎるとパラメトリック知識が退化 |
| Distractor数 | 3〜5 | 多いほどノイズ耐性向上、ただし計算コスト増大 |
| CoT長 | 100〜500トークン | 推論過程の詳細度。長すぎると効率低下 |
| 学習率 | 1e-5〜5e-5 | 標準的なSFTと同等 |
| エポック数 | 3〜5 | 過学習に注意 |
RAFTが特に効果を発揮するシーンを以下に挙げる。
企業内ナレッジベースQA:社内文書、マニュアル、議事録などから情報を検索・回答するシステム。retrieverが返す文書の品質にばらつきがある場合でも、RAFTで訓練したモデルは高精度な回答を維持できる。
医療文書解析:診療ガイドライン、論文、患者記録から関連情報を抽出するシステム。高い精度が要求される領域で、distractorへの耐性が重要。
法律文書検索:判例、法令、契約書から該当箇所を特定するシステム。類似表現が多く、distractor文書が紛らわしいドメインでRAFTの効果が大きい。
技術文書サポート:API仕様書、トラブルシューティングガイド、リリースノートから回答を生成するシステム。バージョン間の差異がdistractor的に作用する場面で有効。
RAGはretrieverで取得した文書をそのままLLMのコンテキストに渡す推論時の手法であり、LLM自体は変更しない。一方RAFTは、RAGパイプラインで使用するLLM自体をファインチューニングし、取得文書から情報を効率的に抽出する能力を訓練する。RAFTはRAGを置き換えるものではなく、RAGの性能を向上させるための補完的な手法である。RAFTで訓練したモデルをRAGパイプラインに組み込むことで、最高の性能が得られる。
RAFTの訓練データ量はドメインの複雑さによって異なるが、論文の実験では数千〜数万の質問-回答ペアで有意な性能向上が確認されている。重要なのはデータ量よりもデータの質であり、oracle文書とdistractor文書の適切な選定が鍵となる。小規模なドメイン固有コーパスでも、質の高いQAペアを構築できれば効果的な訓練が可能である。
RAFTはアーキテクチャに依存しない汎用的な手法であり、Llama、Mistral、GPT系、Gemma、Qwenなど、標準的なSFTが適用可能な任意のLLMに適用できる。論文ではLlama2-7BおよびGPT-3.5を対象に実験が行われ、いずれでも有意な性能向上が確認されている。LoRA/QLoRAなどのパラメータ効率的手法と組み合わせることも可能で、計算資源が限られる環境でも適用しやすい。
RAFTの訓練コストは標準的なSFTとほぼ同等である。追加のコストは主にデータセット構築の工程にかかる。具体的には、oracle/distractor文書の選定とCoT回答の生成に計算リソースが必要だが、これは一度行えば繰り返し利用できる。7Bクラスのモデルであれば、A100 GPU 1台で数時間〜半日程度の訓練が可能である。