はじめに
こんにちは!SIerに入社して1年目の新人エンジニアです。日々の業務で当たり前のように使われている用語で「えっ、それって何?」と思ったものを調べて、自分なりにまとめていきます。
今回は「RAG」について。
目次
RAGって何の略?
RAGは「Retrieval-Augmented Generation」の略で、日本語では「検索拡張生成」と訳されています。
簡単に言うと、RAGは大規模言語モデル(LLM)に外部の知識を検索して取り込ませる技術です。ChatGPTのような生成AIが自分の「記憶」だけでなく、外部データベースや資料から情報を引っ張ってきて、より正確で最新の回答を生成できるようにする方法なんです。
なぜRAGが必要なの?
生成AIモデル(LLM)にはいくつかの問題点があります。
- 知識の鮮度: LLMは学習時点の情報しか持っていない
- ハルシネーション: 自信満々に間違った情報を生成することがある
- 専門知識: 企業固有の情報や非公開情報は学習していない
これらの問題を解決するために、RAGでは外部の最新データや専門情報をその場で検索して活用します。例えば、社内文書や製品マニュアルなど、公開されていない情報をAIに「参照」させることができるんです!
RAGの仕組み
- ユーザークエリ受信: ユーザーが質問を入力
- 関連情報検索: 質問に関連する情報を外部ソースから検索
- コンテキスト組み込み: 検索結果を「コンテキスト」として質問に追加
- AI回答生成: コンテキスト付きの質問にLLMが回答を生成
つまり、AIが回答を生成する前に「ちょっと調べもの」をする機能を追加したようなものですね!
従来の生成AI:
ユーザー質問 → LLM → 回答(モデルの知識のみに基づく)
RAGを使った生成AI:
ユーザー質問 → 情報検索 → 検索結果をコンテキストとして追加 → LLM → 回答(モデルの知識+検索結果に基づく)
RAGの構成要素
- データソース: 検索対象となる文書やデータベース(社内文書、マニュアル、Webサイトなど)
- 埋め込みモデル(Embedding Model): テキストをベクトル(数値の配列)に変換するモデル
- ベクトルデータベース: 埋め込みベクトルを効率的に保存・検索するデータベース(Chroma、Weaviateなど)
- ベクトル検索エンジン: ユーザークエリに関連するドキュメントを見つけるシステム(AzureAISearchなど)
- 大規模言語モデル(LLM): 最終的な回答を生成するAIモデル(GPT-4、Claudeなど)
RAGのメリット
- 最新情報へのアクセス: モデルの学習後に発生した情報も活用できる
- 専門知識の活用: 社内文書や専門資料を参照できる
- ハルシネーションの軽減: 事実に基づいた回答が増え、AIの創作が減る
- コストパフォーマンス: 完全なファインチューニングよりも低コストで実現可能
まとめ
「RAG」という用語、最初は謎でしたが、調べてみると生成AIの性能と信頼性を大きく向上させる重要な技術だと分かりました。特に企業内の非公開情報や専門知識をAIに活用させる上で、現時点では最も現実的なアプローチだと思います。最近では、大手の事業会社がRAGを活用したAIソリューションを導入しているというニュース記事もよく見かけるようになり、技術としての普及も進んでいるようです。
参考資料