LLM Frontline
開発・エージェント

ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

ミナト開発・API担当
・ 約13分で読めます
ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

LLMを自社の業務に寄せたいと考えたとき、多くの人が最初に思い浮かべるのが「ファインチューニング(追加学習)」です。しかし実務では、ファインチューニングにたどり着く前に検討すべき選択肢があり、そもそもRAG(外部知識を検索して与える方式)とファインチューニングは解決する問題が異なります。この記事では、両者が何をするものかを公式ドキュメントで確認したうえで、どちらをどんな場面で選ぶか、そして両方を組み合わせる現実的な設計までを整理します。結論を先に言えば、多くの場合はまず安い方法から試し、必要な部分だけ重い方法に進むのが堅実です。

LLMを自社用途に寄せる3つの階層

まず全体像を押さえます。汎用のLLMを自分たちの用途に近づける手段は、大きく3つの階層に分けて考えると整理しやすくなります。手前の階層ほど手軽で安く、奥に進むほど効果は大きい一方でコストと運用負荷が増えます。

1つ目はプロンプト設計とfew-shot、つまり指示文の工夫や数個の例示、コンテキストへの情報付与です。コードもモデルも触らずに始められ、最も安く速く試せます。2つ目がRAGで、外部の知識ベースから関連情報を検索し、その内容をプロンプトに付け足してから回答させます。3つ目がファインチューニングで、モデルの重み自体を追加のデータで学習させ、振る舞いそのものを変えます。

ヒント

検討の順序は、原則として安い階層からです。プロンプトとfew-shotで要件を満たせないか、次にRAGで解けないかを見て、それでも足りない部分に限ってファインチューニングを検討します。最初からファインチューニングに飛びつくと、データ整備と再学習の負荷を抱えたまま、実はプロンプトで済んだ、というケースが起きがちです。

あわせて読みたい

コンテキストエンジニアリングとは|プロンプトの次に来る設計の基本

RAGとファインチューニングは何をするものか

同じ「カスタマイズ」でも、RAGとファインチューニングは解決する問題が違います。ここを取り違えると、向かない手段に労力を注いでしまいます。それぞれが何をするものかを、公式ドキュメントの説明に沿って確認します。

RAG(検索して与える)

RAGは、質問に関連する情報を知識ベースから検索し、その内容をプロンプトに付け加えてからモデルに回答させる方式です。Google CloudのRAG Engineの解説でも、私的な情報でLLMのコンテキストを補うことで、モデルがより正確に答え、ハルシネーションを減らせると位置づけられています。モデルの重みは変えず、渡す情報を差し替えることで挙動を変えるのが特徴です。知識を更新したいときは、モデルを学習し直すのではなく、知識ベースの中身を入れ替えれば済みます。

一方でRAGの品質は、検索がどれだけ的確に関連情報を引けるか、文書をどう分割(チャンク化)するかに大きく左右されます。Anthropicは、素朴なチャンク化では各断片が元の文脈を失い、必要な情報を検索できなくなる問題を指摘し、各断片に対して、その断片が文書全体の中でどう位置づくかを説明する短い文脈情報(チャンク固有の説明)を付与してから埋め込み・索引化するContextual Retrievalという手法を紹介しています。RAGは「入れれば効く」ものではなく、検索設計そのものが品質を決めます。

ファインチューニング(重みを追加学習)

ファインチューニングは、目的のタスクに沿った入出力の例を集め、そのデータでモデルを追加学習させて振る舞いを固定する方式です。OpenAIの教師ありファインチューニングの解説でも、期待する応答の例を集めて学習させることで、プロンプトに毎回長い指示や多数の例を入れなくても、望む形式や文体で応答するようモデルを寄せられる、という位置づけが示されています。Google CloudのチューニングのドキュメントやOpenAIのベストプラクティスでも、プロンプトだけでは安定しない挙動を固定したい場合の手段として説明されています。

メモ

重要なのは、ファインチューニングが得意とするのは主に「振る舞いの固定」であって「知識の最新化」ではない、という点です。特定の文体や出力フォーマット、分類の基準、専門的な言い回しなどを安定して再現させたいときに効きます。最新のニュースや頻繁に変わる社内データを覚えさせる用途には向きません。そこはRAGの領域です。

あわせて読みたい

RAGとは何か|仕組み・向き不向き・導入判断の考え方

使い分けの原則

両者の性質が分かると、選び方の軸が見えてきます。判断の中心になるのは「扱う情報が変動するか」と「固定したいのは知識か振る舞いか」の2点です。

変動する知識、最新情報、そして回答の根拠(出典)を示す必要がある用途は、一般にRAGが向きます。社内規程や商品カタログ、サポート履歴のように更新が入る情報を扱い、どの文書に基づいて答えたかを提示したい場合です。知識ベースを差し替えれば内容を更新でき、参照元をたどれるのが強みです。

