はじめに
Amazon Bedrockは、Cohereの最新埋め込みモデル「Embed 3 Multilingual」と「Embed 3 English」のサポートを開始しました。特に、Embed 3 Multilingualは100以上の言語に対応し、日本語のテキストや画像データを処理することができます。本記事では、このモデルの特長や活用方法を詳しく解説し、Pythonを用いた実装方法についても紹介します。
参考: Amazon Bedrock now offers multimodal support for Cohere Embed 3 Multilingual and Embed 3 English
Amazon BedrockのCohere Embed 3マルチモーダル対応をわかりやすく解説
1. そもそも「Cohere Embed 3」とは?
Cohere Embed 3は、AIモデルの一種で、テキストや画像を「埋め込み(ベクトル)」という数値データに変換する技術を提供します。これにより、データ同士の関連性を計算し、より高度な検索やデータ分析が可能になります。
簡単に言うと?
文章や画像を数値化して「似ているものを探しやすくするAI技術」です。
2. 「マルチモーダル対応」とは?
マルチモーダル対応とは、「テキスト(文章)だけでなく、画像(視覚データ)も一緒に処理できる」ことを意味します。これにより、企業はより高度な検索システムを構築できます。
例えば?
「製品の説明文だけでなく、商品の写真からも検索できるECサイト」を作れるようになります。
具体的な活用例
例①:ECサイトの検索を高度化
課題
ECサイトで「赤いスニーカー」と検索しても、完全に一致する商品がなかなか見つからない。
解決策
- テキスト検索: 「赤いスニーカー」だけでなく、「ランニング用スニーカー」「スポーツシューズ」など関連商品を表示。
- 画像検索: 実際にスニーカーの画像をアップロードすると、それに似たデザインの商品を探せる。
結果
より直感的で便利な検索が可能になり、顧客満足度が向上。
例②:企業の膨大な文書や設計データを検索
課題
大手メーカーでは、過去の設計図、マニュアル、仕様書が膨大にあり、必要な情報をすぐに見つけるのが困難。
解決策
- テキスト検索: 「エンジンの冷却システム」と検索すると、関連するマニュアルや設計図を瞬時に表示。
- 画像検索: 古い設計図の画像をアップロードするだけで、似た部品の仕様書を探せる。
結果
エンジニアが必要な情報を素早く見つけ、業務の効率が向上。
例③:ニュース記事や研究論文の検索を改善
課題
研究者が関連する論文を探すとき、キーワード検索では適切な論文がヒットしないことが多い。
解決策
- テキスト検索: 「AIの自然言語処理」と検索すると、関連論文を高精度に抽出。
- 画像検索: 図表やグラフをアップロードすると、似たデータを含む研究を発見。
結果
研究者がより関連性の高い論文を簡単に見つけ、調査時間を短縮できる。
必要な環境と準備
必要なライブラリのインストール
以下のコマンドを実行して、必要なライブラリをインストールします。
pip install boto3 numpy scikit-learn
その後、AWSのクライアントを設定します。
import boto3
bedrock = boto3.client(service_name='bedrock', region_name='ap-northeast-1')
※ region_name
は、適宜変更してください。
Amazon BedrockでCohere Embed 3を利用する方法
1. 利用可能なモデルの確認
まず、利用可能なCohereのモデル一覧を取得します。
list_models = bedrock.list_foundation_models(byProvider='cohere')
for model in list_models['modelSummaries']:
print(f"Model Name: {model['modelName']}, Model ID: {model['modelId']}")
例えば、次のような出力が得られます。
Model Name: Embed Multilingual, Model ID: cohere.embed-multilingual-v3
2. 日本語テキストの埋め込み生成
モデルを使って、日本語テキストの埋め込みを生成します。
import json
input_text = "赤いスニーカーを探しています。"
model_id = 'cohere.embed-multilingual-v3'
params = {
"modelId": model_id,
"contentType": "application/json",
"accept": "application/json",
"body": json.dumps({"inputText": input_text})
}
response = bedrock.invoke_model(**params)
result = json.loads(response['body'].read())
embedding = result['embedding']
print("Generated Embedding:", embedding)
この埋め込みを利用することで、入力テキストの意味的な情報を数値化し、検索や分類に活用できます。
3. ベクトル検索の実装
埋め込みを活用して、類似検索を実装することも可能です。以下の例では、事前に用意したテキストと比較し、最も類似したものを特定します。
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
database_texts = [
"青いスニーカーがあります。",
"赤い靴を販売しています。",
"スポーツ用のシューズをお探しですか?"
]
database_embeddings = [
# 事前に生成した埋め込みベクトルを格納
]
input_embedding = np.array(embedding).reshape(1, -1)
similarities = cosine_similarity(input_embedding, database_embeddings)
most_similar_index = np.argmax(similarities)
most_similar_text = database_texts[most_similar_index]
print("最も類似したテキスト:", most_similar_text)
このようにして、埋め込みを利用した検索システムを構築することができます。
まとめ
Amazon BedrockのCohere Embed 3マルチモーダル対応により、
- ECサイト では、画像とテキストで商品検索が可能。
- 企業の情報管理 では、設計図やマニュアルをすぐに検索。
- 研究分野 では、論文やデータの検索を高度化。
データの種類にとらわれず、より便利な検索が可能になります!