Amazon BedrockでCohere Embed 3 Multilingualを活用する方法

## はじめに

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](https://aws.amazon.com/about-aws/whats-new/2025/01/amazon-bedrock-multimodal-cohere-embed-3-multilingual-english/)


### **Amazon BedrockのCohere Embed 3マルチモーダル対応をわかりやすく解説**

### 1. そもそも「Cohere Embed 3」とは？

Cohere Embed 3は、AIモデルの一種で、テキストや画像を「埋め込み（ベクトル）」という数値データに変換する技術を提供します。これにより、データ同士の関連性を計算し、より高度な検索やデータ分析が可能になります。

#### **簡単に言うと？**
文章や画像を数値化して「似ているものを探しやすくするAI技術」です。

### 2. 「マルチモーダル対応」とは？

マルチモーダル対応とは、「テキスト（文章）だけでなく、画像（視覚データ）も一緒に処理できる」ことを意味します。これにより、企業はより高度な検索システムを構築できます。

#### **例えば？**
「製品の説明文だけでなく、商品の写真からも検索できるECサイト」を作れるようになります。



## 具体的な活用例

### 例①：ECサイトの検索を高度化

#### **課題**
ECサイトで「赤いスニーカー」と検索しても、完全に一致する商品がなかなか見つからない。

#### **解決策**
- **テキスト検索:** 「赤いスニーカー」だけでなく、「ランニング用スニーカー」「スポーツシューズ」など関連商品を表示。
- **画像検索:** 実際にスニーカーの画像をアップロードすると、それに似たデザインの商品を探せる。

#### **結果**
より直感的で便利な検索が可能になり、顧客満足度が向上。

---

### 例②：企業の膨大な文書や設計データを検索

#### **課題**
大手メーカーでは、過去の設計図、マニュアル、仕様書が膨大にあり、必要な情報をすぐに見つけるのが困難。

#### **解決策**
- **テキスト検索:** 「エンジンの冷却システム」と検索すると、関連するマニュアルや設計図を瞬時に表示。
- **画像検索:** 古い設計図の画像をアップロードするだけで、似た部品の仕様書を探せる。

#### **結果**
エンジニアが必要な情報を素早く見つけ、業務の効率が向上。

---

### 例③：ニュース記事や研究論文の検索を改善

#### **課題**
研究者が関連する論文を探すとき、キーワード検索では適切な論文がヒットしないことが多い。

#### **解決策**
- **テキスト検索:** 「AIの自然言語処理」と検索すると、関連論文を高精度に抽出。
- **画像検索:** 図表やグラフをアップロードすると、似たデータを含む研究を発見。

#### **結果**
研究者がより関連性の高い論文を簡単に見つけ、調査時間を短縮できる。

## 必要な環境と準備


### 必要なライブラリのインストール

以下のコマンドを実行して、必要なライブラリをインストールします。

```bash
pip install boto3 numpy scikit-learn
```

その後、AWSのクライアントを設定します。

```python
import boto3

bedrock = boto3.client(service_name='bedrock', region_name='ap-northeast-1')
```

※ `region_name` は、適宜変更してください。

## Amazon BedrockでCohere Embed 3を利用する方法

### 1. 利用可能なモデルの確認

まず、利用可能なCohereのモデル一覧を取得します。

```python
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. 日本語テキストの埋め込み生成

モデルを使って、日本語テキストの埋め込みを生成します。

```python
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. ベクトル検索の実装

埋め込みを活用して、類似検索を実装することも可能です。以下の例では、事前に用意したテキストと比較し、最も類似したものを特定します。

```python
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サイト** では、画像とテキストで商品検索が可能。
- **企業の情報管理** では、設計図やマニュアルをすぐに検索。
- **研究分野** では、論文やデータの検索を高度化。

**データの種類にとらわれず、より便利な検索が可能になります！**