RAG(検索拡張生成)は生成AIを構築する際に必須とされている技術です。RAGを取り入れることで、生成AIはデータベースから情報を検索できるようになります。生成AIの機能を拡張して、より精度の高い回答が得られるようになるのがRAGを取り入れるメリットです。
本記事では、生成AIに重要なRAGの仕組みから役割、構築を成功させるポイントまで解説します。RAGが生成AIにどのような役割を果たすのか、どうすればRAGを上手く活用できるか知りたい方は参考にしてください。
WEBライター歴12年です。IT系の記事執筆経験は豊富にあります。
RAG(検索拡張生成)と生成AIの関係

RAG(検索拡張生成)は生成AIを補完する技術であり、さまざまなデータソースから検索できるように設計されたモデルを指します。
RAGは、データセットから指定した情報を検索して抽出できるのが特徴です。膨大なデータから効率的に検索する手法が取り入れられています。
RAGを生成AIに導入すると、回答を生成する際に外部の情報源を参照させることが可能です。外部の情報源から抽出された情報を参考にしながら生成AIが適切な回答を作成します。
RAGは特にLLM(大規模言語モデル)と組み合わされる事例が豊富です。LLMは学習データから誤った回答を導き出すケースがあるため、RAGによって回答の精度を向上させられます。LLMの欠点を解消するのに役立つため、RAGの活用が重要視されています。
生成AIに用いられるRAGの構造

生成AIに活用されているRAGは、主に以下の3つの構造によって成立しています。
- 検索(Retriever)
- 拡張(Augmentation)
- 生成(Generator)
RAGを成り立たせている構造について詳しく紹介します。
検索(Retriever)
RAGはユーザーの指示を受けると検索(Retriever)を実行してデータベースから関連情報を探します。
RAGの性能にとって検索は大きな影響を与える構成要素です。検索によって適切な情報を取得することで、以降のプロセスの精度が高まります。
検索を実行する際には、さまざまなアルゴリズムにより効率が促されます。BM25やDense retrievalなどが検索アルゴリズムの代表例です。検索により抽出された情報は、文章などで提供されます。
拡張(Augmentation)
拡張(Augmentation)とはRAGの検索(Retriever)と生成(Generator)の性能を向上させるプロセスです。拡張によって、より精度の高い回答を得られます。
拡張のアプローチの1つが、検索と生成を繰り返すことです。生成された文章に基づいて検索を追加で行い、新しい情報を得られれば、より回答の精度を高められます。
ユーザーからのフィードバックを活用して、検索アルゴリズムの改善を図ることも拡張の働きです。
さまざまな技術を積極的に取り入れることで、拡張の役割を果たせます。
生成(Generator)
RAGは集めた情報を元にして生成(Generator)を行うまでが1つの仕組みです。外部の情報源から得られたデータが加わることで、生成物の精度が高まります。
生成によって生み出されるものは、単に情報を要約したものではありません。さまざまな知識を統合し、より人間が理解しやすい形でまとめられた文章が生成されます。
生成の段階では、回答内容の正確さや最適化された内容であるかどうかが重要です。より精度の高い回答が得られるように、アルゴリズムを工夫しなければいけません。
生成AIに適用されるRAGのモデル

生成AIの精度を高めるために活用されるRAGには、主に以下の3つのモデルが存在します。
- Naive RAG
- Advanced RAG
- Modular RAG
それぞれのモデルの概要や機能などについて詳しく説明します。
Naive RAG

Naive RAGとは、検索を実行した後で回答を生成するモデルです。ユーザーが質問すると、関連する情報源を検索した上で、得られた情報に基づいて回答が生成されます。
RAGの中でも初期に生み出されたモデルがNaive RAGです。Naive RAGには明確な欠点が存在しており、現在では改良されたモデルが登場しています。
Naive RAGは検索の段階で無関係な情報を抽出したり、重要な情報が抜け落ちたりするリスクがあるのが欠点です。また、似たような情報源を参照すると、毎回同じような内容が出力される点も問題視されています。
Naive RAGの課題を克服するために登場したモデルがAdvanced RAGとModular RAGです。
Advanced RAG

Advanced RAGはNaive RAGを発展させたものです。検索の前後で最適化の処理を行います。高度な検索を行うモデルであり、特定の情報についてフィルタリングを行い、精度の高い回答を生成できます。
前処理としてクエリルーティングやクエリ書き換えなどの処理を行い、データベースに対する命令の精度を高めます。
さらに後処理としてリランキングや要約、ランク融合が行われるのが特徴です。検索結果のランク付けや情報の圧縮を行い、LLMへの入力の最適化を図ります。
さまざまなアプローチにより、Advanced RAGはNaive RAGの欠点を克服し、回答の精度を上げることに成功しています。
Modular RAG

