Amazon Bedrockの特徴と社内活用事例について紹介します

2025年2月21日 富士通株式会社 ジャパン・グローバルゲートウェイ  上田 裕之
富士通株式会社 ジャパン・グローバルゲートウェイ  大西 智博

はじめに

AWSでは2024年6月に行われたAWS Summit Japan[1]にて、生成AIがキーテクノロジーとして掲げられており、2023年9月にリリースされたAmazon Bedrockは、AWSが提供するフルマネージドの生成AIサービスとして特に注目を浴びています。

本記事では、現在急速に利用が拡大している生成AIサービス Amazon Bedrock(以下Bedrockと表記)について、サービスの特徴と活用事例を紹介します。

Amazon Bedrockについて

Bedrockは2023年9月に一般提供が開始された生成AIのフルマネージドサービスです。
Claudeを提供するAnthropic社やLlamaを提供するMeta社など、様々な大手AI企業が提供する基盤モデル(Foundation Model、以下FMと表記)を単一のAPI経由で使用できるサービスです。
利用可能なFMのラインナップについても拡充を続けており、お客様の生成AIを通じた価値創出を支援します。

また、要件に応じてカスタマイズすることも可能です。
例えば社内のチャットボットとして利用する際に用いられることの多い検索拡張生成(以下RAGと表記)システムを構築するための機能である「Knowledge Bases for Amazon Bedrock」や、悪質なプロンプト(LLMに与える命令文)を拒否するように応答に制限を設ける機能である「Guardrails for Amazon Bedrock」が提供されています。

生成AIアプリケーションを利用する際に注意すべきポイントとして、データ保護の観点が挙げられます。与えたデータやプロンプトから、外部に知られてはいけない秘密情報が学習ソースとして利用され、情報漏洩に繋がる危険性があるということです。
Bedrockでは、RAGシステムを構築した際やファインチューニングを利用してFMをカスタマイズした際など、いずれにおいてもベースモデルの改善等にユーザからのインプット情報が利用されることはありません。ユーザがデータをフルコントロールすることが可能なため、開発者は生成AIアプリケーションの機能開発に集中することができます。

現在、米国東部(us-east-1)リージョンおよび米国西部(us-west-2)リージョンでは7社から合計40種類以上のFMを選択することができ、豊富な選択肢の中から、システムの特性に合わせて柔軟にFMを選択することが可能です。

以上のように、Bedrockは企業が生成AIを導入する際に必要とする機能要件やセキュリティ要件を満たせるように提供されています。
次に、2024年10月時点で利用できるFMや代表的な機能を次に挙げていきます。

(1)Bedrockから基盤モデルを利用できるプロバイダー一覧

Bedrockには様々なプロバイダーがFMを提供しており、ラインナップは継続的に拡充されています。
2024年10月時点で利用できるプロバイダーの一覧を下記に記載していますが、すべてのプロバイダーのFMを利用できるのは米国東部(us-east-1)リージョンおよび米国西部(us-west-2)リージョンのみのため、東京リージョンでの利用可否も右列に記載しています。
また、テキストをベクトルに変換するEmbeddingモデルは、AmazonとCohereの2社から提供されており、Knowledge Bases for Amazon BedrockによるRAGシステムを構築する際は、2社から提供されるモデルのいずれかを選択する必要があります。
最新の情報については、AWS公式ページをご確認ください。[2][3]

プロバイダー代表的なFMと概説東京リージョンでの利用可否
Amazon
  • Amazon Nova
    AWS re:Invent 2024 において発表されたAmazonが独自に開発したFM
  • Titan Text
    テキスト生成用の大規模言語モデル。
    Lite, Express, Premierのカスタマイズ性等が異なる3種類のモデルを提供している。
  • Titan Image Generator
    テキストベースの説明に一致するイメージを作成する画像生成モデル。
    リファレンスイメージや自動背景削除機能など、出力イメージの調整に便利な機能が提供されている。
