生成AIを業務で活用する機会が増える中、AIに最新情報や社内独自の情報を参照させる技術として「RAG(ラグ)」が注目されています。
本記事では、RAGの仕組みや活用事例、Difyを使った構築方法を中心に、メリット・デメリットやファインチューニングとの違いまで、初心者向けに分かりやすく解説します。
RAGとは?
RAGとは、「Retrieval-Augmented Generation」の略で、日本語では検索拡張生成とも呼ばれます。生成AIが回答を作る際に、外部データから必要な情報を検索し、その内容を参考にしながら回答を生成する仕組みのことです。
一般的な生成AIは学習時に取り込んだ情報をもとに回答するため、学習後に発生した最新情報や社内資料などの独自データには正確に答えられません。LLM(大規模言語モデル)が「文章を理解し回答を作る技術」であるのに対し、RAGは「回答に必要な情報を外部から補う仕組み」で、両者を組み合わせることでAI単体では持たない知識にも対応できるようになります。
RAGが必要とされる理由
生成AIは、学習していない情報には正しく回答できず、もっともらしい嘘を回答してしまう「ハルシネーション」を起こすこともあります。RAGは、質問に関連する情報を外部データから検索して回答の根拠にするため、AIが何の情報も持たない状態で回答してしまうケースを減らせる点が大きな特徴です(完全に無くせるわけではありません)。
RAGが回答を生成するまでの仕組み
RAGが回答を作るまでの流れは、大きく次の3ステップに分けられます。
外部データを分割して準備する
PDFやテキストファイルなどの外部データを、検索しやすいように一定の単位(「チャンク」と呼ばれます)へ分割して準備します。分割の粒度は検索精度に直結するため、細かすぎず、粗すぎない調整が必要です。
文章をベクトル化して関連情報を検索する
分割した文章は、「ベクトル(embeddings)」と呼ばれる数値データに変換され、意味の近さをもとに検索されます。例えば「休暇を申請する方法」と「有給休暇の取り方」のように表現が異なっていても、意味が近い文章を検索できる点が、従来のキーワード検索との違いです。
検索結果をもとにLLMが回答を生成する
検索でヒットした情報とユーザーの質問をあわせてLLMに渡すことで、検索結果をそのまま表示するのではなく、質問に合わせて分かりやすく整理された回答を生成できます。これが、RAGの基本的な仕組みです。
RAGでできること・活用事例
RAGは、主に以下のような用途で活用されています。
社内文書・ナレッジの検索
業務マニュアルや社内規則などを検索対象として登録しておけば、正確なファイル名や保存場所を知らなくても、質問の意味に近い情報を検索できます。
FAQ・問い合わせ対応の自動化
過去の問い合わせ内容やFAQを検索対象にすることで、AIが質問に関連する情報を探して回答できます。同じような質問への対応を自動化し、業務負担を軽減できる点が魅力です。
チャットボットへの組み込み
あらかじめ質問と回答のパターンを用意しなくても、蓄積したデータをもとに柔軟に応答できるチャットボットを構築できます。回答内容の変更も、検索元のデータを修正するだけで反映できるのも利点です。
RAGを構築・導入する方法
構築の基本的な流れ
RAGを構築する際は、①参照させたい情報を決める→②文書を分割してベクトル化する→③検索結果をもとに回答を生成する仕組みを組み込む、という流れで進めます。初めて構築する場合は、RAGに対応したフレームワークやサービスを利用すると、比較的簡単に導入できます。
Difyを使ってRAGを試す
今回は、ノーコードでAIアプリを構築できるDifyを使用して、実際にチャットボットの回答にRAGが利用されるまでの流れを解説します。
Difyでは、Knowledge機能にPDFやテキストファイルを登録するだけで、RAGの検索対象データベースとして利用できます。
①Knowledgeにテストデータを登録する
まず、DifyのKnowledge機能を利用して、RAGで参照する外部データを登録します。今回は例として、架空の製品「SmartBottle Mini」に関する簡単な製品情報を用意しました。
②Retrieval Testingで検索結果を確認する
登録したデータから必要な情報を検索できるか、Difyの検索テスト機能で確認します。質問に関連する情報が検索できていればOKです。
③Knowledgeを利用したチャットボットで回答を生成する
最後に、登録したKnowledgeを参照するチャットボットを作成します。ユーザーから質問を受けると、関連情報を登録データから検索し、その内容を参考にLLMが回答を生成します。
RAGのメリット・デメリット
RAGには、以下のようなメリット・デメリットがあります。導入前に押さえておきましょう。
| 項目 | メリット | デメリット |
|---|---|---|
| 情報の鮮度 | モデルを再学習せず、データ更新だけで最新情報に対応できる | データが古い・誤っていると回答精度も下がる |
| 回答の根拠 | 参照した情報に基づいた回答を生成しやすい | ハルシネーションを完全には防げない |
| 導入・運用 | AIモデル自体を作り直す必要がない | 検索基盤の構築・運用に知識とコストが必要 |
回答の正確性は「AIの性能」だけでなく「検索対象データの質」にも左右されるため、RAGを導入する際は、参照させる情報を整理し、最新かつ信頼できる状態に保つことが重要です。
RAGとファインチューニングの違い
生成AIに独自の情報を活用させる方法には、RAGのほかに「ファインチューニング」と呼ばれる方法もあります。既存のAIモデルに追加データを学習させ、振る舞いを調整する方法で、毎回外部データを検索するRAGとはアプローチが異なります。
| 項目 | RAG | ファインチューニング |
|---|---|---|
| アプローチ | 外部データを検索して回答に追加 | モデル自体に追加データを学習させる |
| 情報の更新 | データを更新するだけで反映できる | 反映のたびに再学習が必要 |
| 得意なこと | 頻繁に更新される情報の活用 | 出力形式・回答スタイルの調整 |
| 導入のしやすさ | 比較的簡単に始めやすい | 学習データの準備や計算リソースが必要 |
RAGとファインチューニングは、どちらか一方しか選べないものではなく、目的によって組み合わせて使うことも可能です。まずRAGで社内情報を参照できる環境を作り、必要に応じてファインチューニングを検討するという進め方もあります。
まとめ
生成AIにすべての情報を覚えさせるのではなく、必要な情報を必要なタイミングで参照させるという考え方が、RAGの本質です。
今回紹介したDifyのように、RAGに対応したサービスを使えば、専門知識がなくても比較的簡単に導入を試せます。まずは身近なデータを使って、実際にRAGを構築してみましょう。