![見出し画像](https://assets.st-note.com/production/uploads/images/121412138/rectangle_large_type_2_299dde98b1c9115d6681a4fdfdc7f913.png?width=1200)
大規模言語モデルをパワーアップさせる"RAG"について解説します
大規模言語モデル(LLM)の分野で注目されている技術に
RAG(Retrieval Augmented Generation )があります。
この記事では、RAGについて、
できるだけ分かりやすく解説していきます。
まずは、RAGを超ざっくり理解する
RAGは、Retrieval-Augmented Generationの略です。
Retrieval : 検索
Augmented :強化された
Generation : 文章生成
これらをつなげると、
RAGは、検索によって強化された文章生成となります。
もう少しカッコよくまとめると、
外部のデータベースから事実を検索し、検索した情報に基づいて大規模言語モデル(LLM)に回答を生成させる技術となります。
なぜ、RAGが必要なのか?
LLMは、事前学習時に世の中に存在する大量のテキストデータに基づいて知識を得ています。
したがって、
学習時点で存在しない情報や、
存在していても学習していない情報からは
は学習していないため、答えられません。
これは人間でも同じですよね。
これに対し、
RAGを使えば、LLMが事前に学習していなくても、
回答できるのです。
RAGを試験に例えてみる
皆さんも、
試験勉強の経験があると思います。
沢山の知識を勉強の過程で詰め込みますよね。
これがLLMの事前学習と同じです。
そして、試験で問題が出て回答する。
これは人間がLLMに質問し、LLMが答えるのと同じですね。
さて、ここで、勉強しなかった問題が
出題されたらどうでしょう?
普通は解けませんね。
ここでRAGの出番です。
RAGは問題を解く手助けをしてくれます。
例えば、手元のスマホを使って「ネット検索」することを認めてくれます。
あるいは、問題のことについて書かれた本を渡してくれます。
LLMは、こうしたツールを使うことで、
事前学習しなくても、回答することができるようになります。
![](https://assets.st-note.com/img/1699074692343-JES0lLLrEY.png)
RAGの流れ
イメージできるよう、
社内文書のFAQシステムを考えてみます。
具体的には、
社員からLLMが社内文書に関する質問を受け、
それに答えることを考えてみます。
大規模言語モデルは
社内文書を事前学習していませんので
RAGが必要になるわけです。
この仕組みを作る準備段階として、
社内文書をデータベース化しておく必要があります。
テキストそのものをコンピュータは認識できないので、
テキストを数値(ベクトル)に変換したうえで
データベースに格納します。
このデータベースをVectorStoreといいます。
準備が整ったところで、
1️⃣まず、社員(User)がLLMに質問をします。
2️⃣LLMは社員の質問をベクトル化し、
さきほどのVectorStoreから、
質問内容と類似している文章を検索します。
3️⃣LLMは、VectoreStoreから、
質問内容と類似している文章を受け取ります。
4️⃣LLMはこれに基づいて、
回答を作成し、Userに返します。
以下が簡単なイメージ図です。
![](https://assets.st-note.com/img/1699158850422-pGLrFPlAkD.png?width=1200)
LLMの事前学習には非常にコストがかかります。
RAGは、モデルの学習が不要なため、
コストをかけずに、比較的簡単に実装することができます。
RAGのもう一つのメリット
RAGは、不正確な情報を生成する傾向があるLLMの問題を
緩和するための有望な方法と見なされています。
RAGを利用することでLLMは、
古い情報や一般的な知識に頼るのではなく、
リアルタイムで取得した情報に基づいて回答を生成することができます。
RAGは、モデルによる誤情報の生成を減らす助けともなり、
全体的な信頼性を高める効果があります。
いいなと思ったら応援しよう!
![Non](https://assets.st-note.com/production/uploads/images/100090062/profile_5175a68802384e4366d51fb1e7b7eef0.png?width=600&crop=1:1,smart)