△(Amazon Novaは利用不可)
Anthropic
  • Claude
    推論、数学、コーディング、英語および非英語の言語の流暢さにおけるベンチマーク評価で高い性能を発揮する大規模言語モデル。Opus, Sonnet, Haikuの3種類のモデルを提供しており、知性、応答スピード等のバランスが適切に選択できるようになっている。[4]
AI21 Labs
  • Jamba
    膨大なテキストでトレーニングされているため、汎用性の高いテキスト生成が可能なモデル。
    同社のLLMであるJurassic-2の後継モデルとしてリリースされた。現時点で日本語は非サポートである。[5]
Cohere
  • Command R+
    会話型のインタラクションと長いコンテキストのタスク向けに最適化された大規模言語モデル。
    弊社が提供する大規模言語モデルである「Takane」は本モデルをベースに作成されている。[6][7]
Meta
  • Llama
    ファインチューニングによるカスタマイズも可能なオープンソースの大規模言語モデル。
    1Bおよび3Bモデルはエッジデバイス等で利用できる軽量なモデルであり、11Bおよび90Bモデルは視覚情報を解釈できるマルチモーダル機能を備えている。[8]
Mistral AI
  • Mistral
    テキスト要約や分類、コード生成等に適した大規模言語モデル。
    Mistral Large 2 (24.07)モデルのみ日本語に対応している。[9]
Stability AI
  • Stable Image
    入力されたテキストからイメージを生成するオープンソースの画像生成モデル。
    ファインチューニングは非対応であり、モデルをカスタマイズすることはできない。現時点で日本語は非サポートである。[10]

(2)Bedrockが提供する代表的な機能

Bedrockでは、企業の生成AI活用を支援する包括的な機能が提供されています。
代表的なものを以下の表に記載していますが、表に記載している機能以外にも、Bedrockから利用できるFMで実際にチャットや画像生成を試すことができる「プレイグラウンド」や、複数のプロンプトを送信し非同期で応答を生成することで大量のリクエストを効率的に処理する「バッチインターフェース」が提供されています。

また、「カスタムモデル」や「ウォーターマーク検出」については、現在米国東部(us-east-1)リージョンおよび米国西部(us-west-2)リージョンのみで提供されており、東京リージョンからは利用できない機能のため記載していませんが、ファインチューニングや透かしの確認に利用する重要な機能のため、要件次第では米国リージョンでBedrockを利用することも検討が必要です。

機能名説明
Knowledge Bases for Amazon Bedrock(以下ナレッジベースと表記)[11]プライベートデータソースからのコンテキスト情報をFMおよびエージェントに提供して、より正確で関連性の高いカスタマイズされた応答を生成するRAGシステムを実装することができる。RAGシステムの挙動に影響するパラメータの例を以下に挙げる。
  • データソース
    FMに提供するプライベートデータソースを指定する。Amazon S3(以下S3と表記)バケット以外のデータソース(Web CrawlerやSalesforceなど)もプレビュー機能として指定できるようになっており、データソースに設定できるパラメータも選択するデータソースによって異なる。
  • チャンキングと解析設定
    ソースデータをベクトルデータベースに保存する際の分割サイズを指定する。Bedrockで定義されるデフォルトサイズ以外にも、ユーザ指定の固定サイズやセマンティックに基づいた分割、チャンキングしない設定も選択できる。チャンキングの設定次第でハルシネーションの生成率にも影響を与えるケースがある。
  • 埋め込みモデル
    データを変換する埋め込みモデルを指定する。指定したFMによりソースデータは埋め込みに変換され、指定するベクトルデータベースに保存される。現在はAmazonとCohereが提供する埋め込みモデルを指定することができる。
  • ベクトルデータベース
    埋め込みを保存するベクトルデータベースを指定する。ナレッジベースと共に新規でAmazon OpenSearch Serverlessでベクトルストアを作成することも可能だが、あらかじめ作成したベクトルストアとしてAmazon OpenSearch Serverless, Amazon Aurora, Pinecone, Redis Enterprise Cloudも選択することが可能。
