Re Reference AI

技術

RAFTとは

Retrieval-Augmented Fine-Tuning

検索した正解文書と無関係な文書(ディストラクタ)を含めてファインチューニングし、RAG利用時の頑健性を高める手法

RAGファインチューニング

ひとことで言うと

本番のRAGと同じように、正しい資料とまぎらわしい資料を混ぜた状態で練習させ、実運用に強くするやり方。

概要

RAFT(Retrieval-Augmented Fine-Tuning)は、RAGシステムで実際に想定される状況を学習データとして再現するファインチューニング手法。 検索結果に質問の答えを含む正解文書と、答えに関係のない紛らわしい文書(ディストラクタ)が混在した状態を再現し、その中から正解文書の内容を根拠に正しく回答するようモデルを学習させる。 通常のファインチューニングや、検索なしで質問と正解だけを学習させる方法では、実際の検索結果に含まれるノイズ(無関係な文書)への耐性が身につきにくい。 RAFTはあえてディストラクタを混ぜた状態で学習させ、本番運用時に近い条件での頑健性を高める。 正解文書がどれかを明示せず、モデル自身に文書群の中から根拠となる箇所を見極めさせながら回答を組み立てる訓練をするため、単純に検索結果を鵜呑みにするのではなく関連性を選別する能力も同時に養われる。 特定ドメイン(社内文書や専門分野の資料など)向けにRAGシステムを構築する際、汎用の埋め込みモデルやLLMだけでは対応しきれない、そのドメイン特有の文書の書き方や紛らわしい表現への適応策として提案された。

背景

通常のRAGはLLM自体を追加学習せず、検索した文書をプロンプトに含めるだけで回答させるため、ドメイン特有の紛らわしい文書や表現への対応力は事前学習指示チューニングの範囲に依存していた。 RAFTは、実際の検索結果に近いノイズ混じりの状況を学習データとして与えることで、特定ドメインのRAGシステムにおける回答の頑健性を高める目的で考案された。

歴史

2024年: ZhangらがRAFTを提案する論文「RAFT: Adapting Language Model to Domain Specific RAG」を発表。

アーキテクチャ

学習データの1件は、質問(Q)、正解の根拠となる文書(oracle document)、複数の無関係なディストラクタ文書(distractor documents)、そして根拠文書中の記述を引用しながら結論を導くChain-of-Thought形式の解答から構成される。 学習データ全体のうちP%の設問には正解文書とディストラクタの両方を含める一方、残り(1-P)%の設問ではあえて正解文書を除きディストラクタのみを与えることで、検索結果に正解文書が含まれない状況でもモデル自身の知識を頼りに回答する頑健性を同時に学習させる。

ワークフロー

質問に対して、正解の根拠となる文書とともに、関係のない複数のディストラクタ文書を用意する。 これらの文書群と質問をまとめてモデルへ入力し、正解文書の内容を根拠にした回答を生成するよう教師あり学習する。 学習後のモデルは、実際のRAG運用時に検索結果へノイズが混じっていても、根拠となる文書を選別しながら回答できるようになる。

コード例

RAFT形式の学習データ構築イメージ

import random

def build_raft_example(question, oracle_doc, distractor_docs, cot_answer, p=0.8):
    docs = list(distractor_docs)
    if random.random() < p:
        docs.append(oracle_doc)  # P%の確率でoracle documentを含める
    random.shuffle(docs)
    return {"question": question, "context": docs, "answer": cot_answer}

利点

  • 本番のRAG運用に近い、ノイズを含む検索結果への耐性を学習時から養える
  • 特定ドメインの文書の書き方や紛らわしい表現に対し、汎用モデルより高い回答精度が期待できる
  • 検索結果を鵜呑みにせず、根拠となる文書を選別する能力も同時に学習できる

欠点

  • 正解文書とディストラクタを組み合わせた学習データの準備に手間がかかる
  • 通常のファインチューニングと同様、追加の学習コストと計算資源が必要になる
  • 特定ドメインに特化して学習させるため、他ドメインへの汎用性はやや低下する可能性がある

比較

  • RAGRAFTは通常のRAGにファインチューニングを組み合わせ、ノイズを含む検索結果への頑健性を高めた発展形
  • ファインチューニングRAFTは検索結果を模したノイズ入りの文書群を使う点が、通常のファインチューニングと異なる
  • 指示チューニングRAFTは指示チューニング済みモデルに対して、RAG向けの追加適応として行われることが多い

関連用語

RAGファインチューニング指示チューニング

よくある質問

RAFTと通常のRAGの違いは?

通常のRAGはLLM自体を追加学習せず検索結果をプロンプトに含めるだけだが、RAFTはノイズを含む検索結果を模した状況でモデル自体をファインチューニングし、特定ドメインでの頑健性を高める。

ディストラクタ文書とは?

質問の答えとは関係のない、検索結果に紛れ込みうる文書のこと。RAFTでは学習データにあえてディストラクタを含め、モデルが正解文書を見極める能力を養う。

参考文献

関連Zenn記事