猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

Amazon Bedrock を使って RAG (大規模言語モデルによる検索) をする

Amazon Bedrock Knowledge bases とは

Amazon Bedrock Knowledge bases という AWS のサービスを使うと、S3 に保存されている文書をもとに、大規模言語モデル (LLM) による検索ができます。

https://dev.classmethod.jp/articles/amazon-bedrock-knowledge-bases-opensearch-cluster-vector-storage/ の例だと、まず桃太郎の物語のデータを S3 に突っ込んでおき、それをもとに Amazon Bedrock を使って検索をしています。

RAG とは

このような検索のことを RAG (Retrieval Augmented Generation) といいます。日本語だと「検索拡張生成」と呼びます。

LLM は基本的に、事前に大量のデータを学習しておき、それをもとに質問に答えます。基本的には事前に学習したデータに無い質問には答えられないのですが、これを改良し、後からデータを追加できるようにしたようなイメージです。クラスメソッドの例では桃太郎の物語のデータを後から追加しています。

桃太郎のデータの代わりに社内の就業規則を入れれば、就業規則に関する質問に答えてくれたりします。

Amazon Bedrock Knwoledge bases の使い方

この Amazon Bedrock Knwoledge bases を使うためには、「検索対象の文章(今回の場合は桃太郎の文章)」と、「ベクトルデータベース」が必要になります。

ベクトルデータベースって?

ざっくり説明すると、S3 に保存された文章を LLM から利用できるように変換してくれるのがベクトルデータベースです。

普段我々が「キーワード検索」をする時に裏で動いているのがベクトルデータベースです。 Amazon Bedrock では、我々が LLM に指令を出すと、LLM がベクトルデータベースから回答を検索して我々に返してくれるのです。

この記事が非常にわかりやすかったです

qiita.com

Amazon Bedrock で Amazon OpenSearch Managed Cluster がサポートされた

冒頭にクラスメソッドの記事がありました。この記事は、 Amazon Bedrock Knowledge bases のベクトルデータベースとして「Amazon OpenSearch Managed Cluster」が使えるようになりました、というニュースでした。

dev.classmethod.jp

これまでは「Amazon OpenSearch Serverless」しか使えず、最低月額2〜3万円くらいかかるものでしたが、「OpenSearch Managed Cluster」 だと 6000円くらいで使えます。この価格差は結構でかいです。もちろん、価格差があるということは、基本的には Amazon OpenSearch Serverless が簡単で便利に使えるので、どちらを使うかはプロダクトの状況によります。