Modular RAGは、RAGを改善させるための技術をモジュールとして考え、モジュールの組み合わせによりRAGのモデルを構築する手法です。複数の機能をRAGに持たせることができ、より高度な検索と生成を可能にします。
膨大な量のデータが扱われるようになり、データ検索の効率化や精度を高めるための工夫が必要になりました。単純なRAGでは対応できないケースが増えたため、複数の技術を組み合わせたModular RAGが今後は重要になります。
たとえば、複数のデータソースから情報を抽出し、情報を組み合わせて1つの回答を生み出すことが可能です。より複雑な質問にも高い精度で回答を生成できるモデルを構築できます。
RAGが生成AIに必要な理由

生成AIの抱える課題の解決策としてRAGは効果的です。
RAGを適用することで、ハルシネーションを防ぎ、最新の情報に基づいた回答を得られます。
以下ではなぜ生成AIにRAGが必要とされるのか理由を紹介します。
ハルシネーションを防ぐため
ハルシネーションとは生成AIが事実とは異なる内容を生成する現象です。学習したデータの解釈を誤るケースや学習したデータに存在しない知識を生成するケースなどがあります。
生成AIは事前に学習した情報に基づいて回答を生成する仕組みです。しかし、学習データに誤りが含まれると、生成された情報にも誤りが含まれやすくなります。生成AIが参照する情報の信頼性は、生成物の精度に大きく影響する要素です。
RAGでは、外部の情報源として信頼性の高い情報を用意します。たとえば、社内文書やマーケティングデータなどです。ユーザーが入力したクエリに基づき、関連する情報をデータベースから探し出します。抽出した情報が回答の生成に利用されるため、回答の精度が上がります。
常に最新の情報を適用するため
生成AIが古い情報を参照して誤った回答を生成するのを防ぐために、RAGは重要です。生成AIに与えられた学習データが古いものであれば回答も古い情報に基づくため、有益な情報とはいえません。
RAGでは、プロンプトを入力すると、生成AIは外部情報を検索します。あらかじめ最新情報を含むデータベースを用意しておけば、生成AIは常に最新の情報を参照するため、回答の精度を上げることが可能です。
RAGを用いると、生成AIに再学習させることなく最新情報を反映した回答をさせられます。再学習の手間を省けるため、外部情報の更新を容易に行うことができます。
質問の意図に沿った回答を引き出すため
生成AIは与えられたプロンプトに反応して回答します。ユーザーが曖昧なプロンプトを与えると、生成AIが誤った解釈を行い、質問の意図に合わない回答を引き出しかねません。
RAGでは、入力されたクエリを解析して数値的に表現するエンコーディングを行います。そして、エンコーディングされたクエリを活用してデータベースから関連性の高い情報を抽出します。その結果、質問に関連する正確な情報を抽出できて、回答の精度を高めることが可能です。
RAGはプロンプトの処理を行う仕組みを取り入れることで、曖昧な質問や抽象的な質問からでも正確な回答の生成を実現しています。
RAGが活用されている生成AIの事例

RAGはさまざまな活用例が存在しており、ビジネスの現場で役立てられています。ビジネスの問題の解決や顧客満足度の向上などに寄与するため、導入事例は豊富です。
以下にRAGの活用例をまとめました。
| RAGの活用例 | 概要 |
| マーケティング調査 | 生成AIのリサーチ業務において、 ユーザーに関する情報を外部データベースから取得する |
| 顧客サポート | 製品やサービスに関するトラブルシューティング情報を参照し、 顧客からの問い合わせに正確な回答を行う |
| 医師の診療 | 医療データベースから情報を検索して、 生成AIに組み込むことで診断や治療法の正確な回答を生成する |
| 顧客のニーズに合った広告コンテンツの提供 | 顧客に関する情報を参照し、 顧客のニーズに合致する広告コンテンツを表示させる |
マーケティング調査では外部データベースよりユーザー情報を収集し、リサーチの回答を得るのにRAGが使われます。
製品・サービスのトラブルシューティング情報を参照した上で顧客の問い合わせに回答する事例もあります。
医療の現場でRAGを活用すると、医療データベースから情報を検索し、診断や治療法に関する正確な回答を導き出すことが可能です。
RAGで生成AIを構築するときのポイント

