すべてのプロダクト
Search
ドキュメントセンター

DashVector:DashVector + ModelScope: マルチモーダル検索の実装

最終更新日:Jan 08, 2025

このトピックでは、DashVector と ChineseCLIPModelScope で利用可能なマルチモーダル検索モデル)を使用して、リアルタイムのテキストから画像への検索を実装する方法について説明します。この例では、Multimodal Understanding and Generation Evaluation (MUGE) データセットを画像コーパスとして使用し、ユーザーはテキストで最も類似した画像を検索できます。

全体的なプロセス

image.png

プロセスは次の 2 つのステップで構成されます。

  1. 画像埋め込みを生成し、DashVector に格納する: ChineseCLIP モデルの埋め込み API を使用して MUGE データセットを高次元ベクトルに変換し、ベクトルを DashVector に書き込みます。

  2. テキストで画像を検索: ChineseCLIP モデルを使用してクエリテキストの埋め込みを取得し、DashVector で類似の画像を検索します。

準備

1. APIキー

  • DashVector をアクティブ化します。詳細については、「DashVector のアクティブ化」をご参照ください。

  • DashVector の API キーを作成します。詳細については、「API キーの管理」をご参照ください。

2. 環境

In this example, the latest ChineseCLIP model Huge (224 pixels) from ModelScope is used. The model is trained on large-scale Chinese data that contains approximately 0.2 billion image-text pairs to excel in image searches by Chinese text and extraction of image and word embeddings. The following environmental dependencies are required, as described on the model details page on ModelScope:

説明

Python 3.7 以降が必要です。

# dashvector をインストールします。
pip3 install dashvector

# modelscope をインストールします。
# modelscope 0.3.7 以降をインストールする必要があります。デフォルトでは、インストールする modelscope のバージョンは 0.3.7 以降です。インストール後、インストールされているバージョンを確認してください。
# modelscope は、イメージを更新するか、次のコマンドを実行することでインストールできます。
pip3 install --upgrade modelscope -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
# decord を個別にインストールします。
# pip3 install decord
# modelscope のインストールに必要な依存関係をインストールします。
# pip3 install torch torchvision opencv-python timm librosa fairseq transformers unicodedata2 zhconv rapidfuzz

3. データ

この例では、MUGE の検証データセットが埋め込み生成用の画像データセットとして使用されます。これは、ModelScope の データセット API を使用して取得できます。

from modelscope.msdatasets import MsDataset

dataset = MsDataset.load("muge", split="validation")

手順

説明

your-xxx-api-key はご自身の API キーに、your-xxx-cluster-endpoint はご自身のクラスターのエンドポイントに、サンプルコード内で置き換える必要があります。そうしないと、コードは正しく実行されません。

1. 画像埋め込みを生成し、DashVector に保存します

MUGE の検証データセットには、30,588 枚の画像のマルチモーダル情報が含まれています。この例では、ChineseCLIP モデルを使用して元の画像の埋め込みが抽出され、DashVector に格納されます。元の画像もエンコードされ、DashVector に格納されます。これにより、画像表示が容易になります。サンプルコード:

// DashVector クライアントを初期化します。
// コレクション名とベクトル次元数を指定してコレクションを作成します。ChineseCLIP の Enormous モデルでは、ベクトル次元数は 1,024 です。
// 画像埋め込みをバッチ生成して保存します。
// 前のコードでは、モデルはデフォルトで CPU で実行されます。モデルが GPU で実行される場合、GPU のパフォーマンスに基づいてパフォーマンスがさまざまな程度に向上する可能性があります。
説明

上記のコードでは、モデルはデフォルトで CPU で実行されます。モデルが GPU で実行される場合、そのパフォーマンスは GPU のパフォーマンスに基づいてさまざまな程度に向上する可能性があります。

2. テキストで画像を検索

ChineseCLIPモデルを使用してテキストベクトルを取得します。次に、DashVector の検索 API を使用して類似の画像を検索します。サンプルコード:

// DashVector クライアントを初期化します。
// 関連する埋め込みを保存するコレクションを取得します。
// クエリテキストの埋め込みを取得します。
// DashVector で検索します。
// 注:show() 関数を動作させるには、Linux サーバーに画像ビューアーをインストールする必要がある場合があります。
// Jupyter Notebook をサポートするサーバーでコードを実行することをお勧めします。

上記のコードを実行すると、次の画像が返されます。

image.pngimage.png

image.png