生成AIの精度向上に必須の技術、RAG(検索拡張生成)の全て
生成AIの分野では、事実に基づかない回答(ハルシネーション)が起こりやすく、正確性に欠けるという問題がありました。RAG(Retrieval-Augmented Generation)は、低コストでハルシネーションを回避しやすいフレームワーク(プログラムのひな形)です。RAGについて基本的な解説を行い、今後の展望についても簡単にまとめます。
この記事の目次
RAGの概念と定義
RAGは拡張検索生成と呼ばれる、生成AIのフレームワークのひとつです。
生成AIのうち、自然言語を大量に解析・処理して、より自然な応答ができるようにしているものを大規模言語モデル(LLM)と呼びます。
LLMでは質問された文章を理解して、それに対応する自然な返答が可能です。
しかし、その内容の正確性は必ずしも保証されていません。
例えば、存在しない料理の名前を出して「レシピを教えてほしい」と入力した場合、食材の名前と分量が提示されたとしましょう。
しかし、これは実際には存在しないレシピなので、生成AIが誤情報を生み出すハルシネーションという現象が起きています。こうしたトラブルを防ぐのがRAGです。RAGは、情報検索をLLMに組み合わせることで出力結果をより正確なものにしてくれます。
RAGの流れと構成
RAGに使用されている検索方法と、それらを用いてRAGが回答を生成するまでの流れを紹介します。
RAGに用いられている検索機能
RAGを支える機能として、これまでにインターネット検索の補助などでも用いられてきた技術が活用されています。RAGの構成について紹介するために、まずはフルテキスト検索、ベクトル検索、セマンティック検索、ハイブリッド検索についてそれぞれ簡単に解説します。
フルテキスト検索
フルテキスト検索は全文検索とも呼ばれ、検索対象内から特定の文字列を検索する仕組みです。大量の情報の中から特定の文字列を検索できるため、一意に絞った検索に優れています。
しかし、曖昧な指示では期待する検索が行えないというデメリットもあります。
例えば、「アルファベットを検索して」と指示を出した場合、「A、B、C……」と抜き出してくれるのではなく『アルファベット』という文字列を検索してしまいます。
ベクトル検索
ベクトル検索は、検索のために入力された単語や文章の意味を数値化して、データベース内の単語の類似性から関連する情報を表示する検索方法です。
例えば、「寿司」は「日本」「生魚」「食品」などの要素を持つ単語として分解され、「日本+生魚=日本の食文化」や「生魚+食品=刺身」などの単語とニュアンスの近い単語として理解され、検索が行われます。
曖昧なニュアンスから検索できるというメリットがある一方で、単語の意味を要素として分解して学習させるための開発コストがかかるというデメリットもあります。
セマンティック検索
セマンティック検索は、検索する単語を入力した際に、その文章や文脈を理解し、ユーザーが意図した情報を検索する技術です。ユーザーの入力した文字情報に対してAIが文章構造を理解して、よりユーザーの求める返答をします。
例えば「東京駅から博多駅への最短距離」と検索したとしましょう。
ユーザーが質問している内容を無視するなら、東京駅から博多駅への直線距離を表示すればそれが最短距離になるはずですが、実際には陸路における最短経路を示してくれます。
ベクトル検索同様、曖昧なニュアンスからユーザーの求める情報を検索できるというメリットがありますが、開発コストがかかるなどのデメリットがあります。
ハイブリッド検索
ハイブリッド検索は、これらの検索方法を組み合わせて、お互いのメリット・デメリットを打ち消し合う手法です。RAGでは、主にこのハイブリッド検索が用いられています。
RAGの構成
RAGを使用すると、
- ユーザーが質問を入力
- 入力された質問をハイブリッド検索
- ユーザーの質問と検索で得られたデータをもとにLLMで回答を作成
という手順が取られます。
検索フェーズでは、ベクトル検索やセマンティック検索を用いて、ユーザーの意図している質問内容を汲み取った回答を検索します。
生成フェーズでは、ユーザーの質問に答える形式の文章を、検索で得られたデータからLLMで生成します。
RAGの利点とビジネスへの応用例
RAGを利用することで、より最新の情報にアクセスできるようになり、出力結果の信頼性が向上します。
最新の情報にアクセスできる
RAGを使用しないLLMでは、過去に学習した言語モデルのまま返答することになります。そのため、情報の更新のためには新たに情報をLLMに学習させる必要があり、これには多大なコストがかかります。RAGを使用することで、検索を行い、そこから最新の情報を集められるようになるため、再学習のコストが抑えられます。
ビジネスシーンでは、カスタマーサポートデスクなどでの利用において、特に効果が発揮されます。FAQや操作マニュアルなどを情報源として参照することで、チャットボットが質問された内容に対して適切な返答を生成できます。情報を修正したい場合には、これらのFAQやマニュアルを修正するだけで対応が完了します。
出力結果の信頼性が向上
RAGを用いないLLMでは、ハルシネーションのリスクが高いです。
一見普通の返答をしているため、その情報について知識が全くない場合、騙されてしまう可能性があるほどです。RAGを使うことで「存在しないものに対する質問」や「LLMが学習していない情報」に対する返答の正確性が向上します。医療や法務事務など、正確性の高い情報・情報ソースを求められる分野での生成AIの活用において、LLMの信頼性向上は大いに役立ちます。
実際の企業でのRAGの実装事例と成果
実際にRAGをシステムとして導入した事例を紹介します。
株式会社mofmofが提供する『開発チームレンタル』では、以下のような実績があります。
医療法人フルーツ
●これは「特定の症状に対して取る複数の治療法について利益と害を評価し、患者のケアを最適化するための文章」であり、確度が高いものである。
●診療ガイドラインを登録しておいて、治療に関する質問をすると、生成AI(ChatGPT-3.5)が回答してくれるプロダクトを開発した。
●新米歯科医師の教育に際して、似たような質問が毎年繰り返されていることに気付き、ガイドラインに沿った適切な回答を行える生成AIを開発することを決めた。
ネオス株式会社が提供するOfficeBotというサービスでは『導入事例』として以下のようなものが紹介されています。
島村楽器株式会社
●チャットボット導入によって、FAQ登録しておくだけで、AIが自動で学習し質問に回答してくれるようになった。
●チャットボットの運用コストはFAQの追加や修正程度で、1日の作業時間は5~10分程度まで圧縮できた。
●また、土日などバックオフィスが休日であっても対応が出来るようになった。
●加えて、顧客からの質問の種類が把握できるようになったため、潜在的な顧客のニーズにも気付けるようになった。
チャットボットの有用性を活かしながら、より確実性の高い情報を展開できるのがRAGの強みです。
RAGの将来性と発展
開発当初のRAGが抱えていた課題には、以下のようなものがあります。
- 元情報/LLMの質に依存しているため、生成テキストの低品質化が起こりうる
- 大量の元情報に当たる際、検索精度が下がり、生成の精度も低下するリスクがある
これらに対して、
- 検索アルゴリズムにランキング技術を導入する
- LLMの学習量や質を上げる
- RAGの検索、生成の各工程をモジュール化し、それぞれを最適化する
などの改善策が取られています。
検索アルゴリズムのさらなる改良、LLMの発達などにより、さらにRAGの精度は高まると期待されます。生成されたテキストに評価を加えてフィードバックすることで、さらに高品質な生成が可能になります。
また、Microsoftは2024年7月に、GraphRAGという検索方法を変化させたRAGを公開しました。
従来のRAGは、ベクトル検索やセマンティック検索など、入力された単語に対する評価を行ってユーザーの求める情報を検索していました。
GraphRAGでは、LLMを用いた知識グラフによって入力された単語を評価することで、よりユーザーの検索した単語への関連性が高い情報を導出しやすくなっています。LLMによって情報を検索するため、前提知識の学習が必要な個別ケースへの導入にはコストがかかるというデメリットがありますが、一般的なLLMの学習内容に対する検索には、導入コストを大幅に低減できます。
RAGの活用で業務負担を軽減
従来のLLMのみによる文章生成ではハルシネーションのリスクが高く、ユーザーの意図に沿わない回答が得られることも多々ありました。
RAGを使うと、ユーザーの入力した質問に対してベクトル検索やセマンティック検索などを行い、ユーザーの意図している質問内容も推論したうえでLLMに回答を生成させられます。これにより、従来よりも生成AIの回答精度が高まり、より質問者の意図に沿った回答が得られるようになりました。今後は、LLM自体の強化、検索方法の改良などによりRAGがさらに高品質になっていくことが期待されます。
また、LLMに学習させているデータセットを増強することで、GraphRAGのような導入コストの低いRAGの研究も進んでいくでしょう。
RAG|NRI 野村総合研究所
RAGとは?仕組みと導入メリット、使用の注意点をわかりやすく解説|NTT東日本 クラソル
Retrieval-Augmented Generation(RAG)とは?|IBMソリューションブログ
LLM(大規模言語モデル)とは?生成AIとの違いや仕組みを解説|NECソリューションイノベータ
ベクトル検索(Vector Search)とは? キーワード検索との違い|IT media
検索の方法(フルテキスト検索、ベクトル、セマンティック)の使い分けについて教えてください。|東京エレクトロン デバイス株式会社
【今更聞けない】全文検索/セマンティック検索/ベクトル検索/ハイブリッド検索の違い|ヘッドウォータース
RAG(検索拡張生成)とは?活用例やメリットを解説|AIsimiley
LLMに関わるならRAGについてざっくりとでも知っておくべき|Azure相談センター
プロトタイプで小さく始められるところが魅力的だった|mofmof inc.
日々利便性を向上させることで拠点からの問い合わせを大幅削減!|OfficeBot
RAG(Retrieval-Augmented Generation)研究の全体概要|ISSOH
MicrosoftがGraphRAGを発表:従来のRAGを超える、次世代の質問応答システム|AI総合研究所