これに対して、安定した振る舞い、決まった出力形式、特定の文体や専門表現を毎回ぶれずに再現したい用途は、ファインチューニングが向きます。たとえば決まったJSON形式で必ず返す、自社のトーンで文章を書く、特定の分類ルールで判定する、といった「型」を固定したい場合です。プロンプトでも近づけられますが、指示が長大になりがちで、それでもぶれる部分をファインチューニングで安定させる、という使い方になります。

最初は何でもファインチューニングで解けると思っていました。実際にやってみると、覚えさせたい社内情報は毎月変わるので学習し直しが追いつかず、そこはRAGに切り替えました。逆に、出力フォーマットが毎回ぶれる問題はプロンプトを厚くしても安定せず、ここだけファインチューニングにしたら落ち着きました。役割が違うと腹落ちしました。
社内向けLLMアプリを開発しているエンジニア

コストとトラフィックの観点

コストの観点でも、両者の損益分岐は用途によって変わります。ここは一般論として押さえ、具体的な金額は変動前提で各社の最新の料金を確認してください。

RAGは、検索した文書をプロンプトに毎回付け足すため、1回あたりの入力トークンが増えがちです。低〜中トラフィックであれば、初期構築が比較的軽く、知識の更新も容易なRAGが扱いやすい傾向があります。一方、大量のリクエストを低レイテンシで安定してさばく必要がある用途では、毎回長いコンテキストを渡すRAGのトークン負荷が積み重なります。この場合、振る舞いを学習させたファインチューニング済みの小型モデルなら、短いプロンプトで済み、1リクエストの単価やレイテンシで有利になり得ます。

注意

コスト比較では、推論時の単価だけでなく運用コストも見落とせません。ファインチューニングには、学習データの整備、学習ジョブの実行、そして情報が変わるたびの再学習という継続的な負荷があります。RAGには、知識ベースの構築と更新、検索精度の維持というコストがかかります。どちらも「作って終わり」ではなく運用が続く前提で、総コストを見積もってください。数値や料金体系は時点で変わるため、導入前に公式の最新情報で確認することをおすすめします。

RAGとファインチューニングを組み合わせる

実務では「どちらか一方」ではなく、両方を組み合わせる構成が有効な場面が多くあります。役割が違うので、競合ではなく補完関係として設計できます。

  1. 1

    まずプロンプトとfew-shotで基準線を作る

    追加学習も検索もせず、指示文と数個の例だけでどこまで要件を満たせるかを確認します。ここで足りるなら、それ以上の階層は不要です。評価用のテストケースもこの段階で用意しておきます。
  2. 2

    知識まわりはRAGで土台を作る

    変動する情報や参照が必要な知識はRAGで扱い、検索対象の文書、チャンク設計、検索方法を詰めます。出典を示せる利点も活かします。まずはRAGで、精度と回答の妥当性を評価します。
  3. 3

    固定したい振る舞いだけをファインチューニングで補強する

    RAGでも安定しない出力形式や文体、判定基準など「型」の部分に限ってファインチューニングを検討します。全部を学習させるのではなく、ぶれる箇所を狙って補強するのが要点です。
  4. 4

    評価で効果を測り、必要な範囲だけ残す

    各段階の前後で同じテストケースを流し、精度・形式の安定・コスト・レイテンシを比較します。効果が確認できた構成だけを残し、過剰な部分は削ります。

この順序なら、重い手段に進む前に安い手段で解決できないかを毎回確かめられ、投資が無駄になりにくくなります。RAGで知識の鮮度を保ちつつ、ファインチューニングで振る舞いを安定させる組み合わせは、両者の弱点を補い合う構成として理にかなっています。

あわせて読みたい

LLMアプリの評価(eval)の作り方|「動いた気がする」で止めないための実務手順

見落としがちな落とし穴

最後に、どちらの手段でもつまずきやすい点を整理します。事前に知っておくと、期待値のずれを避けられます。

ファインチューニングは、知識の最新化には向きません。学習した時点の内容で固定されるため、頻繁に変わる情報を覚えさせる用途には不向きです。また、ハルシネーションを消す魔法でもありません。振る舞いを寄せることはできても、事実の誤りが原理的にゼロになるわけではなく、事実確認は別途必要です。そして品質はデータ品質に強く依存します。OpenAIのベストプラクティスでも、少数でも質の高い例から始め、評価を用意して効果を測ることが重要とされています。質の低い例を大量に学習させると、かえって挙動が乱れます。