Agents for Amazon Bedrock(以下エージェントと表記)[12]ユーザが入力したプロンプトを複数のステップに分解することで、設定したアクショングループやナレッジベースから必要なものにアクセスして最終的な応答を提供するオーケストレーション機能。また、エージェントは複数のやりとりを記憶しており、過去のやりとりからタスクの精度を高めるように自動で改善されている。
  • アクショングループ
    ユーザのプロンプトに対して、呼び出すAWS Lambda(以下Lambdaと表記)関数やAPIを定義することで、独自のビジネスロジックを実現する。
    (例:DBへの照会やレコードの追加・削除操作など)
  • ナレッジベース/ガードレール
    あらかじめ登録しておいたナレッジベースやガードレールをエージェントに設定する。ナレッジベースは複数設定することが可能で、エージェント向けのナレッジベースの指示を与える(例:○○を実施する場合はこのナレッジベースを呼び出してください。など)ことで該当するナレッジベースを呼び出すように設定できる。
  • 詳細プロンプト
    前処理、オーケストレーション、後処理、ナレッジベースの回答生成の4つのタイミングでエージェントの動作を制御することで、ユーザからの複雑な問い合わせに対して、適切なアクションやナレッジベースを呼び出し、正確で包括的な回答を生成することができる。
Guardrails for Amazon Bedrock(以下ガードレールと表記)[13]ユーザの入力やモデルの応答から有害なコンテンツをブロックすることで、LLMの安全性やユーザプライバシーを保護する機能。
ブロックする単語やフレーズをカスタマイズすることも可能で、企業のポリシーに沿った「責任あるAI」をビジネスに活用することができる。
  • コンテンツフィルターの設定
    プロンプトのフィルター強度および応答のフィルター強度をヘイトや暴力などカテゴリ別で指定することができる。
  • 拒否されたトピックを追加/Add word filters/Add sensitive information filters
    拒否するトピック、単語、センシティブな情報(個人情報など)を指定する設定。
    ここで定義した内容に関するプロンプトやベースモデルからの応答は、事前に定義した拒否メッセージが表示される。

(3)Amazon SageMakerとの比較

AWSから提供される機械学習サービスの代表的なものとしてAmazon SageMaker(以下SageMakerと表記)が挙げられます。
BedrockとSageMakerの違いについては下記のように整理できますが、SageMakerで構築したモデルをBedrockから利用するという使い方もできたり、BedrockでもFMに対してファインチューニングができるようにアップデートされていますので、下記の表に従って厳密に使い分けるのではなく、要件から必要な機能を精査して、時には組み合わせながら使うなどの検討も必要です。

項目名BedrockSageMaker
課金体系入出力トークンあたりの課金利用したインスタンスへの時間課金(Saving Plans適用も可能)
利用形態用意されたFMを利用するフルマネージドサービスMLモデルを構築・トレーニング・デプロイするためのインフラストラクチャ等のツールを提供するサービス
ユースケース生成AIを活用する際のスモールスタートとして利用する。
すべてのFMを単一のAPIを介して呼び出せるため、アプリケーションへの組み込みが容易。
Bedrockではカバーできない厳密なセキュリティ要件や、独自モデルの構築要件がある際に利用する。

事例①:Amazon BedrockとAWS Lambdaの連携による、IaCセキュリティ改善提案の自動化システム

Terraformで作成されるリソース配備の定義ファイルであるtfファイルおよびtfvarsファイルに対して、Aqua Security社のOSSツールであるtfsecを用いてセキュリティ脆弱性を診断します。明らかになった脆弱性に対して、Bedrockから利用できるLLMであるClaude 3.5 Sonnetを利用して、脆弱性の解決法を提案させます。本システムは、社内でのIaC活用の効率化を目的に開発されたものであり、特定のお客様向けに実装されたものではありません。

(1)使用手順/構成図

使用手順

  • tfファイルとtfvarsファイルをS3に格納
  • 解析用Lambda関数を起動
  • S3から結果のアウトプットをダウンロード

構成図

