Amazon Bedrock
Amazon Bedrockとは
• Amazon Bedrockは、主要なAI企業やAmazonが提供する高性能な基盤モデル(FMs: Foundation Models)を、統合されたAPIを通じて利用可能にするフルマネージドサービスです。
• セキュリティ、プライバシー、責任あるAIを備えた生成AIアプリケーションを構築するための幅広い機能を提供します。
• サーバーレスな体験により、インフラストラクチャの管理なしに迅速に開始でき、独自のデータでモデルをプライベートにカスタマイズし、AWSツールを使用してアプリケーションに統合・デプロイできます。
AWSやClaudeなどのAIモデルをAWSの統合APIから利用できるサービスってことか
セキュリティやプライバシー保護機能あり
Amazon Bedrockでできること
• プロンプトと設定の実験: APIまたはコンソールのテキスト、画像、チャットプレイグラウンドを通じて、さまざまなモデルや設定でプロンプトを送信し、応答を生成できます。
• データソースによる応答生成の強化(RAG): データソースをアップロードしてナレッジベースを作成し、そこから情報を検索してモデルの応答生成を強化できます。
• AIエージェントの構築: 基盤モデルを使用し、APIコールを行い、必要に応じてナレッジベースをクエリして、顧客のためにタスクを推論し実行するエージェントを構築できます。
• トレーニングデータによるモデルの調整(カスタマイズ): ファインチューニングや継続的事前学習などの技術を使用して、独自のトレーニングデータでAmazon Bedrockの基盤モデルをカスタマイズし、特定のタスクやドメインでのパフォーマンスを向上させることができます。
• FMのレイテンシー最適化: レイテンシー最適化された推論(プレビュー機能)により、AIアプリケーションの応答時間を短縮し、応答性を向上させます。
主要な用語
• 基盤モデル (FM): 多数のパラメータを持ち、大量の多様なデータで訓練されたAIモデルです。テキストや画像を生成し、入力を埋め込みに変換できます。
• ベースモデル: プロバイダーによってパッケージ化され、すぐに使用できる基盤モデルです。
• モデル推論: 基盤モデルが与えられた入力(プロンプト)から出力(応答)を生成するプロセスです。
• プロンプト: モデルに適切な応答または出力を生成させるための入力です。
• 推論パラメータ: モデル推論中に調整できる値で、応答の多様性や長さを制御します。
• プレイグラウンド: AWSマネジメントコンソール内のユーザーフレンドリーなグラフィカルインターフェースで、モデル推論の実行を試すことができます。
• 埋め込み: 入力を数値のベクトル(埋め込み)に変換することで情報を凝縮するプロセスです。
• 検索拡張生成 (RAG): データソースから情報をクエリおよび取得し、生成されたプロンプト応答を強化するプロセスです。
• モデルカスタマイズ: トレーニングデータを使用してベースモデルのモデルパラメータ値を調整し、カスタムモデルを作成するプロセスです。
• ハイパーパラメータ: モデルカスタマイズのために調整できる値で、トレーニングプロセスと結果として得られるカスタムモデルを制御します。
• モデル評価: ユースケースに最適なモデルを決定するために、モデルの出力を評価・比較するプロセスです。
• プロビジョニングされたスループット: モデル推論中に処理されるトークンの量と/または速度を増やすために購入するスループットレベルです。
Amazon Bedrockの始め方
-
AWSアカウントのサインアップ: まだアカウントがない場合はAWSアカウントを作成します。
-
IAMロールの作成と権限設定: Amazon Bedrockを使用するために必要な権限を持つIAMロールを作成します(例:
AmazonBedrockFullAccess
AWS管理ポリシーの割り当て)。 -
基盤モデルへのアクセス要求: 使用したい基盤モデルへのアクセスをAmazon Bedrockコンソールからリクエストします。アクセスには数分かかる場合があります。
-
機能の探索(チュートリアル):
◦ コンソールでプレイグラウンドを使用して基本的なプロンプトを実行し、モデル応答を生成します。
◦ AWS APIを通じてAmazon Bedrock操作へのアクセスを設定し、APIコールを試行します(AWS CLI、AWS SDK for Python (Boto3)、Amazon SageMaker AIノートブックなど)。
利用可能なモデル
Amazon Bedrockは、以下のプロバイダーから多様な基盤モデルをサポートしています。
• Amazon Nova モデル
• Amazon Titan モデル (例: Titan Text G1 - Express, Titan Image Generator G1 V1)
• Anthropic Claude モデル (例: Claude 3.5 Sonnet, Claude Instant)
• Cohere モデル (例: Command R+, Embed)
• AI21 Labs モデル (例: Jamba, Jurassic-2)
• Meta Llama モデル (例: Llama 3, Llama 3.1, Llama 3.2)
• Mistral AI モデル (例: Mistral Large, Mixtral 8x7B)
• Stability AI モデル (例: SD3 Large, Stable Diffusion XL)
Amazon Titanモデル
Amazonが提供する高性能な基盤モデル (FM) のファミリーであり、多様なAIタスクに対応できるよう設計されています
Amazon Titan Text モデル
Amazon Titan Textモデルは、主にテキスト生成タスクに特化しています.
テキストを入力として受け取り、テキストまたはチャットの形式で出力を生成します。 推論時のストリーミング出力をサポートしています。微調整 (fine-tuning) や継続的な事前学習 (continued pre-training) を使用して、特定のタスクやドメインに合わせてモデルのパフォーマンスを向上させることができます。Amazon Bedrock Guardrails と連携して、有害なコンテンツや不適切なコンテンツのフィルタリング、機密情報のマスクなどを適用できます
Amazon Titan Image Generator モデル
テキストプロンプトから画像を生成したり、既存の画像を編集します。テキストまたは画像をインプットとして受け取り、画像を生成します
Amazon Titan Embeddings モデル
テキストや画像を数値ベクトル(埋め込み)に変換し、類似度計算や情報検索などのタスクを可能にします。 テキスト情報を数値ベクトルに凝縮し、セマンティック検索、レコメンデーション、パーソナライゼーション、分類、ナレッジベースの作成など、情報検索と分析のユースケースに利用。
- Text Embeddings: テキストを入力として受け取り、埋め込み(数値ベクトル)を出力します。
- Multimodal Embeddings: テキスト、画像、またはその両方を入力として受け取り、埋め込みを出力します
Amazon Novaモデル
マルチモーダル対応の基盤モデル (FM) のファミリーです。これらのモデルは、テキスト、画像、動画などの多様な入出力モダリティをサポートし、幅広い生成AIアプリケーションに利用できるよう設計されています。
地域: us-east-1、us-east-2*、us-west-2* リージョンで利用可能です(*はクロスリージョン推論を示します)
今のところ日本からは使えない様子
Amazon Nova Pro
テキスト、画像、動画をインプットとして受け取り、テキストを生成します。動画をメッセージの一部として送信し、モデルに動画を説明させることができます
Amazon Nova Reel
テキストと画像をインプットとして受け取り、動画を生成します。
Anthropic Claudeモデル
- Claude 2.x および Claude Instant モデルは、テキストを入力として受け取り、テキストまたはチャットを生成します。
- Claude 3 および Claude 3.5 モデルは、テキストと画像をインプットとして受け取り、テキストまたはチャットを生成するマルチモーダル対応です
マルチモーダルプロンプト:
- 画像とテキストを単一のプロンプトに結合できます.
ツール利用 (Function Calling):
- Claude 3 モデルで利用可能で、モデルがメッセージに応答を生成する際にツール(関数)にアクセスできるようにします.
- モデルがツールを必要と判断した場合、tool_use コンテンツブロックを返し、ツールを実行して結果をモデルに渡すことで応答を生成します
Claudeのファンクションコール機能とは?
目的
• 大規模言語モデル(LLM)の能力を外部ツールと連携して拡張する機能です。
• モデルが直接アクセスできない情報(例:最新の天気、データベースの情報)や、実行できない操作(例:メール送信、計算)を外部ツールを通じて実行し、その結果を使ってより正確で有用な回答を生成できるようにします。
対象モデル
• Anthropic Claude 3モデル以降(Claude 3 Sonnet、Claude 3.5 Sonnet、Claude 3 Haiku、Claude 3 Opusなど)で利用可能です。
仕組み(基本的なフロー)
- モデルへのメッセージとツール定義の送信:
◦ ユーザーは、モデルに解決してほしいメッセージと一緒に、**利用可能なツールの定義(ツールの名前、機能、必要な入力など)**を送信します。
◦ Amazon Bedrockでは、ConverseまたはConverseStream APIの使用が推奨されています。 - モデルからのツール実行リクエストの取得:
◦ モデルが外部ツールが必要だと判断すると、stopReasonフィールドがtool_useに設定された応答を返します。
◦ この応答には、モデルが実行を要求しているツールの名前と、そのツールに必要な入力パラメータがtoolUseフィールドに含まれています。 - ユーザーによるツールの実行:
◦ ユーザー側のアプリケーションコードが、モデルから指示されたツール(API、データベース、Lambda関数など、実際のツール実装はユーザーが用意)を、指定された入力パラメータで実行します。
◦ もしツールの実行中にエラーが発生した場合、toolResultフィールドのstatusを"error"に設定してモデルに伝えることもできます。 - ツール実行結果のモデルへの返送:
◦ ツールの実行結果が得られたら、その結果と元のツールリクエストのID(toolUseId)をtoolResultコンテンツブロックとして含んだユーザーメッセージをモデルに再送信します。 - モデルによる最終応答の生成:
◦ モデルは、受け取ったツール実行結果を利用して、元のユーザーの問いに対する最終的な応答を生成します
指定されたツールを利用するのは、ユーザーのアプリ側でやらないといけない
主要機能と概念
1. プロンプトエンジニアリング
• LLMから望ましい応答を得るためにテキスト入力を最適化する手法です。
• プロンプトの構成要素: タスク/指示、コンテキスト、デモンストレーション例、入力テキストなどを含みます。
• Few-shot prompting vs. Zero-shot prompting: 複雑なタスクには例(few-shot)を含めることでパフォーマンスが向上します。
• プロンプトテンプレート: 分類、要約、Q&Aなどのユースケースに対応する「レシピ」を提供します。
• インテリジェントプロンプトルーティング(プレビュー): 単一のサーバーレスエンドポイントを使用して、同じモデルファミリー内の異なる基盤モデル間でリクエストを効率的にルーティングし、応答品質とコストを最適化します。
Zero-shot Prompting (ゼロショット・プロンプティング)
• 定義: プロンプト内に具体例を一切含まず、モデルにタスクを実行させる方法です。
◦ モデルが自身の既存の知識と、与えられた指示のみに基づいて応答を生成します。
◦ 「ゼロショット」とは、学習例がゼロであることを意味します。
• 仕組み: モデルは、ユーザーの質問や指示から意図を直接推論し、学習済みの膨大なデータから最も適切な回答を生成します。
• 例:
◦ ユーザープロンプト: 「次の見出しのセンチメントを、ポジティブ、ネガティブ、ニュートラルのいずれかで分類してください。新しい航空会社がシアトルとサンフランシスコ間に就航し、乗客と投資家の双方に大きな機会を提供します。」
◦ モデルの出力: 「ポジティブ」
◦ この例では、モデルは事前の例なしに、見出しの感情を正しく判断しています。
Few-shot Prompting (フューショット・プロンプティング)
• 定義: プロンプト内に少数の("few")入力と期待される出力のペア(例)を含めることで、モデルにタスクをガイドする方法です。
◦ 「ショット(shot)」とは、入力と出力のペアの例を指します。
◦ モデルはこれらの例からタスクのパターンや期待される形式を学習し、より正確な応答を生成しようとします。
• 仕組み:
◦ ユーザーはモデルに、タスクの指示に加えて、いくつか(3〜5個程度が目安)の具体的な例を提示します。
◦ モデルはこれらの例を「インコンテキスト学習(in-context learning)」として利用し、与えられた新しい入力に対して例と同じ形式で出力を生成します。
◦ 特に複雑なタスクや、モデルが推論しにくい特定の出力形式を求める場合に効果的です。
• 例:
◦ ユーザープロンプト: 「次の見出しのセンチメントを、ポジティブ、ネガティブ、ニュートラルのいずれかで分類してください。以下にいくつかの例を示します:
▪ リサーチ会社が新技術に関する不適切行為の疑惑をかわす。回答:ネガティブ
▪ 洋上風力発電所は反対派の少数意見が減少する中、繁栄し続ける。回答:ポジティブ
▪ 製造工場が州当局による調査の最新の標的となる。回答:」
◦ モデルの出力: 「ネガティブ」
◦ この例では、モデルは提供された例のパターン(見出しと「回答:」形式)に従って感情を分類しています。
項目 | Zero-shot Prompting(ゼロショット・プロンプティング) | Few-shot Prompting(フューショット・プロンプティング) |
---|---|---|
定義 | プロンプト内に具体例を一切含まず、モデルにタスクを実行させる方法。モデルは既存の知識と指示だけで応答を生成。 | プロンプト内に少数の入力と期待される出力のペア(例)を含め、モデルにタスクをガイドする方法。例からパターンを学習し、正確な応答を目指す。 |
「ショット」の意味 | 「ゼロショット」は学習例がゼロであることを意味する。 | 「ショット(shot)」は入力と出力のペアの例を指す。 |
モデルの動作 | 質問や指示から意図を直接推論し、事前学習データから最適な回答を生成。 | 例を「インコンテキスト学習」として利用し、同じ形式で出力を生成。 |
適用場面 | 単純なタスクや一般知識で十分な場合。 | 複雑なタスクや特定の出力形式・スタイルが必要な場合。例を埋め込むテンプレート活用。 |
精度・効果 | 一般的にFew-shotより低い場合がある。 | 例の質と量で応答品質が大きく向上。類似した実例を選ぶと効果的。 |
Anthropic Claudeモデルでの推奨事項 | 特になし。 | 例を<example></example> タグで囲むのが良いプラクティス。プロンプト全体の区切り(Human:/Assistant:)と例内の区切り(例:H:/A:など)を分けるのが推奨される。 |
Amazon Bedrock プロンプトテンプレート機能
プロンプトテンプレートの概要
• 役割: ユーザーがLLMを利用する際に、独自のテキストや少数の具体例(few-shot examples)を入力して使用できるようにする枠組みです
• 目的: LLMが特定のタスクや指示に対して、一貫性、明確さ、簡潔さを持って適切な応答を生成するようにガイドします
プロンプトの主要な構成要素
プロンプトは通常、以下の要素を含みます。
• 指示 (Instruction): LLMに何を実行すべきかを具体的に伝えます。
◦ 例: 「上記のレストランのレビューを1文で要約してください」
• 入力テキスト (Input Text): LLMが操作する対象となる生テキストです
• コンテキスト (Context): モデルが出力を生成する際に利用すべき追加報やキーワード、背景情報、条件を提供します
• デモンストレーション例 (Demonstration Examples): Few-shot promptingで利用され、少数の入力と期待される出力のペアをプロンプト内に含めることで、モデルがタスクのパターンや期待される形式を学習できるようにします
◦ 推奨事項 (Anthropic Claudeモデル):
▪ 例を**<example></example>タグ**で囲むことが良いプラクティスです
▪ 例の中では、プロンプト全体のHuman:やAssistant:と混同しないように、異なる区切り文字(例: H:やA:)を使用することが推奨されます
▪ 最後のfew-shotの例では、モデルに回答を生成させるために、最後のA:をAssistant:として残します
推論パラメータ (Inference Parameters) による応答制御
LLMの応答のランダム性や多様性を制御するために、以下のパラメータを調整できます。
• Temperature: LLMの応答の創造性を調整します。低い値は決定論的な応答を、高い値はより創造的な応答を生成します
• Top K: モデルが次にくるトークンとして考慮する最も可能性の高い候補の数を決定します
• Top P: モデルが次にくるトークンとして考慮する最も可能性の高い候補の累積確率の割合を決定しま
• Response length: 生成される応答の最小または最大トークン数を指定します
• Penalties: 応答の長さ、繰り返されるトークン、トークンの頻度、トークンの種類など、特定の出力に対するペナルティの度合いを指定しま
• Stop sequences: モデルが特定の文字シーケンスを生成したときに、それ以降のテキスト生成を停止するように設定できます
5. プロンプト設計のヒントとベストプラクティス
• セパレータ文字の利用:
◦ Anthropic Claudeモデルでは、API呼び出しに\n\nHuman: {{Query Content}}\n\nAssistant:のフォーマットを含めることが必須です
◦ Titanモデルでは、プロンプトの最後に\nを追加するとパフォーマンスが向上する場合があります
• 出力指示子: モデルが生成すべき出力の制約(形式や長さなど)を詳細に追加することで、望ましい結果を得られます XMLタグを使用して特定の出力形式を指示することも有効です
• ステップバイステップの思考 (Chain-of-Thought): 複雑なタスクや論理的思考が必要な問題には、モデルに「ステップバイステップで考えてください」と明示的に要求することで、より詳細で正確な推論を促すことができます
• デフォルト出力の提供: モデルが回答に自信がない場合に提示すべきデフォルトの出力を指定することで、誤った情報が生成されるのを防ぐことができます
• XMLタグの使用 (Anthropic Claude): 入力テキストを<text></text>などのXMLタグでマークアップすることが推奨されます
• 入力のタグ付け: プロンプト攻撃(例: プロンプトインジェクション)から保護するため、ユーザー入力を特定のXMLタグ(例: <amazon-bedrock-guardrails-guardContent_xyz>)で囲むことが推奨されます。タグサフィックスはリクエストごとに新しくランダムな文字列を使用することが推奨されます。
プロンプト管理機能
Amazon Bedrockには、プロンプトのライフサイクルを効率的に管理するための機能があります。
• コンソールでの利用: プロンプトの作成、表示、テスト、バージョニング、比較をコンソールから行うことができます
◦ プロンプトの作成: 新しいプロンプトを構築し、保存することができます。
◦ 情報の表示: プロンプトの概要やバージョンに関する詳細を確認できます。
◦ テスト: プロンプトの動作をテストし、出力を確認できます。
◦ バージョニング: プロンプトの異なるバージョンを作成し、管理できます。
◦ バージョンの比較: 複数のプロンプトバージョンを並べて比較し、変更点を視覚的に確認できます。
◦ プロンプトの削除: 不要なプロンプトを削除できます。
• APIでの利用: AWS CLIやSDKを介して、プロンプトの管理操作を実行することも可能です。
Top-KとTop-Pはどちらも推論時の次の単語の候補数を調整するパラメータ。
Top‑K は候補数で制御。数は固定→制御が簡単だがバリエーションが限られる。
Top‑P は累積確率で制御。必要な候補だけ使う→柔軟で自然な生成が期待できる。
両方同時に指定することもできるようだ
2. Amazon Bedrock Guardrails
生成AIアプリケーション向けに、使用事例や責任あるAIポリシーに基づいたセーフガードを実装するためのフルマネージドサービスです。 生成AIアプリケーションにセーフガードを実装し、ユーザー入力とモデル応答の両方を評価します。
• サポートされるポリシー:
◦ コンテンツフィルター: 有害なコンテンツ(憎悪、侮辱、性的、暴力、不正行為、プロンプト攻撃)を検出・ブロックします。
◦ 拒否されたトピック: アプリケーションのコンテキストで望ましくないトピックを定義し、検出・ブロックします。
◦ 機密情報フィルター: 個人を特定できる情報(PII)などの機密情報をブロックまたはマスクします。
◦ 単語フィルター: カスタムの単語やフレーズをリストに追加してフィルタリングします。
◦ 画像コンテンツフィルター(プレビュー): モデルの入力および出力における有害な画像を検出・フィルタリングします。
• コンテキスト的根拠チェック: モデル応答におけるハルシネーション(幻覚)を検出しフィルタリングします。
• 適用方法: 推論時にモデルにガードレールを適用するか、ApplyGuardrail
APIを単独で使用してテキストを評価できます。
3. モデル評価
• Amazon Bedrockモデルとナレッジベースのパフォーマンスと有効性を評価します。
評価の種類:
◦ 自動モデル評価ジョブ: プロンプトデータセット(組み込みまたはカスタム)と選択したタスクタイプに基づいて、モデルの推論パフォーマンスを自動的に評価します。
◦ ヒューマンワーカーを使用するモデル評価ジョブ: 人間の評価者がモデルの応答を評価し、フィードバックを提供します。
◦ LLMをジャッジとして使用するモデル評価ジョブ(プレビュー): LLMを評価モデルとして使用して、他のモデルの応答をレビューし採点します。
• 評価タスクタイプ: 一般的なテキスト生成、テキスト要約、Q&A、テキスト分類などがあります。
• メトリクス: 正確性、ロバストネス、毒性、忠実性、コンテキストカバレッジなど。
自動モデル評価ジョブ:
◦ 評価タスクタイプに基づいて、モデルの出力が自動的に評価されます。
◦ プロンプトデータセット: モデル評価には、特定の評価タスク用に用意されたプロンプトデータセットが使用されます。これには以下のものが含まれます。
▪ Bias in Open-ended Language Generation Dataset (BOLD): 一般的なテキスト生成における公平性を評価し、職業、性別、人種、宗教的イデオロギー、政治的イデオロギーの5つのドメインに焦点を当てたデータセットです。
▪ RealToxicityPrompts: 毒性のある言語の生成を評価するためのデータセットです。
▪ WikiText2: 一般的なテキスト生成のプロンプトに使用されるデータセットです。
▪ Gigaword: ニュース記事の見出しで構成され、テキスト要約タスクに使用されます。
▪ BoolQ/Natural Questions: はい/いいえの質問と回答のペア、または実際のユーザーの質問で構成され、質問応答タスクに推奨されます。
▪ カスタムプロンプトデータセット: 独自の要件に合わせたデータセットも使用できます。JSON Lines形式で、モデルへの推論リクエストとして送信されるプロンプトが含まれます。
評価メトリクス (LLM as a judge)
LLMを評価者とする評価ジョブでは、以下の多様なメトリクスでモデルの応答を評価します。
• 論理的整合性 (Logical coherence): モデルの応答における論理的なギャップ、矛盾、不一致を評価します(5段階評価)。
• 忠実度 (Faithfulness): 応答がプロンプトに含まれていない、または容易に推論できない情報を含んでいないかを評価します(5段階評価)。
• 指示への従順性 (Following instructions): モデルの応答がプロンプト内の指示に正確に従っているかを評価します(3段階評価)。
• 完全性 (Completeness):
◦ ground truthあり: プロンプトからの質問すべてにモデルが回答しているか、提供されたground truthを考慮して評価します(5段階評価)。
◦ ground truthなし: ground truthがない場合に、モデルの応答が必要な情報と詳細をすべて含んでいるかを評価します(5段階評価)。
• 正確性 (Correctness):
◦ ground truthあり: モデルの応答が正しいかを評価します(3段階評価)。
◦ ground truthなし: ground truthがない場合に、モデルの応答がタスクに対して正確かつ適切かを評価します(3段階評価)。
• 有用性 (Helpfulness): モデルの応答が、対象読者への適切さ、具体性/簡潔さ、不要なコンテンツの回避、ユーザーのニーズの予測など、複数の要因を考慮してどれほど役立つかを評価します(7段階評価)。
• プロフェッショナルなスタイルとトーン (Professional style and tone): 応答のスタイル、フォーマット、トーンがプロフェッショナルな設定に適しているかを評価します(5段階評価)。
• 可読性 (Readability): 応答の専門用語や言語の複雑さを評価します(5段階評価)。
• 毒性 (Toxicity): 応答に人種差別的、性差別的、またはその他の有害な言語が含まれているかを評価します(Yes/No)。
• 拒否 (Refusal): モデルがユーザーの要求に応答を拒否したかを評価します(Yes/No)。
• ステレオタイプ (Stereotyping): 応答に何らかのステレオタイプが含まれているかを評価します(Yes/No)。
• コンテキストカバレッジ (Context Coverage): ground truth回答の情報がどの程度コンテキストにカバーされているかを評価します。これは、質問に答えるために必要な情報をリトリーバーがすべて取得する能力を測定します。
4. Amazon Bedrock ナレッジベース
• RAG (Retrieval Augmented Generation) を利用して、データソースからの情報で基盤モデルの応答を強化します。
• 機能: ユーザーのクエリに対してデータソースから関連情報を返したり、その情報に基づいて自然言語応答を生成したり、SQLクエリに変換したり、引用を含めたりできます。
• 仕組み: データをベクトル埋め込みに変換し、ベクトルストアに保存します。クエリ時にユーザーのクエリもベクトルに変換され、類似度に基づいて関連するチャンクが検索されます。
• データソース: 非構造化データ(Amazon S3, Confluence, SharePoint, Salesforce, Web Crawler, カスタムデータソース)と構造化データ(Amazon Redshift, AWS Glue Data Catalog)をサポートします。
• ベクトルストア: Amazon OpenSearch Serverless, Amazon Neptune, Amazon Aurora (RDS), Pinecone, Redis Enterprise Cloud, MongoDB Atlas をサポートします。
• カスタマイズ:
◦ チャンキング: データを効率的な検索のために小さなチャンクに分割します(固定サイズ、階層、セマンティック)。
◦ パース: ドキュメントと意味のあるコンポーネントを解釈します(Amazon Bedrockデフォルトパーサー, Amazon Bedrock Data Automation (プレビュー), 基盤モデル)。
◦ カスタム変換Lambda関数: 取り込みプロセスに独自のロジックを注入できます。
Amazon Bedrock ナレッジベースの仕組み
ナレッジベースは、大きく分けてデータ準備と実行時の情報検索・生成の2つのフェーズで動作します。
1. データ準備 (Turning Data into a Knowledge Base)
データソースの接続:
まず、ナレッジベースをサポートされているデータソースに接続します。これにより、生データが利用可能になります。
◦ 非構造化データ: Amazon S3、Confluence (プレビュー)、Microsoft SharePoint (プレビュー)、Salesforce (プレビュー)、Web Crawler (プレビュー)、またはカスタムデータソースをサポートします。テキスト、画像、マルチモーダルなドキュメントに対応しています。
◦ 構造化データ: Amazon Redshift、AWS Glue Data Catalog (AWS Lake Formation) などの構造化データストアに接続し、自然言語クエリをSQLクエリに変換してデータを取得できます。
データインジェストとベクトル化:
- 接続されたデータソースのドキュメントやコンテンツは、効率的なデータ検索のために管理しやすい**「チャンク」に分割**されます。
- その後、選択された埋め込みモデル (例: Amazon Titan Embeddings, Cohere Embed) が各テキストチャンクを数値のベクトル表現 (ベクトル埋め込み) に変換します。
- これらのベクトル埋め込みは、選択されたベクトルストアに保存されます。サポートされているベクトルストアには、Amazon OpenSearch Serverless、Amazon Neptune、Amazon Aurora (RDS)、Pinecone、Redis Enterprise Cloud、MongoDB Atlas があります。
データソースの同期:
データソースに変更 (追加、変更、削除) があった場合、ナレッジベースに再インデックス化するために同期が必要です。同期は増分的に行われます。
2. 実行時の情報検索と応答生成 (Runtime Execution)
- クエリのベクトル化: ユーザーからのクエリ (質問) が、埋め込みモデルを使用してベクトルに変換されます。
- 関連チャンクの検索: ベクトルストアに保存されているドキュメントベクトルとユーザーのクエリベクトルを比較し、セマンティックに類似したチャンクが検索・取得されます。
- プロンプトの拡張: 取得された関連情報 (チャンク) が、ユーザーの元のプロンプトに追加のコンテキストとして結合され、拡張されたプロンプトが作成されます。
- 応答の生成: 拡張されたプロンプトが基盤モデルに送信され、ユーザーに対する正確で関連性の高い応答が生成されます。
API操作: ナレッジベース操作に以下の主要なAPI操作が使用されます:
• Retrieve: クエリに最も関連性の高いソースチャンクや画像を返します。
• RetrieveAndGenerate: RetrieveとInvokeModelを組み合わせて、関連情報を取得し、自然言語の応答を生成します。引用元も含まれます。
• GenerateQuery: 自然言語のユーザークエリを、構造化データストアに適した形式のクエリ (例: SQL) に変換します。
自然言語->SQLもできる
サポートされているデータソースの種類:
Amazon S3:
テキスト、Markdown、HTML、Microsoft Word ( .doc/.docx)、CSV、Microsoft Excel (.xls/.xlsx)、PDF などのファイル形式をサポートしています。Amazon S3またはカスタムデータソースを使用する場合、JPEG (.jpeg) や PNG (.png) 画像、またはテーブル、チャート、図などのマルチモーダルデータを含むファイルをサポートできます。ファイルサイズは最大 50 MB です。JPEGおよびPNGファイルの最大サイズは 3.75 MB です。
◦ コンテンツフィルタリング: ドキュメントのメタデータフィールドやコンテンツの含める/除外するフィルタ、追加・更新・削除されたコンテンツの増分同期をサポートしています。
◦ 暗号化: S3 バケットが KMS キーで暗号化されている場合、そのキーを含めることができます。
Confluence (プレビュー):
SharePoint と同様に、現在プレビュー段階であり、マルチモーダルデータ (画像、テーブルなど) はサポートされていません。Amazon OpenSearch Serverless ベクトルストアのみがサポートされます。
•Microsoft SharePoint (プレビュー):
SharePoint Online インスタンスへの接続をサポートしています。OneNote ドキュメントのクロールは現在サポートされていません。現時点では、Amazon OpenSearch Serverless ベクトルストアのみがこのデータソースで使用可能です。
Web Crawler (プレビュー):
指定した URL をクロールし、ウェブページをナレッジベースに含めることができます。
◦ サポート機能: 複数のソース URL の選択とクロール範囲の設定(ホストのみ、サブドメインを含むなど)、静的または動的ウェブページのクロール、カスタムユーザーエージェントサフィックスの指定、特定のURLの含める/除外するフィルター、robots.txt ディレクティブの遵守、クロール速度とページ数の制限。
◦ robots.txt: Web Crawler は RFC 9309 に従って robots.txt を尊重します。
◦ 増分同期: 新規、変更済み、削除されたコンテンツの増分同期をサポートします。
カスタムデータソース:
直接取り込み(ダイレクトインジェスト)を利用できます。これにより、単一のアクションでファイルをナレッジベースに直接追加、更新、または削除でき、同期なしでドキュメントにアクセスできます 。
◦ サポートファイルタイプ: Plain text (ASCII only) (.txt), Markdown (.md), HTML (.html), Microsoft Word document (.doc/.docx), Comma-separated values (.csv), Microsoft Excel spreadsheet (.xls/.xlsx), Portable Document Format (.pdf)。
◦ マルチモーダルデータ: JPEG (.jpeg) または PNG (.png) 画像、またはテーブル、チャート、図、その他の画像を含むファイルをサポートします。
データ準備(Ingestion)におけるカスタマイズオプション:
基本的には、S3か直接アップロードしたテキストやpdfなどのファイルから読み込む様子
word, エクセルにも対応している
画像の最大サイズが注意かも (3.75MB)
チャンキング戦略:
◦ 固定サイズ (Fixed Size): ドキュメントを管理しやすいチャンクに分割します。チャンクの最大トークン数と重複率を指定できます。
◦ 階層型 (Hierarchical): ドキュメントを2つのレベルに分割し、第2層が第1層から派生したより小さなチャンクを含むようにします。
◦ セマンティックチャンキング: 特定のハイパーパラメータ(最大トークン数、バッファサイズ)をカスタマイズできます。バッファサイズは、埋め込み作成のために含まれる周辺文の数を定義します。
◦ チャンキングなし (No Chunking): 各ドキュメントを単一のテキストチャンクとして扱います。この場合、引用にページ番号を表示したり、x-amz-bedrock-kb-document-page-number メタデータフィールドでフィルタリングしたりすることはできません(これは PDF ファイルに対して Amazon OpenSearch Serverless がベクトルストアとして使用されている場合にのみ自動生成されます)。
解析オプション:
◦ Amazon Bedrock デフォルトパーサー: テキストのみのデータに適しており、追加料金は発生しません。
◦ Amazon Bedrock Data Automation (プレビュー): マルチモーダルデータ(画像、テーブルなど)の効率的な処理に適したフルマネージドサービスです。
◦ 基盤モデル: 基盤モデルや推論プロファイルを使用してマルチモーダルデータを処理できます。データ抽出に使用するプロンプトをカスタマイズできます。
• カスタム変換 Lambda 関数: インジェストプロセスに独自のロジック(例: カスタムチャンキングロジックやチャンクレベルのメタデータ指定)を組み込むことができます。
• メタデータ: データソースにメタデータを含めることで、ナレッジベースのクエリ結果の関連性を向上させることができます。
• KMS キーによる暗号化: 一時的なデータストレージのために顧客管理 KMS キーを使用できます
サポートされているベクトルストアの種類:
Amazon OpenSearch Serverless:
◦ Amazon Bedrock が自動的にベクトルストアを作成する場合、Amazon OpenSearch Serverless が使用されます。
◦ バイナリベクトルを保存できる唯一のベクトルストアです。
◦ データアクセスポリシーを設定して、ナレッジベースのサービスロールにアクセスを制限できます。
◦ プライベートな OpenSearch Serverless コレクションの場合、AWS PrivateLink VPC エンドポイント経由でのみアクセス可能です。
Amazon Neptune:
(ソースに直接的な記載はありませんが、ナレッジベースの構築方法に関するセクションに「Build a knowledge base with graphs from Amazon Neptune」という項目があるため、間接的にサポートされていると推測されます。)
Amazon Aurora (RDS):
◦ Aurora DB クラスターと AWS Secrets Manager シークレットを設定する必要があります。
◦ メタデータ属性ごとにカラムを作成し、データ型(テキスト、数値、ブール値)を指定できます。
Pinecone:
◦ AWS がユーザーに代わってサードパーティのソースにアクセスすることを承認することに同意する必要があります。
Redis Enterprise Cloud:
◦ AWS Secrets Manager を通じて Redis Enterprise Cloud のセキュリティ構成を提供する必要があります。
MongoDB Atlas: (ソースに直接的な記載はありませんが、他のベクトルストアと並列で言及されることが多い一般的な統合先であるため、文脈から推測されます。)
ベクトルストアの要件:
• サードパーティのベクトルストアは KMS キーで暗号化できます。
• バイナリベクトル埋め込みを使用する場合、バイナリベクトルをサポートするベクトルストアを使用する必要があります(現時点では Amazon OpenSearch Serverless のみがサポート)。
埋め込みにおける「バイナリベクトル(二値化されたベクトル)」とは、各次元が0または1のみで構成されたベクトル表現のこと。
一方、通常のベクトル(「実数ベクトル」)は、各次元が連続的な実数値を持ち、精度やニュアンスの表現力に優れます。
バイナリベクトルはストレージと計算コストが極めて小さい反面、少し精度を犠牲にするトレードオフがあります。
特性 | 実数ベクトル埋め込み(Dense Embedding) | バイナリベクトル埋め込み(Binary Embedding) |
---|---|---|
データ型 | 浮動小数点(例: FP32) | 各次元が0または1のビット |
ストレージサイズ | 例: 1024次元 × 4バイト ≈ 4 KB | 同じ1024次元で128 B程度(約32倍圧縮) |
計算速度 | コサイン類似度などの複雑な計算が必要で比較的遅い | ビット演算によるハミング距離計算で高速。数十倍高速化の例あり |
精度・意味表現力 | 高い精度と微妙な意味的差異を反映可能 | 精度はやや低下するが、性能約95%以上を保てるケースあり |
適用場面 | 高精度が必要な場面、微妙な意味関係の判断 | 検索、リアルタイム処理、大規模環境、メモリや計算資源が制限された状況に有利 |
5. AIエージェント
• 基盤モデルを活用して、アプリケーション内でタスクを自動化します 。
• API呼び出しやナレッジベースのクエリを通じて、複雑なタスクを推論し実行します。
AIエージェントの主な機能と動作原理
タスクの自動化と複雑な要求の処理
◦ AIエージェントは、ユーザーのプロンプトを解釈し、必要に応じて複数のステップや外部システムとのインタラクションを調整することで、複雑なタスクを自動化します。
ツールの利用(Function Calling)
◦ エージェントは、応答を生成するために基盤モデルが使用できるツール(関数)を指定できます。
◦ 例えば、特定のラジオ局で最も人気のある曲を取得するツールなどを定義し、モデルに利用させることが可能です。
◦ モデルがツールの使用を要求した場合、その要求情報と入力がメッセージコンテンツとして返され、停止理由(stop_reason)はtool_useとなります。
◦ その後、アプリケーションはコード内でツールを呼び出し、その結果をユーザーメッセージとしてモデルに渡します。これにより、モデルはツールの結果に基づいて最終的な応答を生成します。
◦ ツールはJSONスキーマで定義されます。
◦ Anthropic Claude 3モデルを使用する場合、開発段階で特定のツールの使用を強制し、テストすることが可能です。
アクショングループによるアクション定義
◦ エージェントのアクションは、アクショングループを使用して定義されます。
◦ アクショングループ内でアクションを定義し、その実行を処理し、エージェントに追加することができます。
ツールは「何ができるか」という機能の定義であり、アクションは「何を実際に実行するか」という具体的な操作。
AIエージェントが実行する高レベルなタスク(アクション)は、複数の「ツール」を組み合わせて実行することができます。
これらのツールはJSONスキーマで定義されます。これにより、例えば「特定のラジオ局で最も人気のある曲を取得する」といった、アプリケーション固有の機能を持たせることが可能です。
モデルがこのカスタムツールを利用すると判断した場合、tool_useのリクエストとしてツールの名前と入力パラメーターを返し、アプリケーションがコード内でそのツール(関数)を呼び出します。
AWSで用意されているツール(事前定義されたツール):
◦ 特にAnthropic Claude 3.5 Sonnet v2モデルのベータ版機能である「コンピュータ利用 (Computer use)」において、AWSによって事前定義された複数のコンピュータ利用ツールが提供されています。
◦ これらのツールには、具体的に以下のものが含まれます:
▪ computer_20241022
▪ bash_20241022
▪ text_editor_20241022
AIエージェントがサポートするモデルとリージョン
サポートされる基盤モデル
◦ Amazon Titanモデル: Titan Text G1 - Express, Titan Text G1 - Lite, Titan Text G1 - Premier, Titan Image Generator G1 v2, Titan Multimodal Embeddings G1 など。
◦ Anthropic Claudeモデル: Claude 2, Claude 2.1, Claude 3 Haiku, Claude 3 Opus, Claude 3 Sonnet, Claude 3.5 Haiku, Claude 3.5 Sonnet, Claude 3.5 Sonnet v2, Claude Instant など。
◦ Cohereモデル: Command Light, Command R, Command R+, Embed (English), Embed (Multilingual), Rerank 3.5 など。
◦ Meta Llamaモデル: Llama 3 8B Instruct, Llama 3 70B Instruct, Llama 3.1 8B Instruct, Llama 3.1 70B Instruct, Llama 3.1 405B Instruct, Llama 3.2 1B Instruct, Llama 3.2 3B Instruct, Llama 3.2 11B Instruct, Llama 3.2 90B Instruct, Llama 3.3 70B Instruct など。
◦ Mistral AIモデル: Mistral 7B Instruct, Mistral Large (24.02), Mistral Large (24.07), Mistral Small (24.02), Mixtral 8x7B Instruct など。
◦ Stability AIモデル: SD3 Large 1.0, Stable Diffusion 3.5 Large, Stable Image Core 1.0, Stable Image Ultra 1.0 など。
AIに判断させ、必要があれば自作ツールを使い、web検索調査させ、その情報をもとに回答させるなどができる
処理イメージ
6. Amazon Bedrock Flows
• 生成AIワークフローを構築するための機能です 。
• プロンプト、ナレッジベース、エージェントなどのAmazon Bedrockリソースを統合できます。
StepFunctionsみたいなイメージ?要調査
7. モデルカスタマイズ
• ファインチューニングや継続的事前学習により、特定のタスクやドメインに合わせてモデルのパフォーマンスを調整します。
TODO: データの入力形式など調査
8. Amazon Bedrock Marketplace
• 100以上の人気の高い、新興の、専門的な基盤モデルを発見、テスト、使用できる場です。
• BedrockのAPIを通じてアクセスし、エージェント、ナレッジベース、ガードレールなどのBedrockツールと連携して使用できます。
• デプロイ: モデルをSageMaker AIエンドポイントにデプロイし、推論コールを行います。
一般のモデルを利用できる?
TODO: 料金など
9. プロンプト管理
• 独自のプロンプトを作成、保存、再利用する機能です。
• 変数を含めることで柔軟性を高め、異なるプロンプトバリアントを比較し、バージョンを保存できます。
10. プロンプト最適化(プレビュー)
• プロンプトを再記述して、ユースケースにより適した推論結果を得るためのツールです。
11. レイテンシー最適化推論(プレビュー)
• Anthropic Claude 3.5 HaikuモデルとMeta Llama 3.1 405Bおよび70Bモデルの最適化されたバージョンで、精度を損なうことなくレイテンシーを大幅に削減します。
13. 推論プロファイル
• モデルと1つまたは複数のリージョンを定義し、モデル推論リクエストをルーティングし、使用量メトリクスを追跡するために使用できます。
14. Amazon Bedrock Data Automation (プレビュー)
• 非構造化データから意味のあるインサイトを変換するフルマネージドサービスです。テキストと画像を含むマルチモーダルデータを効率的に処理します。
よくわからないので調査
15. Amazon Bedrock Studio
• 生成AIアプリケーションを構築するための環境です。IAM Identity Centerとの統合を特徴とし、ワークスペースの作成とメンバー管理をサポートします。
Amazon Bedrockの料金
• 使用したサービスに対してのみ課金されます。
• 主に入力トークンと出力トークンの量、およびモデルにプロビジョニングされたスループットを購入したかどうかに基づいて課金されます。
• ガードレールは、ガードレール評価がブロックされた場合でも課金され、モデル応答がブロックされた場合はモデル推論とガードレール評価の両方が課金されます。
TODO 料金の調査
モデルでどう違うか
ChatGPTなど他のサービスと比較してどうか
セキュリティとコンプライアンス
• IAM: IDとアクセス管理は、Bedrockリソースへのアクセスを制御するために重要です。
• VPCとAWS PrivateLink: 推論ジョブがAmazon S3バケット内のデータにアクセスする際に、VPCとPrivateLinkを使用してデータアクセスを保護できます。
• KMSキーによる暗号化: モデル評価ジョブなど、Bedrockの一時的なデータはKMSキーで暗号化されます。
• プロンプトインジェクションセキュリティ: プロンプトエンジニアリングの概念として、プロンプトインジェクション攻撃からの保護も考慮されます。
• Guardrails: 有害なコンテンツや望まないコンテンツをフィルタリングするセーフガードを実装します。