12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Amazon Bedrock]Amazon S3 Vectors実際どうですか?精度評価もしてみよう

Last updated at Posted at 2025-07-16

前書き

Amazon S3 Vectorsがプレビューリリースされました。
ベクターの保存とクエリをネイティブにサポートする初のクラウドオブジェクトストレージらしいです!

今まで高額なOpenSearchやAurora(高額?)は個人利用には手が出しづらかったけど、ついにナレッジベースの民主化が来たのか。早速試してみたいと思います。

料金

Amazon S3 Vectors の料金はAmazon S3 pricingページで確認できます。

ざっくりした料金例(1 か月あたり)

規模 ベクター数 ストレージ PUT クエリ回数 クエリ料金 合計
小規模 1,000 万 $3.54 $1.97 100 万 $5.87 $11.38
大規模 4 億 $141.22 $78.46 1,000 万 $997.62 $1,217.29

公式ドキュメントでも、規模が大きくなるほど従来のベクターストレージと比べて最大90%のコスト削減が可能だと言っているので、OpenSearchやAuroraと比べれば確かにかなり安そうです。

マネコンから試す

実際に作ってみます。

ナレッジ保存用のS3をまず作ります。名前をわかりやすくして、その他の設定はデフォルトのままで。

699BF3EA-A782-4B80-B1CC-8E4194AEAFC0.jpeg

次はナレッジベースを作っていきます。名前と説明をわかりやすくして、データソースをAmazon S3を選んで、先ほどのS3を指定してあげましょう。

88B51E51-2F2E-46A7-A976-B991842B276E.jpeg

1A36BB5A-0F0E-4AB3-AD6B-A77B2762B1AF.jpeg

埋め込みモデルはいつものEmbed Multilingualv3を選択して、ベクトルデータベースからAmazon S3 Vectorsを選びます。

解析戦略チャンキング戦略はデフォルトのままで、ナレッジベースを作成します。

991C68F3-6955-419E-859F-7BD3DA6F359A.jpeg

できたナレッジベースの同期もやっておきましょう。

0468041F-3A10-48CA-BF61-6430D4F3C654_4_5005_c.jpeg

これでナレッジベースが作れました。S3から確認すると、ベクターバケットから新規のバケットが確認できます。
EAC2AEE9-15D3-4696-8B9A-4F8D2EE633D9.jpeg

次はAIエージェントを作っていきます。
特に変わった設定はありません。わかりやすい名前にして、モデルをClaude 3.7 Sonnetにして、エージェント向けの指示もそれっぽいもので大丈夫です。設定完了したら、一旦保存しましょう。

204A0EF7-3DFB-4ED9-A82E-EC64D40F9988.jpeg

その後、先ほど作ったナレッジベースを接続してあげましょう。

8E856EDB-CFD7-40AE-9665-F052E2415FB5.jpeg

追加完了したら、エージェントのプレイグラウンドでテストしてみます。
回答自体は悪くないです。

35F48F86-E2AE-4DE5-B6FA-E7BCFC5A949C.jpeg

精度評価

Amazon Bedrockのエージェントのプレイグラウンドで試した感じ、
精度は良さげな気がしますが、さすがにそれだけでは判断できませんので、Amazon BedrockのEvaluations(評価)機能を使ってみます。

マネコンからだと、こちらです。モデルの評価もできますが、今回はRAGを選んでCreateします。

A20695A8-4BF2-4F4E-A13B-31B1F63FE4E1.jpeg

名前は任意にしましょう。modelはClaude3.7 Sonnetにしましょう。

3AD3AF65-DE4E-42BF-92ED-0E6C7D2E467F.jpeg

Inference sourceからBedrock Knowledge Baseを選んで、先ほどできたナレッジベースを選びましょう。Evaluation typeは検索と応答生成にして、回答生成モデルもClaude3.7 Sonnetにします。

7D342575-816C-4E8F-BCFC-F30D21C22197.jpeg

評価メトリクスはたくさんありますが、今回はあくまで精度の評価のため、Quality(品質)から、Helpfulness(有用性)とCorrectness(正確さ)を選びます。

B9627F2A-550A-476A-949F-922C5EB062B4.jpeg

次はデータセットのS3を指定してあげる必要があります。事前に作っておく必要があります。

評価用のデータがjsonlの形式である必要があります、
決まったフォーマットで作る必要があります。

data.jsonl
{"conversationTurns":[{"referenceResponses":[{"content":[{"text":"カグカグです、多分"}]}],"prompt":{"content":[{"text":"KAGのマスコットキャラはなんですか?"}]}}]}

今回は実際に普段評価に利用されているデータなので、お見せすることができません。

S3に評価データ評価レポート出力するためのフォルダを作っておきます。

904FC7D8-4CBB-4423-BA54-D48BA0D26434.jpeg

その後、このバケットのアクセス許可のCross-Origin Resource Sharing (CORS)に下記の設定を追記します。

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]

できたら、評価データレポートの出力フォルダを指定します。

F09D3581-A196-4B65-82D5-E29C785870C0_4_5005_c.jpeg

IAMは一旦新規で作って、その後Createして終わりです。

しばらくしたら元の画面に戻されて、statusがIn progressのレポートが作られました。

F6ACD5A7-9F14-4226-BD58-D8935AB2C943_4_5005_c.jpeg

体感時間30分後、レポートができました。

C3A42A71-E2EA-4147-ADF9-43DD4CEA1294.jpeg

レポートの結果がこちらです。
正確さが低めなのはデータセット設定の問題です。有用性が0.72はOpenSearch利用したナレッジベースと近い数値をたたき出しているので、結構いいのではと感じています。

D931938B-84FE-427D-8D89-D1705DDA2417.jpeg

結論

S3 Vectors、結構いけるんじゃないかと思います。安さは正義ですね!
まだプレビューだから、すぐにCDKなどでIaCできないかもしれないですが、これからナレッジベースを作る際に、もしハイブリッド検索が必要なければ、個人的にはかなり上位候補に来ます。
正式リリースが楽しみです。

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?