このシステムでは下の構成図のように複数のLambda関数を自動連携させています。

  • 解析用Lambda関数の起動
    tfsecを用いてIaCコードの脆弱性を解析します。
  • Bedrock連携用Lambda関数からBedrockのAPIを呼び出すことによる解決策の提示
    解析結果は、Bedrock連携用のLambda関数に送られ、Bedrockと連携して、明らかになった脆弱性に対する解決策が提示されます。
  • CSV変換用Lambda関数による結果の整形
    最後に、結果ファイルはCSV変換用のLambda関数によってCSV変換され、利用者が読み取りやすい形式で提供されます。

この3つのLambda関数の起動は連携しているため、最初のLambda関数の起動で、IaCコードのセキュリティ解析から改善提案、そして結果の整形まで自動で連携し、最終的なアウトプットを得ることができます。

(2)システムを利用することによるメリット

このシステムを用いることで得られる具体的なメリットを列挙します。
解析と改善提案の自動化によるメリットと、Bedrockを使用することによるメリットが考えられます。
下記の表から、読み取れるようにIaCを利用するプロジェクトにおいてQCDを高めることに繋がります。

項目理由
レビュー工数の削減レビュアを探す時間、レビュー実施までの調整時間、修正時間を削減できるため
IaCベストプラクティスに準拠した品質の均質化・担保レビュアの経験やスキルによるレビューの差異をなくすことができるため
リソース作成前にセキュリティ脆弱性を検知可能デプロイ前のIaCの定義ファイルをインプットにしているため
侵入のリスクがないインターネットアクセスのないAWS上のクローズド環境で動作しているため
サードパーティに顧客情報が開示されることがないBedrockは入力データを学習に利用しないため

(3)Bedrock・Lambdaの詳細

Bedrockの呼び出し方や、呼び出す際の工夫について解説します。
まずBedrockを呼び出す関数を定義し、プロンプトを引数として受けとります。プロンプトはモデルに対して送信する入力データのことです。このデータは生成AIが応答を生成するための基礎となる情報です。

次にBedrock.invoke_model()を使用して、Bedrockのモデルを呼び出します。このメソッドではmodelIdというパラメータで使用するモデルのIDを指定します。今回は、最新のモデルであるClaude 3.5 SonnetのIDを指定します。このモデルは最新の技術を駆使して高精度な応答を生成することができます。
モデルに送信するデータの中で、特に重要なパラメータの一つとしてtemperatureがあります。これは生成される応答の多様性を制御するパラメータです。temperatureは応答の多様性を制御するパラメータで、0に近いほど確定的、1に近いほど創造的な応答になります。
今回は、回答生成のために参照しているURLの数が一番多かった0.5のパラメータを採用しています。
0.5のtemperature設定は、バランスのとれた実用的な応答を得るのに適しています。

プロンプトではClaudeに対して、セキュリティ問題を解決するAWSエキスパートであると役割を与えております。
生成AIに特定の役割や視点を与えることで、回答の内容やスタイルを調整することができます。これによりAIの応答がよりターゲットにあったものになるため、効果的なコミュニケーションが期待できます。例えば、企業がインフラストラクチャをIaCでコードとして管理する際に、AWSエキスパートとしての役割を生成AIに与えることで、セキュリティ問題に対する具体的かつ専門的な解決策をAWSに合わせて提案することができます。

生成AIはリソースの暗号化設定や、セキュリティグループの適切な設定、ログ監視など様々な観点で、AWSのベストプラクティスに基づいたセキュアな状態で環境をデプロイするように改善策を提案します。
また、その回答を容易に実施できるようにステップバイステップの手順という形式で回答を提案できるように投げかけます。「ステップバイステップの手順」と指定していますが、これはClaudeに与えるプロンプトのベストプラクティスとして案内されている内容の一部であり、より具体的に手順化された明確な解決策をもらうことができます。

このように生成AIに役割を与え、ベストプラクティスに沿ったプロンプトを与えることで、具体的で実践的なアドバイスが得られ、IaCセキュリティ対策が一層強化されることが期待できます。

tfsecで検出された脆弱性の数が多い場合、Bedrockへの同時呼び出し制限にかかりエラーを出力する場合があります。
Lambda関数とBedrockの連携においてこのようなエラーに遭遇した際は、エクスポネンシャルバックオフやジッターを挿入することで回避することが可能です。
一方で、Lambda関数の最大実行時間である15分を超過しないように調整する必要もあり、細かなチューニングが求められるポイントでもあります。

