Amazon Bedrockを使ってRAGを実装する際の技術選定
スタディスト開発ブログAdvent Calendar 2023 21日目の記事です。
SRE Unitの若松です。今回はAmazon Bedrockを使ってRAG(Retrieval-Augmented Generation)を実装する際の技術選定についての話を紹介します。
RAGとは
RAGはRetrieval-Augmented Generationの略で、情報を検索(Retrieval)してから生成(Generation)を行います。
例えば、ユーザーからの質問やプロンプトに基づいて検索を行い、検索でヒットした情報を元に、ChatGPTなどのAIが回答を行います。
Amazon Bedrockの場合
AWSの生成系AIの機能であるAmazon BedrockでRAGを実装する場合、主に2つの方法があります。
1つ目は、Amazon Kendra + Amazon Bedrockの組み合わせです。
2つ目は、Amazon BedrockのKnowledge Baseの機能を利用する方法です。
Amazon Kendra + Amazon Bedrock
まずは、Amazon Kendra + Amazon Bedrockの組み合わせについてです。
Amazon Kendraは機械学習を使ったドキュメントの検索サービスです。Amazon Kendraにクエリを投げて、ユーザーの質問にマッチする検索結果を取得します。その後、検索結果を参考情報としてプロンプトに含めて、Amazon Bedrockのモデルを呼び出します。
検索部分ではAmazon Kendra以外に、Amazon OpenSearch Serviceを使うことも可能です。
なお、Amazon Kendraのデータソースには、S3やRDSなどのAWSの機能に加えて、GitHubやSalesforce、Zendeskなど様々なデータソースがサポートされています。
Knowledge Base
一方で、Knowledge Baseでは、Amazon Bedrockが直接検索を行った上で、検索結果を元に回答します。検索と生成処理の両方をBedrockに任せられるのが特徴です。
検索のサービスとしては、記事執筆の2023年12月時点では、Amazon OpenSearch Serverless、Pinecone、Redis Enterprise Cloudを選ぶことができます。
検索サービスに登録するデータソースは、S3のファイルを指定します。
技術選定の仕方
どちらの技術を選ぶべきかについては、利用するシーンによって異なると考えています。
Amazon Kendra + Amazon Bedrockの場合
Amazon Kendra + Amazon Bedrockについては、製品にRAGの機能を実装する場合に利用するのが良いと思います。
こちらの技術を選定した場合、検索時のクエリのパラメーターを自分で指定することができるのがメリットです。
例えば、マルチテナント環境で複数顧客のデータがAmazon Kendraにドキュメントとして登録されていても、ユーザーコンテキストの機能で特定顧客のデータに絞って、検索を行うことが可能です。
Knowledge Base
一方で、Knowledge Baseについては、記事執筆時点での機能を考えると、製品に組み込むのではなく、社内利用が良いのではないかと考えています。
Knowledge Baseでは、記事執筆時点において、検索時のクエリのパラメーターを指定することができません。そのため、複数顧客のデータが検索サービスに格納されていても、特定顧客のデータに限定して検索を行うことができません。
社内利用用途かつ部署毎に検索できる範囲に制限を設ける必要がないケースであれば、Knowledge Baseは社内利用で活用できると思います。
まとめ
今回はAmazon Bedrockを使ってRAGを実装する際の技術選定についての話を紹介しました。
生成系AIの分野は進化のスピードが早いため、数ヶ月後には技術選定の基準が変わる可能性も高いですが、現状の仕様で技術選定をしようとすると、上記の基準で技術選定をすることになると考えています。
We’re hiring!
スタディストでは、一緒に働く仲間を募集しています。
EntranceBookはこちらをご参照ください。
採用情報はこちらをご参照ください。