昨今、生成AIが世間を席捲しており、AWSのサービスでも生成AIを利用したサービスがいくつも立ち上がっています。中でも最近注目されているのが、”RAG”と呼ばれるアーキテクチャです。
この記事では、AWSのサービスで構築されたRAGアーキテクチャの特徴について説明します。
Amazon Bedrockとは
APIで様々な基盤モデル(※)を利用して生成AIアプリケーションを構築することができる、AWSのサーバレスサービスです。データセキュリティやコンプライアンスを実現しており、安心して利用できるのも特徴です。
Amazon Bedrockでは、以下のような基盤モデルを手軽に利用することができます。
- JURASSIC-2 (AI21labs社)
- CLAUDE 2 (ANTHROPIC社)
- COMMAND (co:here社)
- LLAMA 2 (Meta社)
- SDXL 1.0 (stability.ai社)
- AMAZON TITAN (Amazon社)
※サービスの詳細を確認したい方は、こちらの公式サイトをご確認ください。https://aws.amazon.com/jp/bedrock/
(※)基盤モデルとは何かを知りたい方はこちら。
RAGとは
なぜRAGが必要か
RAGとは、「Retrieval-Augmented Generation」の略で、基盤モデルとは別にデータソース(ナレッジソース)を構築することで、基盤モデルの学習内容を補完する生成AIの仕組みのことを言います。
では、なぜこのような仕組みが必要となるでしょうか。それは、基盤モデル単体で利用すること困るシーンがあるからです。
例えば、社内等に閉じた情報を検索しようとしても、一般的な基盤モデルはそれらの情報を学習していません。そのような、限られた人のみが利用する生成AIアプリケーションを構築したい場合、RAGアーキテクチャは有効的です。
基盤モデルの回答は100%正解とは言い切れません。誤った回答がある場合もあり、それをハルシネーションと呼びます。RAGアーキテクチャを取ることで、質の高いデータソースから適切な回答をユーザにすることができます。
RAGの肝となるのがナレッジソース
RAGアーキテクチャを構成するには、基盤モデルとは別のナレッジソースを用意する必要があります。RAGを用いた生成AIアプリケーションでは、ユーザからのリクエストに対してナレッジソースの情報を参照し、ナレッジソースに存在する情報であればそれをユーザに回答します。
RAGアーキテクチャにおいて、このナレッジソースを作成できるAWSのサービスが、後述するAmazon Kendraです。
RAG実装時の検討事項
RAGアーキテクチャで正しくユーザに回答を返却するために検討すべきこととして、大きく2点紹介します。
1つ目は、RAGに限った話ではありませんが、生成AIアプリケーションに投げるプロンプトの丁寧さです。「プロンプトエンジニアリング」という用語があるように、生成AIの世界ではプロンプトをいかにAIに分かりやすく記載するかが重要になります。例えば、生成AIに同じ質問をするのでも、「あなたはユーザからサービスの問い合わせを受けたヘルプデスクです。」等、前提を与えてプロンプトを記載することで、より洗練された正確な回答を得ることができます。
2つ目は、ナレッジソースのデータの質です。当たり前ですが、ナレッジソースのデータに誤りがあれば、RAGアーキテクチャの生成AIアプリケーションも誤った回答を出力します。
AWSでのRAGアーキテクチャ
AWSでは、基盤モデルのサーバレスサービスであるAmazon Bedrockと、ナレッジソースを作成できるAmazon Kendraを組み合わせることでRAGアーキテクチャを構築することができます。
Amazon Bedrock + Amazon Kendraの他に、AWSのサービスを利用したRAGアーキテクチャには以下のようなものがあります。
- Amazon Bedrock + Vector DB(Vector DBには、Amazon OpenSearch Service、Amazon Document DB、Amazon MemoryDB for Redisを利用可)
- Agents for Amazon Bedrock
- Amazon Q for Business
Amazon Kendraとは
何度も前述しておりますが、Amazon KendraとはRAGにおけるナレッジソースを作成できるサービスで、AWSマネージドな検索エンジンのサービスです。
インデックスを作成してデータソースを取り込むことで、ユーザからの自然言語クエリに対応する検索を行うことできます。
※サービスの詳細を確認したい方は、こちらの公式サイトをご確認ください。https://aws.amazon.com/jp/kendra/
対応ドキュメント
対応言語
メタデータの付与
ドキュメントへのアクセス制御
セキュリティ対策
Bedrock + Kendraでできること
では、BedrockとKendraを組み合わせると何ができるのでしょうか。その一例が、RAGチャットです。
基盤モデルを利用したBedrockだけでも、チャットアプリは構築することができます。ChatGPTを利用したことがある方も多いのではないでしょうか。ChatGPTと同じイメージで、Bedrockを利用したチャットアプリは構築可能です。
しかし、前述にもありますが、例えば社内文書にフォーカスした生成AIアプリケーションを作成したい場合はどうでしょうか。既存の基盤モデルにリクエストを投げても、得たい回答は返ってこないでしょう。
一般には存在しない社内文書などをKendraのインデックスに取り込み、Bedrockと組み合わせてRAGチャットを構築することができます。このとき、Kendraだけでなく基盤モデルであるBedrockも利用しているため、ナレッジソースのデータを要約してシンプルに出力してくれたり、チャット形式で過去のやり取り記憶しながら出力してくれたりするわけです。
まとめ
今回は、AWSのサービスであるBedrockとKendraを組み合わせたRAGアーキテクチャの特徴について説明してきました。
とはいえ、すぐにRAGアーキテクチャを構築するのもハードルが高いです。そのため、本当にRAGを構築する必要があるか、必要があればまずはエンタープライズサーチから始める、といったようにスモールスタートすることをおすすめします。