(4)実行結果

最終的にCSVは以下のように出力されます。

事例②:Knowledge Bases for Amazon BedrockおよびAgents for Amazon Bedrockを利用したRAGシステム

次に、ナレッジベース、エージェント、ガードレールを組み合わせて、RAGを取り入れた検索システムを紹介します。
データソースとして従業員のクラウドスキルセットに関して記載されたExcelファイルをS3に格納し、これを埋め込みに変換した後ベクトルDBに保存することでLLM(今回利用するのはClaude)にセマンティック検索で回答を生成させます。
どのベクトルDBに格納されている情報を参照すればいいかは、エージェント経由でLLMに判断させるように構成しています。
本システムも社内利用用途で開発されたものであり、事例①と同様、特定のお客様向けに実装されたものではありません。

(1)構成図

事例①と同じく東京リージョンで構築しています。
それぞれのS3バケットに格納されているファイル群を、ナレッジベースを用いて埋め込みに変換します。作成した各ナレッジベースに対してまとめて問い合わせできるようにエージェントを用いて連携させ、エージェントを設定する際にガードレールを併せて設定することで、悪質なプロンプトへの応答を拒否するように設定します。
ユーザからエージェントへプロンプトを与えるだけで適切なベクトルDBにアクセスし、回答が生成されます。

(2)ナレッジベースによるRAGの構築

ナレッジベースを用いてRAGを構築します。
今回はデータソースとしてS3を選択しますが、いくつかのデータソースがプレビュー機能として提供されています。
S3の場所は他のアカウントを指定することも可能で、複数のS3バケットをデータソースとするRAGを構築することもできます。
今回はナレッジベースが3種類必要なので、単一のS3をデータソースとするナレッジベースを3種類作成しました。
主な設定値は下記の表に従って設定し、他の項目は名前など必須の項目を除いてデフォルトで設定しています。

項目設定値
データソースAmazon S3
S3のURI<各クラウドごとのS3バケットを指定>
Chunking and parsing configurationsCustom – チャンキングなし
埋め込みモデルTitan Embeddings G1 – Text v1.2
ベクトルデータベース新しいベクトルストアをクイック作成
(OpenSearch Serverlessが新規作成されます)

(3)ガードレールによる応答拒否の設定

ガードレールによりコンテンツフィルタを設定します。ヘイトや侮辱的な内容など一般的にフィルタされるべきトピックは、各項目毎に「なし」、「低」、「中」、「高」の4段階でフィルタを選べます。このほかにも個人情報に関する内容をデータの種類や正規表現で指定できたり、トピックや語句に応じた細かなフィルタ設定も可能です。
ガードレールが正しく動作した際の回答はあらかじめ決めることができ、プロンプトがブロックされたケースと応答がブロックされたケースでそれぞれ別の拒否メッセージを設定できます。

(4)エージェントへの組み込み

作成したナレッジベースをエージェントに組み込みます。
「エージェント向けの指示」にエージェントが実行すべきタスクを指示することで、エージェント全体としての役割を明確にします。今回はクラウドスキルを保有する従業員を検索するシステムであることを指示として与えました。
ナレッジベースは事前に作成した各クラウドスキル保有者ごとのナレッジベースを追加しており、これらにも指示を与えることができます。
「○○について尋ねられたときはこのナレッジベースから回答してください」と指示を与えることで、各々のナレッジベースが果たすべき役割を明確化します。
これらの指示を与えることで、エージェントは自然言語での問い合わせに対して、その都度適切な処理を自ら選択して回答を返すようになります。

エージェントに紐づけられるナレッジベースのクォータは、デフォルトで2に設定されています。
3つ以上のナレッジベースをエージェントに紐づける際には、AWSに上限緩和を申請する必要があります。

ガードレールもエージェントに設定します。こちらは特に複雑な設定の必要がありませんので、作成したガードレールをそのまま組み込んで動作させます。

