AppFlowとAmazon Bedrockを利用してStripeの商品・料金情報についてのRAGを作ってみる
この記事は、Amazon Bedrock Advent Calendar 2023およびAWS Community Builders Advent Calendar 2023の18日目の記事です。記事では、Amazon BedrockとStripeを連携させる方法について紹介されています。具体的には、Amazon AppFlowを使用してStripeのデータをAmazon S3に取り込む方法や、Pineconeを使ってS3に保存したデータをBedrockのKnowledge baseに取り込む方法などが説明されています。また、データソースの選択やデータの更新頻度についても言及されています。詳細な設定方法やテスト方法については、別の記事を参照してください。
目次
この記事は「Amazon Bedrock Advent Calendar 2023」および「AWS Community Builders Advent Calendar 2023」18日目の記事です。
Amazon Bedrockを色々と触ってみましたのですが、「独自のデータソースをどのように用意するか」が気になってきました。ちょうどAppFlowとStripeの連携を以前試したことがありましたので、これをBedrockに連携させてみましょう。
Amazon AppFlowでStripeの商品・料金情報をAmazon S3に送信する
Amabon BedrockのKnowledge baseでStripeのデータを扱うには、情報をS3に保存する必要があります。定期的なバッチ処理によるデータの取り込みで問題がない場合、Amazon AppFlowを使うことで、コードを書かずにStripeのデータをS3に取り込むことができます。
データを取り込むフローの設定を紹介した記事を以前公開していますので、設定方法はこちらをご覧ください。
今回のテストアカウントで実行したところ、114レコードを送信しました。
データはJSONL形式で保存されています。
Amazon Bedrock Knowledge baseでS3に保存されたStripeの商品・料金情報をインデックスする
続いてS3に保存したデータをAmazon BedrockのKnowledge baseに取り込みましょう。途中生成(Embedding)したベクトルデータを保存する場所が必要になりますが、Pineconeを利用することでコストを抑えつつ試すことができます。詳細な設定方法は、「Amazon Bedrockに新登場した「Knowledge base」を試してみた(Pinecone利用編)」をご覧ください。
2023年12月時点では、Data sourceが1つしか選べないので、実運用ではProductとPrice両方のデータを一つのS3バケットにまとめて保存するようにAppFlowかGlueなどを構築する必要がありそうです。
Knowledge baseのテスト機能で動作を確認する
取り込んだデータを元に回答を作るRAGができているか試しましょう。[Test Knowledge base]で、Claudeを利用してテストができます。テストのStripeアカウントに、コーヒー関連の商品がいくつかあったので、「コーヒー好きにおすすめの商品を教えて」というプロンプトで商品が出てくるかを試しました。
3つ目は説明文にコーヒーに関するテキストが入っていました。みた感じうまく動作してくれている様子です。
[Source chunks]を見ると、どのようなデータを参照しているかを見ることができます。
AppFlowでProduct / Price両方をData SourceのS3に送信する
商品名・説明文だけだとすこし物足りない印象を受けたので、料金も送ってみましょう。
Syncすると、価格についても答えてくれるようになりました。
サブスクリプションかどうかの情報も回答してくれています。
StripeのデータでRAGを作るなら、ProductとPrice両方を投入しよう
料金と商品両方の情報がないと、RAGとして回答を得るにはすこし難しそうな印象を受けました。とはいえ、1つのS3バケットに対して、Price / Productそれぞれのデータを取り込むAppFlowのフローを設定すれば、Bedrock Knowledge base側である程度よしなに関連付けして回答を生成してくれる様子です。
とはいえ、精度を高めるために前処理を行うか否かや、どれくらいの頻度でデータを更新するかなど、まだまだ実践投入には考慮事項が多いかなとは思いますので、いろいろと試していくことができればと思います。