デジタルパブリッシャーは、メディアワークフローを合理化および自動化して、できるだけ迅速に新しいコンテンツを生成および公開する方法を継続的に探していますが、品質はありません。
画像を追加してテキストの本質をキャプチャすると、読書体験が向上する可能性があります。機械学習技術は、そのような画像を発見するのに役立ちます。 「印象的なイメージは、視聴者の注目を集めてストーリーとの関わりを生み出す最も効果的な方法の1つですが、意味をなさなければなりません。」
このAWS-Samplesプロジェクトでは、Amazon Titan Foundation Modelsを使用して記事をすばやく理解し、それに付随する最高の画像を見つける方法を確認します。今回は、画像から直接埋め込みを生成します。
セマンティック検索の重要な概念は埋め込みです。埋め込みは、ベクトルの形式でのイメージ、テキスト、またはその両方である入力の数値表現です。多くのベクトルがある場合、それらの間の距離を測定でき、距離に近いベクトルは意味的に類似または関連しています。
Amazon Bedrockは、AI21 Labs、人類、炭、メタ、安定性AI、Amazonを含む大手AI企業からの高性能基礎モデル(FMS)の選択を提供する完全に管理されたサービスであり、1つのAPIを備えたAmazonとともに、一般的なAIアプリケーションを構築するのに役立つ幅広い機能セットを提供し、開発とセキュリティを維持しながら開発を維持します。
Amazon Titanは最近、新しい埋め込みモデルをそのコレクションに追加しました。この新しいモデルは、マルチモーダル検索、推奨システム、およびその他のダウンストリームアプリケーションに使用できます。
マルチモーダルモデルは、テキスト、画像、ビデオ、オーディオなどの複数のモダリティのデータを理解および分析できます。この最新のAmazon Titanモデルは、テキスト、画像、またはその両方を受け入れることができます。これは、同じモデルを使用して画像とテキストの埋め込みを生成し、それらの埋め込みを使用して、2つの類似点を計算することを意味します。


これらの次の手順は、セマンティックイメージと有名人の検索を可能にする一連のアクションを通して説明しています。
この例では、Amazon Rekognition、Amazon Complhend、Amazon Bedrock、およびOpenSearchサービスの使用方法を見て、画像からメタデータを抽出し、MLテクニックを使用して有名人とセマンティック検索を使用して自動的に発見しました。これは、新鮮なコンテンツを迅速に、複数のプラットフォームに導く上で速度が重要な出版業界で特に重要です。
次のステップとして、AWSアカウントにソリューションを展開し、セマンティック検索がどのように機能するかをテストするために、独自の画像の一部をアップロードします。
サムクリ
ソリューションは、展開にSam CLIを使用します。サムクリの最新バージョンを必ず使用してください
Docker
このソリューションでは、SAM CLIオプションを使用してコンテナ内に構築して、ローカル依存関係の必要性を回避します。これにはDockerが必要です。
ノード
このソリューションのフロントエンドは、ノードを使用してローカルに実行できるReact Webアプリケーションです
npm
Webアプリケーションをローカルで実行するために必要なパッケージのインストール、またはリモート展開用に構築するには、NPMが必要です。
ベースモデルアクセス
Amazon Bedrockのモデルと対話したい場合は、Amazon Bedrockが利用できる地域の1つで、ベースモデルへのアクセスをリクエストする必要があります。モデルのエンドユーザーライセンス契約またはEULAを読んで受け入れるようにしてください。
| モデル | 最大トークン入力 | ディメンションの埋め込み | 1K入力トークンの価格 | 1K出力トークンの価格 |
|---|---|---|---|---|
| Amazonマルチモーダル埋め込み | 128 | 1,024(デフォルト)、384、256 | 岩盤価格 | n/a |
| タイタンテキスト - エクスプレス | 8k | n/a | 岩盤価格 |
上記の両方のモデルへのアクセスを要求する必要があります。
ワークフローのテキストを要約すると、Titanテキスト - Expressモデルの最大出力トークンを指定できます。これにより、128トークン未満で埋め込みモデルに合格することが保証されます。
マルチモーダル埋め込みモデルの最大画像寸法サイズは2048x2048のサイズで、ラムダ関数を埋め込む画像の一部として処理します。
注記:
この展開は現在、US-East-1地域に展開するために設定されています。 Amazon Bedrock Regionの可用性を確認し、samconfig.tomlファイルを更新して、希望する領域を反映してください。
AWS Cloud9を使用して展開することをお勧めします。 Cloud9を使用してソリューションを展開する場合は、先に進む前に以下が必要になります。
m5.largeを選択します。Amazon Linux 2プラットフォームとして使用します。これらのコマンドをコマンドライン/端末から実行するか、AWS Cloud9を使用できます。
git clone https://github.com/aws-samples/semantic-image-search-for-articles.git cd semantic-image-search-for-articlesCloud9を使用する場合は、インスタンスのEBSボリュームを少なくとも50GBに増やします。これを行うには、Cloud9端子から次のコマンドを実行します。
bash ./scripts/cloud9-resize.sh 50
環境サイズの詳細については、ドキュメントを参照してください。
このファイルを確認します:samconfig.toml
ここでは、スタックに名前を付けて、展開する領域を選択できます。
region = "us-east-1"AWSサービスがすべて選択している地域で利用できるかどうかを確認してください。
展開にはAmazon CloudFrontが展開されるため、これには約20分かかります。
Cloud9はSTSトークンを生成して展開を行いますが、これらの資格情報は15分間しか続きません。したがって、展開が完了する前にトークンが期限切れになるため、Cloud9から直接出力を見ることができません。
短期的な資格情報で認証する方法アクセスキートークンをエクスポートし、少なくとも30分または1800秒続くことを確認してください。
export AWS_ACCESS_KEY_ID= < PASTE_ACCESS_KEY >
export AWS_SECRET_ACCESS_KEY= < PASTE_SECRET_ACCESS_KEY >
export AWS_SESSION_TOKEN= < PASTE_SESSION_TOKEN >(トークンの有効期限が切れた場合、展開を完了し、クラウドフォーム内で進捗状況を確認し、以下の展開スクリプトを再実行することができます - Amazon CloudFrontリソースが既に存在するため、展開は迅速に完了します)
ソリューションの展開は、次のコマンドで達成されます。
npm install && npm run deployこのコマンドは、 sam build 、 sam deployなどの一連のスクリプトを実行して、正しい変数でフロントエンド環境をセットアップします。

AuthenicationはAmazon Cognitoによって管理されています。ログインできるようにする新しいユーザーを作成する必要があります。
CloudFormation OutputからUserPool IDを見つけて、そのユーザープールを選択して、そこに新しいユーザーを作成してログインします。

完了すると、CLI出力は、CloudFront URLの値を表示し、Webアプリケーションを表示できるようになります。
Webアプリを使用すると、ユーザーはS3に画像をアップロードし、OpenSearchによってインデックスを作成し、記事コンテンツに最も意味的に関連する上位10個の画像を返すためにOpenSearchにクエリを発行できます。
将来の料金が発生しないようにするには、リソースを削除します。
sam delete実行するか、CloudFormationに移動し、上記の展開スクリプトを介して展開したスタックを選択し、スタックを削除します。 
詳細については、貢献を参照してください。
このライブラリは、MIT-0ライセンスに基づいてライセンスされています。ライセンスファイルを参照してください。