生成AI技術を活用するにあたり、「RAG(検索拡張生成)」という言葉を耳にしたことがある方もいるのではないでしょうか。
RAGとは、AIがコンテンツを生成する際に、システム内に組み込まれたデータベースやデータソースから必要な情報を検索する技術です。従来の生成AIのような学習済みのデータから必要な情報を参照するだけでなく、「検索してリアルタイムな情報を探す」という手順が加わるため、より高精度で鮮度の高い出力を行えます。
本記事では、RAGの仕組みやメリット、活用例などを紹介します。また、自社独自のRAGシステムを構築する手順も紹介しているので、「RAG搭載型の生成AIサービスを導入したい」「RAGを搭載した独自システムを開発したい」といったニーズを解決できます。
RAG(検索拡張生成)とは情報検索と生成AIの仕組みを組み合わせた技術
まずはRAGの概要や基礎知識を解説します。また、ファインチューニングとも混同しやすいので、それぞれの違いについても触れていきます。
RAGの概要
RAG(Retrieval Augmented Generation:検索拡張生成)とは、ChatGPTをはじめとするLLM(大規模言語モデル)に対して、自社に蓄積された社内データや外部の最新情報を取り込み、より正確な回答を導くための技術です。LLMは、膨大なテキストデータと高度なディープラーニング技術を用いた自然言語処理技術の一種で、通常の言語モデルよりも計算量やデータ量、パラメータ数が強化されており、それによってより高度な言語理解が可能となっています。
通常、LLMにはナレッジカットオフと呼ばれる課題があります。ナレッジカットオフとは、そのAIモデルが特定の時点までの情報しか学習しておらず、それ以降の出来事やデータには対応できないという制限です。知らない情報に対しては回答できなかったり、ハルシネーション(虚偽の回答)を生成してしまったりするリスクがあります。
RAGの活用によって、質問やプロンプトに対して外部のデータベースから関連情報を検索し、その情報をもとに回答を生成できるようになります。そのため、RAGが組み込まれた生成AIサービスを利用すれば、企業の新製品や新たな経営計画、最新のニュースリリースなど、リアルタイムな情報が反映された回答を得られます。
ファインチューニングとの違い
RAGと類似した技術としてファインチューニングがあげられます。どちらもクローズドな情報を活用する技術ですが、その仕組みに違いがあります。
両者の大きな違いは、LLMに追加学習が必要かどうかという点です。ファインチューニングは、既に学習されたAIモデルに対して独自のデータを加えて再学習させる手法です。一方、RAGではAIモデルに追加学習を施す必要はありません。あらかじめ用意したデータベースから情報を検索し、必要に応じて生成AIに情報を提供することで対応します。
つまり、ファインチューニングはAIに知識を覚えさせる方法であり、RAGは必要な資料をあらかじめ用意しておき、AIがそれを随時参照する仕組みだといえるでしょう。目的によってはファインチューニングのほうが効果的なケースもありますが、RAGには追加学習に伴う時間やコストが不要で、より手軽に情報を活用できるメリットがあります。
RAGの仕組み
RAGの仕組みを理解するには、指示・検索・情報抽出といった回答までの流れを理解することが大切です。具体的には、次のような形で作業が実行されます。
- エンコーディング
- 関連情報の検索
- 情報の抽出・回答
それぞれの手順を解説します。
1. エンコーディング
生成AIを活用する際は、まずユーザー側でプロンプトと呼ばれる指示を与えます。プロンプトとは、「○○について調べてください」「以下の文章を要約してください」といったテキスト状の指示文を指します。
RAGにそのプロンプトが入力されると、自然言語処理技術によってエンコーディングが開始されます。エンコーディングとは、人間が使う自然言語(話し言葉や書き言葉などの日常的に使う自然な文章)を、コンピュータが扱いやすい形式に変換する作業です。単語や文章を数値の並びであるベクトルに変換することで、コンピュータがその言語の意味を理解し、多様な処理が可能となります。
2. 関連情報の検索
ベクトル形式にエンコーディングされたデータを活用して、外部のデータベースから関連情報を検索します。クエリのベクトルと、各データのベクトルとの類似度を算出し、最も関連性の高いデータを抽出する仕組みです。このプロセスによって、質問に対して最新かつ正確な情報、あるいはクローズドな情報を取得できるようになり、生成される回答の精度と信頼性が高まります。
3. 情報の抽出・回答
AIは、事前に学習したデータと、検索して得られた必要な情報を組み合わせて、プロンプトに沿った適切な回答を生成します。回答を生成する際、文体の調整や不適切な内容のフィルタリングといった後処理を経ることで、より品質の高い出力が可能です。結果、ユーザーにとって適切な形式で、かつ信頼性のある情報を届けられます。
RAGによる検索の種類
RAGの情報検索技術には、インターネット検索やデータベース検索などの種類があります。情報の取得方法が異なるとRAGの構築手段にも違いが現れるため、それぞれの仕組みを押さえることが大切です。
インターネット検索
インターネット検索は、RAGで情報を検索する際、検索エンジン上の情報を参照する方法です。
従来は、スクレイピングやクローリングといった手法を用いて、対象のWebサイトのHTMLを解析し情報を取得する方法が一般的でした。しかし、これらの手法は対象サイトに大きな負荷をかける恐れがあり、多くの場合、利用規約で禁止されているケースもあります。そのため、特別な事情がない限り、インターネット検索を実装する際はAPIの利用がより安全だといえるでしょう。
RAGにおいてインターネット検索を行う際は、まずユーザーが入力した自然言語から検索キーワードが抽出されます。このプロセスにより、ユーザーの意図に沿った情報を効率的に得やすくなります。
また、インターネット検索の結果が必ずしも有益な情報とは限りません。そのため、得られた検索結果をLLMに渡す前に、検索キーワードと関連性の高い情報かどうかを確認するプロセスを加えると、精度の向上につながりやすくなります。
このような処理はすべてLLMで対応可能ですが、特定領域に特化した軽量なSLM(Small Language Models:小規模言語モデル)を活用するのも一案です。SLMはLLMよりも学習時間を削減できるため、コストを最小限に抑えられます。
データベース検索
近年は、データを格納するためにRDB(リレーショナルデータベース)を活用するケースが多く、これらのデータへアクセスする際には、データベースを操作するための専用言語であるSQLを用いるのが一般的です。RAGでデータベース検索を行いたい場合、自然言語による入力からSQLを生成し、それを用いてRDBから情報を取得します。
データベース検索を活用すると、例えば、特定の業界や企業内でしか使われないローカル用語が登録された辞書テーブルがある場合に、各用語をチェックしたうえでLLMに回答させるといった活用が可能です。そのため、ローカルな質問にも的確に対応できます。さらに、商品情報に関するテーブルがある場合には、単価や在庫数といった情報を踏まえて、より具体的かつ正確な応答を行えます。
ただし、データベース検索におけるSQL生成は、クエリが複雑になるほど難易度が高くなる点には注意が必要です。また、RDBに限らず、SQLで対話可能なデータソースを対象とする場合には、同様の構成を活用する必要があります。
データベース検索(ベクトル・グラフ)
データベース検索を発展させると、RAGがRDBに含まれたベクトルやグラフの情報を読み取れるようになります。
機械学習では、学習過程でコンピュータが学習対象の特徴を捉える作業を実行します。その際に抽出される特徴は「特徴ベクトル」と呼ばれます。ベクトルとは、方向と大きさを持つものであり、特徴を定量的に数値として表現した要素です。
RAGでRDBのベクトルを読み取る場合、ベクトル同士の距離を比較します。その距離が近いほど、ある学習対象と別の学習対象の特徴が似ていると判断できるため、データベース内の情報から類似性を検索しやすくなります。
また、RDBにおけるグラフは、折れ線グラフや棒グラフのような統計的な図表ではなく、数学におけるグラフ理論にもとづく、点(ノード)と辺(エッジ)で構成された構造です。ベクトルでは学習対象同士の距離によって関連性を読み解きますが、グラフでは、複数のノード同士をエッジでつなぐことで関連性を表します。
いずれもデータ分析やリサーチなど、複数の情報の関連性が重要となる業務に発展可能です。
RAGを活用する4つのメリット
生成AIにRAGの仕組みを導入することで、次のようなメリットが生まれます。
- 正確かつ最新の情報を反映した回答を行える
- ハルシネーションが起きにくい
- 学習コストやリソースを削減できる
- 情報提供時の安全性を確保しやすい
それぞれのメリットについて詳しく解説します。
正確かつ最新の情報を反映した回答を行える
RAGを活用すると、自然言語生成と情報検索の仕組みを組み合わせて、クエリや文脈に即した文章を生成できます。ユーザーの質問の意図を正確に把握し、それに対して自然かつ適切な回答の生成が可能です。文脈やニーズに沿った回答を提示することで、ユーザーの満足度を高めるだけでなく、RAGが持つ優れたコンテキスト理解能力を活かして、よりパーソナライズされた情報提供も実現できるでしょう。
また、外部データベースからリアルタイムの情報を取得できるのも特徴です。AIが回答を行う際に、常に最新の情報が反映されるため、情報の鮮度が求められる戦略策定やリサーチ、データ分析といった業務で効果を発揮します。
ハルシネーションが起きにくい
RAGのメリットの一つは、ハルシネーションが起こりにくい点にあります。
ハルシネーションとは、AIが実際には存在しない情報を生成してしまう現象のことです。従来のLLMは、あらかじめ学習したデータにもとづいて回答を作成するため、学習内容に存在しない情報や誤ったデータが含まれていると、誤解を招く回答が生成される恐れがあります。ユーザーの問いかけに対してAIが回答を行う際、どのデータを根拠に回答しているのかが明示されない場合、それが真実か誤りかをユーザーが見極めるのは容易ではありません。
これに対してRAGは、常に外部のデータベースから情報を取得して参照します。AIに扱わせたい情報を独自に準備し、その情報を検索対象とすることで誤った回答が生成されるのを防げるのが特徴です。一般的には、独自の情報を保存した外部データベースを用意し、質問が入力された際にまずこのデータベース内を検索し、最適な情報を取り出します。
このような仕組みがあるからこそ、RAGはLLMによって生成される情報をコントロールしやすくなります。ハルシネーションのリスクを抑えられるほか、回答の信頼性を高められるのがメリットです。
学習コストやリソースを削減できる
RAGは、LLM自体のファインチューニングを行う必要がないため、学習にかかるコストやリソースを削減できます。
従来のLLMでは、特定の分野に特化させるために大規模なデータを用いたファインチューニングが必要でした。しかし、RAGを用いれば、事前に用意したデータベースのなかからAIが情報を抽出するため、ファインチューニングによって再学習する必要がなくなります。ファインチューニングの手間や時間を抑えることで学習コストの軽減が可能です。
また、RAGを活用するとAIのモデルサイズをより小さい状態で維持できます。モデルサイズが縮小すると必要な計算リソースが少なくて済むので、結果として導入や運用にかかるコストの軽減につながります。
情報提供時の安全性を確保しやすい
RAGは、学習済みのデータだけでなく外部のデータベースからも情報を取得できます。これにより、機密性の高い社内データの利用範囲を制限して、情報漏えいのリスクを最小限に抑えられます。適切な情報セキュリティ対策やプライバシー保護を講じることで、生成AIを安全に活用できるだけでなく、個人情報や企業の機密を守りつつ、効果的な情報提供が実現します。
ビジネスシーンにおけるRAGの活用例4選
ビジネスでRAGを活用する場合は、RAG搭載型の生成AIサービスを利用するか、RAGを搭載した独自のAIモデルを開発するかの二通りがあります。いずれの場合でも、次のような形で活用が可能です。
- カスタマーサポート
- 社内ヘルプデスク
- 営業資料やメールなどのコンテンツ制作
- データ分析
それぞれの活用例について紹介します。
カスタマーサポート
商品やサービスに関する情報をデータベースに登録しておくことで、顧客からの問い合わせ対応に役立てられます。例えば、RAGを搭載したAIチャットボットを導入すると、問い合わせ内容に対してAIが自動でデータベースから必要な情報を取得し、適切な回答を返すことが可能です。
RAGによって疑問が解消されれば、顧客が電話やメールなどで問い合わせを行う必要がなくなります。その結果、有人での対応件数が減少し、問い合わせ対応にかかるコストの削減につながります。顧客にとって電話やメールでの問い合わせは手間がかかるものですが、チャット上で疑問を解消できれば、顧客満足度の向上にも寄与するでしょう。
社内ヘルプデスク
社内ヘルプデスクとは、社内で発生するITに関する問い合わせ対応や、システム管理などを担当する部門または業務を指します。RAGを活用すれば、社内規定をデータベースに登録するだけで、AIが社内の問い合わせ対応を行えるようになります。問い合わせ対応をRAGだけで完結できれば、担当者が専門的な知識やスキルを習得する必要がありません。
また、これまで問い合わせ対応に追われていた従業員が、問い合わせ自動化によって捻出した時間をほかの業務にあてられるのもメリットです。現場でのマンツーマンサポートや従業員向けのトレーニング、システム定着化に向けた施策など、よりコアな業務に取り組むことで、社内ヘルプデスク全体の生産性向上につながります。さらに、問い合わせを行う従業員側にとっても、AIに質問するだけで必要な情報が得られるため、情報収集や課題解決の効率が向上します。
営業資料やメールマガジンなどのコンテンツ制作
RAGは、営業資料やメールマガジンなどのコンテンツ制作にも活用できます。
生成AIサービスの代表例であるChatGPTでもコンテンツの自動生成は可能ですが、自社の資料の書式や文体に合った内容を生成させるには、参照用の資料を事前に学習させる必要があります。その点、RAGであれば、参考資料をデータベースに登録するだけで、それらの資料をもとにしたコンテンツの生成が可能です。
RAG搭載型の生成AIサービスのなかには、文章だけでなく、画像や動画、音声といったマルチメディアの生成に対応している製品もあります。そのため、商品画像やプロモーション動画、店内アナウンスといったコンテンツも生成可能です。RAGの仕組みをうまく活用すれば、クリエイティブ業務の大幅な効率化が見込めます。
データ分析
市場調査レポートやアンケート結果、顧客データ、財務諸表などをデータベースに登録することで、それらのデータを活用した分析をRAGに任せられます。RAGを活用するメリットは、膨大なデータを効率良く処理できるだけでなく、人間には見つけにくい傾向やデータ同士の相関関係を発見できる点にあります。
例えば、顧客分析においては、顧客データをもとに属性や行動パターンを把握し、各属性に対して確度の高いアプローチ方法を提案してくれます。また、分析結果を視覚的に分かりやすく整理した上で出力することも可能です。
RAGシステムを構築するための5つのステップ
RAG搭載型の生成AIサービスを使うのではなく、自社独自の要件を反映したシステムを構築するなら、次のような手順で作業を行うのが一般的です。
- データソースを作成
- ベクトルデータベースの構築
- LLMの選別・実装
- 検索エンジンの開発・LLMとの連携
- UIの設計・開発
自社独自のシステムを開発することで、現場の意見や要望を細かくインターフェース上に取り入れられます。それぞれのステップを見ていきましょう。
1. データソースを作成
RAGを実際に利用する際は、ユーザーが質問を行うことで、それに応じたデータがRAGからLLMへと渡ります。そのため、システムを開発する最初の段階では、RAGに蓄積するデータを決定し、検索の基盤となるデータソースを作成しなければなりません。
RAGに活用できるデータソースは、社内データベースやGoogleドライブ上のデータ、Excel・CSVファイル、PDFファイル、各種テキストファイルなど、さまざまな形式やシステムが含まれます。そのなかから使用目的に合致したデータを選定しましょう。また、ハルシネーションを防ぐためにも、正確性の高いデータを選定することが重要です。
2. ベクトルデータベースの構築
検索エンジンが効率良くデータを処理するためには、検索対象のデータソースを数値ベクトルへと変換する必要があります。ベクトル化されたデータは、検索エンジンによってより扱いやすくなります。
例えば、テキストデータであれば、自然言語処理の技術や特徴量の抽出手法を用いてベクトル表現に変換するのが良いでしょう。そのほかのデータ形式についても、それぞれに適した変換方法を適用することが大切です。こうした処理により、検索エンジンは数値ベクトルをもとに高速な検索やインデックスの構築を行い、ユーザーに対して迅速かつ的確な検索結果を提供できます。
3. LLMの選別・実装
LLMには、GPTモデルやPaLM2、LLaMa2といったさまざまな種類があります。そのため、自社の目的や要件に最も適合するモデルを選ぶことが重要です。最適なモデルを選び出すためには、まず言語生成に関する性能を比較すると良いでしょう。
例えば、言語生成に関する性能の一つとして、パラメータ数があげられます。パラメータとは、モデルが正確な結果を出すために内部で調整される変数のことで、予測精度を大きく左右する要素です。パラメータ数が多ければ多いほど、モデルはより繊細なニュアンスや複雑な関係性を学習できますが、反対に計算リソースや学習時のデータ量が増えるため、性能とコストのバランスを見極める必要があります。
そのほか、対応言語やライセンスの条件もよく確認しておくことが大切です。これらの観点を総合的に評価したうえで、自社に最適なLLMを選定することが求められます。
4. 検索エンジンの開発・LLMとの連携
社内データを検索するための検索エンジンを構築し、LLMと連携させます。検索結果は、LLMへの入力に適した形式で出力され、テキストやメタデータの抽出・整形が行われます。これにより、検索エンジンから得られたデータは、LLMによる分析や知識の抽出プロセスへとスムーズに統合されます。
この仕組みを実現するためには、検索エンジンとLLMを連携させるシステムの開発が必要です。両者を連携することで、ユーザーは直接検索エンジンにクエリを投げることなく、より高品質な応答をスムーズに得られます。
5. UIの設計・開発
実際にユーザーが操作する画面の設計と開発を行います。ユーザーからの入力をLLMに渡し、LLMが回答を生成した後、それを画面上に適切に表示できるように調整します。その結果、ユーザーは直感的な方法で質問や情報提供ができ、LLMから自然な形で返答を受け取ることが可能になります。
独自のRAGシステムを構築するならGoogle Cloudがおすすめ
RAGを搭載した独自のシステムを構築する場合、RDBやデータレイク、検索エンジン、LLMなど、さまざまなツールを導入しなければならず、高額なコストや多くの労力を要します。その点、Google Cloudを活用すれば、このようなツールをワンストップで効率良く活用できます。
Google Cloudとは、AIモデルの開発やデータ分析基盤の構築、クラウドコンピューティングなど、さまざまな分野のサービスが統合されたクラウドプラットフォームです。そのなかには、RAGシステムを構築する際に役立つ次のようなサービスが含まれています。
- AlloyDB AI:
PostgreSQLと完全な互換性を持つ、フルマネージド型のリレーショナルデータベースサービス - Vertex AI RAG Engine:
RAGシステムを構築するための統合フレームワーク - Vertex AI Search:
Googleの検索テクノロジーを基盤とする、生成AIを組み合わせて構築された検索プラットフォーム - Vertex AI Vector Search:
従来のキーワード検索と組み合わせて検索精度を向上できる、ハイブリッド検索の仕組みを活用したベクトル検索機能 - BigQuery:
Vertex AI Search用をはじめとする機械学習用モデルのトレーニングに使用できるデータセット
Google Cloudでは、上記のようなサービスを自由に組み合わせられます。それぞれの料金は従量課金制が採用されており、使用した分の料金のみ課金されるため、RAGの運用目的に合わせて費用対効果を最適化できます。
RAGを活用して生成AIの活用範囲を広げよう
従来の生成AIでは、学習データが古くなると出力結果の鮮度が低下したり、場合によってはハルシネーションが発生したりと、その出力精度に課題を抱えていました。しかし、RAGを活用すると、ユーザーから質問が入力されるたびに、システムのなかに組み込まれたクローズドなデータベースから必要な情報を参照するため、リアルタイムでより正確な回答が得られます。
このような点から、いままで使っていた生成AIで、より高精度な出力結果が期待できます。カスタマーサポートや社内ヘルプデスク、データ分析など、さまざまな業務に発展できるため、さっそくRAGの活用を検討してみてはいかがでしょうか。
電算システムでは、Google Cloudのスターターパックサービスや技術コンサルティングサービスなどを提供しています。Google Cloudには「Vertex AI Studio」や「AutoML」など、さまざまなAI関連サービスが搭載されており、独自のAIモデルを開発したり、既存の生成AI技術を活用したりできるのが特徴です。Google Cloudの活用方法については以下の資料で紹介しており、無料でダウンロードできるので、ぜひ参考にしてください。
- カテゴリ:
- Google Cloud(GCP)
- キーワード:
- rag システム