RAGの落とし穴は、検索品質とチャンク設計に集約されます。関連文書を的確に引けなければ、いくら賢いモデルでも正しく答えられません。断片が文脈を失うと検索も回答も劣化するため、分割の仕方や検索方式の工夫が要ります。どちらの手段も、評価(eval)を用意して効果を数値で測る前提を欠くと、良くなったのか悪くなったのかが分からないまま運用してしまいます。

本記事のRAGおよびファインチューニングの定義と位置づけは、OpenAI(教師ありファインチューニング、ベストプラクティス)、Google Cloud(RAG Engine概要、チューニング入門)、Anthropic(Contextual Retrieval)の公式ドキュメントで確認できた範囲に基づく一般的な整理です。各社の機能名・対応モデル・料金・仕様は時点で変動します。導入前には必ず各サービスの公式の最新情報をご確認ください。

よくある質問

RAGとファインチューニング、どちらから検討すべきですか
一般には、まずプロンプトとfew-shotで足りるかを見て、次にRAGを検討し、それでも固定できない振る舞いに限ってファインチューニングに進むのが定石です。安い階層から順に試すことで、過剰な投資を避けられます。扱う情報が頻繁に変わるなら、そもそもファインチューニングより先にRAGを検討するのが妥当です。
ファインチューニングすれば社内の最新情報を覚えさせられますか
向いていません。ファインチューニングが得意とするのは出力形式や文体、判定基準といった振る舞いの固定であり、頻繁に変わる知識の最新化には不向きです。更新が入る情報はRAGで扱い、知識ベースを差し替えて鮮度を保つほうが現実的です。
ファインチューニングでハルシネーションはなくせますか
なくせません。振る舞いを寄せることはできますが、事実誤認が原理的にゼロになるわけではありません。事実確認や出典提示が必要な用途では、根拠を示せるRAGを組み合わせ、最終的な事実確認は人が担う前提を残すのが安全です。
両方を同時に使うことはできますか
できますし、実務ではむしろ有効な場面が多いです。RAGで変動する知識の土台を作り、ぶれる出力形式や文体だけをファインチューニングで補強する、といった役割分担が代表的です。どちらも評価を用意して、効果が確認できた範囲だけ残すのがコツです。
コストはどちらが安いですか
用途によります。低〜中トラフィックでは構築や更新が軽いRAGが扱いやすく、大量かつ低レイテンシが要る用途では短いプロンプトで済むファインチューニング済み小型モデルが有利になり得ます。推論単価だけでなく、データ整備や再学習、知識ベース運用などの継続コストも含めて比較してください。

まとめ

ファインチューニングとRAGを使い分けるためのチェックリスト

  • プロンプト/few-shot、RAG、ファインチューニングという階層を理解し、安い手段から検討する順序にした
  • 扱う情報が変動するか、固定したいのは知識か振る舞いかで、RAGとファインチューニングを切り分けた
  • 変動知識・最新情報・出典提示はRAG、出力形式・文体・判定基準の固定はファインチューニング、と役割で選んだ
  • トラフィックとレイテンシの要件から、推論単価と運用コストの両面でコストを見積もった
  • RAGで土台を作り固定したい振る舞いだけを補強するハイブリッドと、各段階の評価(eval)を前提に設計した
  • ファインチューニングは知識更新やハルシネーション除去の手段ではないこと、データ品質と検索設計が品質を決めることを踏まえた

ファインチューニングとRAGは、どちらが優れているかを競う関係ではなく、解決する問題が違う道具です。変わり続ける知識と出典はRAGに任せ、ぶれてほしくない振る舞いはファインチューニングで固める。そのうえで、まず安い手段から試し、効果を評価で確かめながら必要な範囲だけ重い手段に進む。この段取りを踏めば、宣伝文句や流行に流されず、自社の用途に本当に効くカスタマイズを、無理のないコストで積み上げられます。

出典・参考

この記事をシェア

関連する記事

プロンプト実務

コンテキストエンジニアリングとは|プロンプトの次に来る設計の基本

プロンプトエンジニアリングの次の設計単位として注目される「コンテキストエンジニアリング」を、実務目線で整理します。コンテキストの劣化(context rot)という前提、渡す情報の構成と順序、長時間動くエージェントで使う圧縮・メモ・サブエージェントといった手法までをまとめます。

開発・エージェント

LLMアプリの評価(eval)の作り方|「動いた気がする」で止めないための実務手順

LLMアプリの品質を測る評価(eval)の作り方を、実務目線で整理します。実運用に似せた評価データの用意、タスク型に応じた指標設計、自動評価と人手レビューの併用、LLM-as-a-judgeの使いどころと落とし穴、失敗トレースをテストへ戻す継続的な評価まで、小さく始める手順にまとめました。