Skip to main content

Blog

AppFlowとAmazon Bedrockを利用してStripeの商品・料金情報についてのRAGを作ってみる

Posted over 2 years ago
この記事をシェア:

この記事は「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に取り込むことができます。

https://aws.amazon.com/jp/appflow/

データを取り込むフローの設定を紹介した記事を以前公開していますので、設定方法はこちらをご覧ください。

今回のテストアカウントで実行したところ、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側である程度よしなに関連付けして回答を生成してくれる様子です。

とはいえ、精度を高めるために前処理を行うか否かや、どれくらいの頻度でデータを更新するかなど、まだまだ実践投入には考慮事項が多いかなとは思いますので、いろいろと試していくことができればと思います。

Tools to Support Stripe Development

We provide helpful tools to extend the Stripe Dashboard and streamline development and testing.

View All Tools

Support This Project

If you find this content helpful, consider supporting the project through GitHub Sponsors. Your support helps maintain and improve these tools.