(5)エージェントの動作確認

エージェントに質問して挙動を確認します。

ナレッジベースの動作確認

ナレッジベースの動作を確認するために、マルチクラウド案件に対応するチームを編成するように指示します。
与えるプロンプトは以下の通りです。
「マルチクラウド案件に対応するために3人のチームを編成します。 AWSの有識者2人とAzureの有識者1人によるチームを編成してください。 また、チームには1人は入社10年目以上の社員を含め、残り2名は入社5年目以内の従業員で編成してください。」

要望通りにメンバーが選定されていることが、エージェントの回答から確認できます。
どのようなステップを踏んでこの回答を返しているのかトレースすることもでき、今回与えたプロンプトに従い、エージェントはAWSとAzureのクラウドスキルを持つ従業員をそれぞれのナレッジベースから検索していることがわかります。

構成図に照らし合わせると、赤い点線の範囲でプロンプトを処理して回答を返しています。

ガードレールの動作確認

ガードレールの動作を確認するために、検索する従業員の人種を指定します。
ガードレールは現状日本語では動作しにくいので、英語でプロンプトを入力します。
今回は「黄色人種の従業員について教えてください」というプロンプトを与えています。
ガードレールによって設定された拒否メッセージが返されていることがわかります。

おわりに

このコラムでは、Bedrockの概要や機能、活用事例についてご紹介しました。
機能追加やFMの拡充などアップデートが頻繁に実施されているため、本コラムがあくまで2024年12月時点の情報で執筆されている旨、ご承知おきください。
導入を検討される際には、実際にAWSマネジメントコンソールにアクセスし、現時点でどういったFMや機能が使えるかを検証することをオススメします。

12月にラスベガスで開催されたAWS re:Invent 2024においては、様々な発表がありました。
本コラムでご紹介したものも含め、代表的なものを以下に列挙します。

  • Tanium2とBedrockのソフトウェア最適化による、基盤モデル向けのレイテンシ最適化機能「Latency-optimized interface」の提供開始
  • 頻繁に使用されるプロンプトをAPIがキャッシュする「prompt caching」機能の提供開始
  • Bedrockがプロンプトの内容に応じて最適な基盤モデルを選択して最適な基盤モデルを選択する「Intelligent Prompt Routing」の提供開始
  • Amazonが提供する新たなFM「Amazon Nova」の登場
  • サードパーティモデルをBedrockから利用できる「Amazon Bedrock Marketplace」によって利用できるモデル数を100以上に拡充

これ以外にも多くのアップデートが発表されており、東京リージョンで利用できる機能も日々増え続けています。

本記事でBedrockの基礎をおさえていただき、アップデートに伴う機能追加等を取り入れながら、読者の皆様が生成AIを活用した価値創出を達成できることを願っています。

最後までお読みいただきありがとうございました。

引用元

[1] AWS Summit Japan | 2024年6月20日(木), 21 日(金)
https://aws.amazon.com/jp/summits/japan-2024/

[2] Amazon Bedrock でサポートされている基盤モデル
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/models-supported.html

[3] AWS リージョンによるモデルサポート
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/models-regions.html

[4] Claude入門
https://docs.anthropic.com/ja/docs/intro-to-claude

[5] Jamba-1.5 models
https://docs.ai21.com/docs/jamba-15-models

[6] Command R+
https://docs.cohere.com/docs/command-r-plus

[7] 世界一の日本語性能を持つ企業向け大規模言語モデル「Takane」を提供開始
https://pr.fujitsu.com/jp/news/2024/09/30.html

[8] Llama Models
https://www.llama.com/docs/model-cards-and-prompt-formats

[9]Mistral AI | Frontier AI in your hands
https://docs.mistral.ai/

[10] Image Models
https://stability.ai/stable-image

[11] Knowledge Bases for Amazon Bedrock
https://aws.amazon.com/jp/bedrock/knowledge-bases/

[12] Agents for Amazon Bedrock
https://aws.amazon.com/jp/bedrock/agents/

[13] Guardrails for Amazon Bedrock
https://aws.amazon.com/jp/bedrock/guardrails/