【生成AI】RAG(ラグ)とは?メリット・デメリット簡単解説
生成AIの活用を試みたことのある方であれば、「RAG(ラグ)」というキーワードを一度は聞いたことがあるでしょう。
ネット上で「生成AIの有効活用のためにはRAGが必須」といった記載はよく目にしますが、エンジニアでもない限りその仕組みや有用性はなかなか理解しにくいものと思います。
そこで、この記事ではRAGについて、分かりやすく解説していきます!
1. 「RAG」とは?
「RAG」とは、英単語のRetrieval Augmented Generationの頭文字からとったものです。
それぞれ、以下のような意味です。
Retrieval ・・・ 取得
Augmented ・・・ 拡張された、増強された
Generation ・・・ 生成
分かりやすく繋げると、「必要な情報を外部から「取得」し、AIの知識が「拡張された」状態で、コンテンツを「生成」する」といったところでしょうか。
ChatGPTなどの生成AIは、膨大な量のデータを学習させた大規模言語モデル(通称LLM、AIの一種と思ってください)です。
「言語モデル」という表現からも分かると思いますが、膨大なテキスト・データをAIに学習させることで、特定の文脈において次に来るであろう単語を推論し、それらを繋げていくことで人間が見ても自然な言葉を生成しています。
(少し話題がそれますが、OpenAIがChatGPTの学習に無断でニューヨーク・タイムズの記事を使用して訴訟問題に発展してしまったというニュースもありましたね。)
裏を返せば、対話型のLLMに質問をすると学習させた範疇の情報でしか回答を返さないということになります。
ここにRAGを活用し、別の仕組みで外部から取得した情報をLLMに提供することで、LLMの知識を補強・拡張し、本来であればLLMが持ち合わせていない情報をベースに生成も可能となるのです。
2. なぜ「RAG」が必要?
さて、上記の「RAG」の概要についての説明を読まれて、以下のような疑念を抱かれた方も多いのではないでしょうか?
「そもそも、外部から情報を取得してLLMを補強するくらいなら、最初からLLMにその情報を学習させておけば良いのでは?」
これは大変鋭い指摘です。
確かに、LLMは学習された知識の中から、質問の答えとして最も適当な言語を推論して回答を生成します。
しかし、このプロセスにおいてLLMの弱点がもう一点存在します。
それは、LLMはハルシネーション(Hallucination、幻覚)を見てしまうことがあるということです。
もう少し分かりやすく言えば、LLMは「あたかもそれが事実であるように、平然と嘘をついてしまう」ことがあるのです。
LLMの原理として、「特定の文脈において次に来るであろう単語を推論」して回答を生成すると説明しましたが、あくまで文脈的に自然な回答を生成しているのであって、情報の正誤についてはLLMは検証していません。
LLMに学習させた情報に誤りがあれば、仮に正しい情報も学習させていたとしても、誤った内容に引っ張られて誤った内容を生成してしまう可能性もあります。
では、どうすればLLMのハルシネーションを防ぐことができるのでしょうか。
お気づきかと思いますが、RAGを活用して正しい情報のみをLLMに与えて、その情報の中から回答を生成させれば良いのです。
3. 「RAG」の活用方法
RAGの活用方法について詳細に説明しようとすると、どうしてもテクニカルな話になってしまうので、ここでは概要にのみ触れます。
社内などで生成AIを活用しようとすると、自社でLLMを開発するか、既存のLLM(GPT、PaLM、LLaMAなど)を活用するかの2択だと思います。
LLMを自前で開発するのはレアケースだと思いますので、ここでは既存のLLMを活用するものと想定します。
既存のLLMであれば、基本的にAPI(Application Programming Interface)と呼ばれる、システムからLLMに接続するための窓口が用意されている場合が多いです。
仮にRAGを活用しない場合は、このAPIと自社システムを連携させて、LLM側が提示する所定のフォーマットに従ってデータを送信するだけでLLMから回答を得られるようになります。
(※活用するLLMなどによっては情報漏洩のリスクなどもあるため、取り扱う情報の機密性に応じたLLMの選定が必要です)
ここにRAGを追加する場合は、LLMに提供する情報を管理するデータベースと、そこにアクセスして必要な情報を取得してLLMに渡すための仕組み(システム)が必要となります。
ざっくりとした処理の流れとしては以下のようになるかと思います。
- ユーザーから入力(問い合わせ等)を受け付ける
- 受け付けた情報を元に、データベースで該当情報を検索する
- データベースから収集した情報と、ユーザーの入力内容をLLMに送信する
- LLMから回答を受け取ってユーザーに表示する
4. 「RAG」のメリット
最後に、RAGを活用する上での主なメリットとデメリットについて整理して終わりたいと思います。
まずはRAGのメリットです。
①ハルシネーションを緩和できる
あらかじめLLMに学習させるデータを精査・整理することで、誤った情報の混入や偏りを防ぎ、生成AIの回答精度を上げることができます。
②LLMが持っていない情報をベースに回答できる
LLMはリアルタイムで学習を続けているわけではなく、特定時点でまとめて学習させているケースが多いです。
このような場合、前回の学習時点から現在に至るまでの情報がLLMに反映されていない可能性があります。
また、社内ナレッジなどの一般公開されていない情報は当然ながらLLMの学習データには含まれていません。
これらのLLMがもともと保有していないナレッジも、RAGを活用することでLLMに考慮させることが可能になります。
5. 「RAG」のデメリット
続いてRAGのデメリットです。
①システムの開発コストが高くなる
3章で記載した通り、RAGを活用する場合はLLMに提供する情報を管理するデータベースと、そこにアクセスして必要な情報を取得してLLMに渡すためのシステムが必要となります
本来であればLLMとAPIを通じて通信すれば良いところ、上記部分の追加開発が必要になる分システムが複雑化し、開発・メンテナンスコストがかかってしまいます。
②処理が遅くなる
設計の工夫次第で大きく改善できるポイントではありますが、データベースにアクセスして必要な情報を取得する処理を挟む必要がありますので、その分システムの処理が全体として重く、遅くなってしまいがちです。
6. まとめ
上記の通り、RAGにはメリット・デメリットがありますので、ご自身の用途に応じて活用するかご判断いただければ良いかと思います。
ただし、社内の業務効率化用途などで活用を検討されている場合は、ほぼ間違いなく情報源となるデータベース(業務マニュアル等)を整備してRAGを実装する必要があるでしょう。
参考文献 ・What is retrieval-augmented generation? ・RAG の連結方式および自動評価指標の定量評価 ・RAG における自己認識的不確実性の評価 ・Retrieval-Augmented Generation(RAG)とは
AI相談.comは、LINEでAIキャラクターとチャットできるサービスです。早速、お気に入りのキャラクターを探しませんか?