生成AIをRAGによって構築するのに失敗するケースがあるため、いくつかポイントを守ることが大切です。
以下ではRAGによる生成AIの構築で重要なポイントを3つ紹介します。
目的や課題を明確にする
なぜRAGを導入するのか、目的を明確にすることが重要です。現在どのような課題を抱えているのか、RAGによってどんな効果を期待しているのか明確にします。
目的や課題の一例として、RAGを社内用として使うのか、あるいは社外用なのかがあげられます。社内用であればバックオフィス業務のサポート、社外用であれば顧客の質問に対応するチャットボットなどが用途です。
自社にどのような目的や課題があるのかを明確にすると、RAGの構築に必要なデータや環境もわかりやすくなります。達成したい要素を具体的にした上で、RAGによって解決できるかを検討しましょう。
ユーザーが生成AIから期待する回答を引き出せるようにするのがRAGの役割です。課題や目的を明らかにしておけば、回答精度の向上にもつながります。
開発期間やコストを見極める
RAGの構築には、多くの人員が開発に従事する必要があり、開発期間とコストの問題が発生します。RAGの導入によりインフラコストが上がれば、会社の経営を圧迫する恐れがあります。
RAGの導入の際には、どの程度の開発期間やコストが生じるのか見極めることが大切です。事前に要件定義をしっかりと行い、予算内に収まるように開発期間やコストを設定します。
ただし、RAGの質が下がり過ぎないような開発期間とコストに抑えなくてはなりません。構築したRAGが目的に合わないものになると、業務上の課題を解決できず、開発にかかったコストが無駄になります。
過去の開発実績や開発に携わる人材の質・量などを踏まえた上で、開発期間やコストを見積りましょう。
使うLLMを比較検討する
RAGの導入時にはLLMを決める必要があり、どの種類のLLMを利用するかは重要なポイントです。
一般的に用いられているLLMの種類は、GoogleのBERTやOpenAIのGPTなどです。BERTは文章の理解を得意としており、GPTは文章生成に特化しています。
RAGによって何をしたいか、目的に合わせて適切なLLMを選ぶことが大切です。ユーザーとの対話を重視するのであれば、自然な会話を実現できるGPTが適しています。文脈を理解した上で正確な文章の生成を重視するならばBERTが最適です。
環境構築で要求される技術や費用なども考慮した上で、導入するLLMを選びます。
RAGの活用がうまくいかない原因と対策

RAGの導入がうまくいかない原因は以下の通りです。
- データの誤りや不整合
- データ規則の不統一
- 古いデータの混在
- 認識が難しいデータの混在
RAGの活用が失敗する原因と対策についてそれぞれ紹介します。
データの誤りや不整合
RAGのモデルが参照するデータベース内に誤りや不整合があると、正確な回答が生成されません。RAGはデータの誤りや不整合を検知できず、誤ったデータから回答を生成するからです。
RAGに与える外部情報には、社内文書やマーケティングデータなどさまざまな種類があります。外部情報として用意するデータセットの内容に誤りが含まれないか、事前に確認しておくことが大切です。
誤った情報が含まれている場合は修正を行い、正しい情報のみを残しておきます。データの不整合が見られる場合は修正を行い、データの質を高めておくことで、RAGの精度が上がります。
データ規則の不統一
RAGに用いるデータ規則に不統一が見られると、生成AIは正しくデータを認識できなくなり、回答の精度が落ちます。RAGに活用するデータは、書き方などについて統一しておくことが大切です。
たとえば、名字と名前の間に半角スペースを入れるのか、アルファベットを大文字と小文字のどちらで表記するのかなどは、統一したルールに基づいて決める必要があります。
日本語の場合は漢字とひらがな、カタカナの区別をつける必要もあるため、厳密に表記ルールを決めなければいけません。
同じ対象が別の表記で記されていると、AIはそれぞれ別の対象と認識する可能性があります。データ規則を統一することで、AIがデータを誤認識するリスクは低下します。
古いデータの混在
RAGで活用する情報源に新しいデータと古いデータが混在すると、誤った回答が生成されるリスクがあります。古いデータが混在すると、新しいデータと矛盾が生じてしまい、生成された回答の正確性が下がります。
RAGのためのデータセットを用意する際には、古いデータをあらかじめ取り除くことが大事です。たとえば、過去1年間のデータのみ利用するなど期間を区切るやり方があります。
時間の経過とともにデータは古くなるものです。定期的にデータをチェックして古いものを取り除き、新しい情報に更新することでRAGの精度が上がります。
認識が難しいデータの混在
生成AIにとって認識が難しいデータが混在していると、AIが正しくデータを読み取れず、回答の精度が下がります。RAGで用意するデータは、AIが認識しやすい形に加工することが重要です。
AIは明快で簡潔な表現であれば正確に理解できます。逆に不明瞭で曖昧な表現だと正しく認識できません。
社内専門用語や業界用語、スラングなどがデータに含まれる場合は注意が必要です。わかりにくい表現は簡単な表現に書き換えておきます。
前後の文脈が細切れになっている文章があるかどうかもチェックし、文脈が揃った状態にしておくことも大切です。
まとめ:RAGの働きを理解して生成AIの機能向上に役立てよう

外部の情報源の利用やデータの前処理など、生成AIの抱える課題を解決するアプローチがRAGです。RAGを利用することで生成AIの欠点を解決し、精度の高い回答を得られるようになります。
ただし、RAGが失敗するケースもあるため、事前にしっかりと対策を立てることが大事です。
RAGや生成AIに関して質問や相談のある方は株式会社Jiteraまでご連絡ください。AIを活用した開発に関する実績が株式会社Jiteraにあるため、RAGや生成AIに関する問題も解決いたします。


