検索拡張生成 (RAG) とファインチューニング
RAG とファインチューニングはいずれも大規模言語モデル (LLM) の改良を目的としています。RAG は基盤となる LLM を変更せずにモデルを改良しますが、ファインチューニングでは LLM の重みとパラメーターを調整する必要があります。多くの場合、ファインチューニングと RAG アーキテクチャを併用してモデルをカスタマイズすることができます。
大規模言語モデルの上に構築
LLM とは、人間の言語を理解し生成するために機械学習 (ML) 技法を活用した人工知能 (AI) の一種です。これらの ML モデルでは、テキストの生成、要約、翻訳、リライト、分類、カテゴライズ、分析などを行うことができます。エンタープライズレベルでの最も一般的な用途は、チャットボットのような質問応答システムの作成です。
LLM の基盤モデルは、さまざまなユースケースを幅広くサポートできるよう、一般的な知識に基づいてトレーニングされます。しかし、基本的に特定の組織に特化したドメイン固有の知識は備わっていません。求める出力が生成されるように、必要なデータを使って LLM を調整し、LLM に情報を与える方法として、RAG とファインチューニングの 2 つがあります。
たとえば、顧客と対話するチャットボットを構築しているとします。この場合、チャットボットは会社を代表して会話することになるので、優秀な従業員のように動作させる必要があるでしょう。また、会社が販売する製品や遵守するポリシーなど、会社に関するニュアンスを理解させる必要もあります。従業員をトレーニングするときに学習用の資料や手本となるスクリプトを与えるのと同じように、チャットボットをトレーニングするときには、RAG とファインチューニングを使用してチャットボットが得る知識の基盤を構築します。
Red Hat のリソース
RAG の概要とその仕組み
RAG は、任意のソース (データリポジトリ、テキストのコレクション、既存のドキュメントなど) から情報を取得して、LLM 内のデータを補完します。Docling などのツールは、この変換プロセスに役立ちます。RAG アーキテクチャはデータを取得した後、それを LLM のコンテキストに処理し、融合したソースに基づいて回答を生成します。
RAG が最も有用なのは、定期的に更新される情報でモデルを補完する場合です。任意の外部ソースとの通信経路を LLM に提供することで、出力の精度が向上します。また、RAG がソースを引用するように設計できるので、出力がどのように作成されたかを簡単に追跡でき、透明性が高まり、信頼が構築されます。
チャットボットの例に戻りましょう。「返品ポリシーはどのようなものですか?」といった質問に答えるチャットボットを構築する場合は、RAG アーキテクチャを使用できます。会社の返品ポリシーの詳細が記載されたドキュメントに LLM を接続し、そこから情報を取得するようにチャットボットに指示することができます。そのソースに言及し、詳細を確認してもらうためのリンクを提供するように指示することもできます。また、返品ポリシーのドキュメントに変更があった場合、RAG モデルは最新の情報を取得してユーザーに提供します。
RAG のユースケース
RAG は、人がシンプルな方法でデータを使用できるよう、情報を調達し、整理することができます。RAG アーキテクチャを使用すれば、モデルはオンプレミスとクラウドベースの両方のデータソースから知見を取得し、LLM にコンテキストを提供できます。つまり、外部データ、内部文書、さらにはソーシャルメディアフィードを使用して、質問に回答し、コンテキストを提供し、意思決定に役立てることができます。
たとえば、クエリに対して、会社のポリシー、手順、文書に関する具体的な回答を提供する RAG アーキテクチャを作成できます。これにより、文書を手作業で検索して解釈するのにかかる時間を節約できます。
ファインチューニングとは
ファインチューニングは、LLM が目標に合わせて出力を調整できるようにするために、そのモデルに意図を伝える方法だと捉えることができます。ファインチューニングとは、事前にトレーニングしたモデルを、より小規模でよりターゲットを絞ったデータセットを使用してさらにトレーニングし、ドメイン固有のタスクをより効果的に実行できるようにするプロセスです。この追加のトレーニングデータは、モデルのアーキテクチャに組み込まれます。
LoRA と QLoRA はどちらも高パラメーター効率ファインチューニング (PEFT) 技法です。この技法を使うことで、コストとコンピュートリソースを最適化できます。
チャットボットの例に戻りましょう。たとえば、チャットボットが医療のコンテキストで患者と対話できるようにしたいとします。その場合、その作業に関連する医学用語をモデルに理解させることが重要です。ファインチューニング技法は、患者がチャットボットに「PT サービス」について質問したとき、チャットボットがそれを「理学療法サービス」と理解し、適切なリソースに誘導できるようにします。
ファインチューニングのユースケース
ファインチューニングが最も有用なのは、アクセスできる情報の解釈方法をモデルにトレーニングする場合です。たとえば、頭字語や組織の価値観など、特定の業界のニュアンスや用語を理解するようにモデルをトレーニングできます。
ファインチューニングは画像分類タスクにも役立ちます。たとえば、磁気共鳴画像 (MRI) を扱っている場合、ファインチューニングを使用して、異常を識別できるように予測型 AI モデルをトレーニングすることができます。
また、ファインチューニングを行うことで、組織が他者とコミュニケーションをとる際、特にカスタマーサポートの場面で、適切なトーンを使用できるようになります。対話している相手の感情や気持ちを分析できるようにチャットボットをトレーニングすることができます。さらに、組織の価値観を維持しながら、ユーザーに役立つ方法で応答するように生成 AI モデルをトレーニングできます。
RAG とファインチューニングのどちらを選ぶかに関する検討事項
RAG とファインチューニングの違いを理解することで、組織のニーズを満たすためにどちらの AI リソースを導入するべきなのかについて、戦略的な決定を下すことができます。基本的な検討事項には以下のようなものがあります。
チームのスキルセット
RAG でモデルをカスタマイズするには、コーディングとアーキテクチャのスキルが必要です。RAG では、従来のファインチューニング手法よりも利用しやすく簡単な方法で、フィードバックの取得、トラブルシューティング、アプリケーション修正を行うことができます。モデルのファインチューニングには、自然言語処理 (NLP)、ディープラーニング、モデル構成、データ再処理、評価の経験が必要です。全体的に、より専門的で時間がかかる可能性があります。
データは静的か、動的か
ファインチューニングでは、経時的に変化しない一般的なパターンをモデルに学習させます。トレーニングデータセットの静的スナップショットに基づいているため、モデルの情報が古くなり、再トレーニングが必要になる場合があります。逆に、RAG は任意のソースから特定のリアルタイム情報を取得するように LLM に指示します。つまり、モデルは最新のデータを取得してアプリケーションに情報を提供し、正確で関連性の高い出力を促進します。
予算
RAG はファインチューニングよりもコスト効率が高い傾向があります。RAG アーキテクチャを実装するには、データを LLM に接続するパイプラインシステムを構築します。このアプローチでは既存のデータを使用して LLM に情報を提供するので、コストが削減されます。これは、特殊なデータラベル付けを実行するために多大なリソースが必要なファインチューニングや、多大な計算能力を必要とする反復的なモデルトレーニングとは対照的です。
これまではファインチューニングの方がより高価な選択肢と考えられてきましたが、vLLM などの開発により、予算の枠に収まるようになってきました。vLLM は、ファインチューニングされたモデルの提供のコスト効率を向上させる推論サーバーであり、エンジンです。
Red Hat のサポート内容
Red Hat® AI は、vLLM 搭載のサーバーを通じて、高速で柔軟かつ効率的な推論を行うように構築されています。モデルをデータと確実に接続し、専用エージェントのカスタマイズと開発を単一のプラットフォームで行うことができます。オープンソースを基盤として構築された当社の製品により、あらゆる規模で AI ワークフローをエンドツーエンドで完全に制御することができます。
Red Hat AI ポートフォリオには、Red Hat AI Inference が含まれています。これは、ハイブリッドクラウドのどこでも任意のアクセラレーター上であらゆるモデルを実行できるように運用制御を提供する推論スタックです。大規模環境でも、高速かつ効率的でコスト効率に優れた推論を実現します。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。