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

Alibaba Cloud Model Studio:埋め込み

最終更新日:Aug 26, 2026

埋め込みモデルは、テキスト、画像、動画などのデータをベクトルに変換し、セマンティック検索、レコメンデーション、クラスタリング、分類、異常検知などの下流タスクに利用します。

前提条件

API キーを取得し、API キーを環境変数としてエクスポートします。OpenAI SDK または DashScope SDK を使用して呼び出しを行う場合は、SDK をインストールします。

埋め込みの取得

テキスト埋め込み

API リクエストを行うには、埋め込むテキストと使用するモデルを指定します。

OpenAI 互換 API

import os
from openai import OpenAI

input_text = "The quality of the clothes is excellent"

client = OpenAI(
    # API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # 環境変数を設定していない場合は、この行を API キーに置き換えてください。
    # これはシンガポールリージョンの URL です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

completion = client.embeddings.create(
    model="qwen3.7-text-embedding",
    input=input_text
)

print(completion.model_dump_json())
const OpenAI = require("openai");

// OpenAI クライアントを初期化します。
const openai = new OpenAI({
    // 環境変数を設定していない場合は、この行を API キーに置き換えてください。
    // API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
    apiKey: process.env.DASHSCOPE_API_KEY,
    // これはシンガポールリージョンの URL です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。
    baseURL: 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1'
});

async function getEmbedding() {
    try {
        const inputTexts = "The quality of the clothes is excellent";
        const completion = await openai.embeddings.create({
            model: "qwen3.7-text-embedding",
            input: inputTexts,
            dimensions: 1024 // ベクトル次元を指定します。このパラメーターは qwen3.7-text-embedding、text-embedding-v3、および text-embedding-v4 のみでサポートされています。
        });

        console.log(JSON.stringify(completion, null, 2));
    } catch (error) {
        console.error('Error:', error);
    }
}

getEmbedding();
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/embeddings' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.7-text-embedding",
    "input": "The quality of the clothes is excellent"
}'

DashScope

import dashscope
from http import HTTPStatus

# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に置き換えてください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

input_text = "The quality of the clothes is excellent"
resp = dashscope.TextEmbedding.call(
    model="qwen3.7-text-embedding",
    input=input_text,
)

if resp.status_code == HTTPStatus.OK:
    print(resp)
import com.alibaba.dashscope.embeddings.TextEmbedding;
import com.alibaba.dashscope.embeddings.TextEmbeddingParam;
import com.alibaba.dashscope.embeddings.TextEmbeddingResult;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;

import java.util.Collections;
public class Main {
    static {
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // 中国 (北京) リージョンを使用する場合は、URL を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に置き換えてください
    }
     public static void main(String[] args) {
        String inputTexts = "The quality of the clothes is excellent";
        try {
            // リクエストパラメーターを構築します。
            TextEmbeddingParam param = TextEmbeddingParam
                    .builder()
                    .model("qwen3.7-text-embedding")
                    // 入力テキスト。
                    .texts(Collections.singleton(inputTexts))
                    .build();

            // モデルインスタンスを作成し、呼び出しを行います。
            TextEmbedding textEmbedding = new TextEmbedding();
            TextEmbeddingResult result = textEmbedding.call(param);

            // 結果を出力します。
            System.out.println(result);

        } catch (NoApiKeyException e) {
            // API キーが見つからない場合の例外をキャッチして処理します。
            System.err.println("An exception occurred during the API call: " + e.getMessage());
            System.err.println("Please check if your API key is configured correctly.");
            e.printStackTrace();
        }
    }
}
# ======= 重要 =======
# 中国 (北京) リージョンのモデルを使用する場合は、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding に置き換えてください
# === 実行前にこのコメントを削除してください ===

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.7-text-embedding",
    "input": {
        "texts": [
        "The quality of the clothes is excellent"
        ]
    }
}'

独立したマルチモーダルベクトル

テキスト、画像、動画など、異なる種類のコンテンツに対して個別のベクトルを生成できます。これは、各コンテンツタイプを個別に処理する場合に役立ちます。

独立したマルチモーダルベクトルを生成するには、DashScope SDK を使用するか、API を直接呼び出します。この機能は、OpenAI 互換 API またはコンソールでは利用できません。

import dashscope
import json
import os
from http import HTTPStatus

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# 上記の URL はシンガポールリージョン用です。北京リージョンのモデルを使用する場合は、base_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に置き換えてください

# 入力は動画でもかまいません。
# video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20250107/lbcemt/new+video.mp4"
# input = [{'video': video}]
# または画像。
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
input = [{'image': image}]
resp = dashscope.MultiModalEmbedding.call(
    # 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください: api_key="sk-xxx",
    # API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model="tongyi-embedding-vision-plus",
    input=input
)

print(json.dumps(resp.output, indent=4))

import com.alibaba.dashscope.embeddings.MultiModalEmbedding;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingItemImage;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingItemVideo;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingParam;
import com.alibaba.dashscope.embeddings.MultiModalEmbeddingResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;

import java.util.Collections;

public class Main {
    static {
        Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // 中国 (北京) リージョンを使用する場合は、URL を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に置き換えてください
    }
    public static void main(String[] args) {
        try {
            MultiModalEmbedding embedding = new MultiModalEmbedding();
            // 入力は動画でもかまいません。
            // MultiModalEmbeddingItemVideo video = new MultiModalEmbeddingItemVideo(
            //     "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20250107/lbcemt/new+video.mp4");
            // または画像。
            MultiModalEmbeddingItemImage image = new MultiModalEmbeddingItemImage(
                "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png");

            MultiModalEmbeddingParam param = MultiModalEmbeddingParam.builder()
                // 環境変数を設定していない場合は、.apiKey("sk-xxx") を使用して Model Studio API キーを追加してください
                .model("tongyi-embedding-vision-plus")
                .contents(Collections.singletonList(image))
                .build();

            MultiModalEmbeddingResult result = embedding.call(param);
            System.out.println(result);

        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.err.println("An exception occurred during the API call: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

マルチモーダル融合ベクトル

テキスト、画像、動画など、異なるモダリティのコンテンツを単一の融合ベクトルに結合できます。これにより、テキストによる画像検索、画像による画像検索、テキストによる動画検索、クロスモーダル検索などのアプリケーションが可能になります。

マルチモーダル融合ベクトルを生成するには、Python DashScope SDK を使用するか、API を直接呼び出します。この機能は、OpenAI 互換 API、Java DashScope SDK、またはコンソールでは利用できません。

  • qwen3-vl-embedding:融合ベクトルと独立したベクトルの両方の生成をサポートします。融合ベクトルを生成するには、ブール値パラメーター enable_fusiontrue に設定します。
  • qwen2.5-vl-embedding:融合埋め込みのみをサポートし、独立した埋め込みはサポートしません。
import dashscope
import json
import os
from http import HTTPStatus
# 以下の構成は中国 (北京) リージョン用です。呼び出しを行う際は、{WorkspaceId} を実際のワークスペース ID に置き換えてください。構成はリージョン固有です。
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"

# マルチモーダル融合ベクトル: テキスト、画像、動画を単一の融合ベクトルに結合します。
# クロスモーダル検索や画像検索などのユースケースに適しています。
text = "This is a test text for generating a multimodal fused vector"
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20250107/lbcemt/new+video.mp4"

# 入力にはテキスト、画像、動画が含まれます。enable_fusion パラメーターを設定することで融合ベクトルが生成されます。
input_data = [
    {"text": text},
    {"image": image},
    {"video": video}
]

# qwen3-vl-embedding を使用して融合ベクトルを生成します。
resp = dashscope.MultiModalEmbedding.call(
    # 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-vl-embedding",
    input=input_data,
    enable_fusion=True,
    # オプションのパラメーター: ベクトル次元を指定します。サポートされている値: 2560、2048、1536、1024、768、512、256。デフォルト: 2560。
    # dimension = 1024
)

print(json.dumps(resp.output, indent=4))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        // 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください: String apiKey = "sk-xxx";
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        // enable_fusion を使用して、テキスト、画像、動画を単一の融合ベクトルに結合します。
        String requestBody = "{"
                + "\"model\": \"qwen3-vl-embedding\","
                + "\"input\": {"
                + "  \"contents\": ["
                + "    {\"text\": \"This is a test text for generating a multimodal fused vector\"},"
                + "    {\"image\": \"https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png\"},"
                + "    {\"video\": \"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20250107/lbcemt/new+video.mp4\"}"
                + "  ]"
                + "},"
                + "\"parameters\": {"
                + "  \"enable_fusion\": true"
                + "}"
                + "}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding"))
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(requestBody))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

モデルの選択

入力データの種類とユースケースに基づいて、適切なモデルを選択してください。

  • プレーンテキストまたはコードの処理qwen3.7-text-embedding を使用します。これは最高のパフォーマンスを発揮するモデルで、タスク命令や疎ベクトルなどの高度な機能をサポートし、ほとんどのテキスト処理ユースケースをカバーします。

  • マルチモーダルコンテンツの処理

    • 融合埋め込み:クロスモーダル検索や画像検索などのユースケースで、単一モーダルまたは混合モーダルの入力を融合埋め込みとして表現するには、 qwen3-vl-embedding を使用します。たとえば、シャツの画像と「より若々しく見える類似のスタイルを探す」というテキストを入力すると、モデルは画像とタスク命令を単一の埋め込みに融合して処理します。
    • 独立した埋め込み:各入力部分 (画像とそれに対応するテキストキャプションなど) に対して独立した埋め込みを生成するには、tongyi-embedding-vision-plustongyi-embedding-vision-flash、または汎用マルチモーダルモデル multimodal-embedding-v1 を使用します。
  • 大規模データの処理:大規模で非リアルタイムのテキストデータを処理するには、qwen3.7-text-embedding または text-embedding-v4OpenAI 互換バッチ API とともに使用することで、コストを大幅に削減できます。

この表は、利用可能なすべての埋め込みモデルの仕様を詳述しています。

テキスト埋め込み

北京

モデル名埋め込み次元バッチサイズ

最大バッチトークン数 ()

価格 / 100 万トークン言語

text-embedding-v4

Qwen3-Embedding シリーズの一部

2,048、1,536、1,024 (デフォルト)、768、512、256、128、64

10

8,192

$0.072

中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語、および複数のプログラミング言語を含む 100 以上の主要言語

香港

モデル名埋め込み次元バッチサイズ

最大バッチトークン数 ()

価格 / 100 万トークン言語

text-embedding-v4

Qwen3-Embedding シリーズの一部

2,048、1,536、1,024 (デフォルト)、768、512、256、128、64

10

8,192

$0.07

中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語、および複数のプログラミング言語を含む 100 以上の主要言語

シンガポール

モデル名埋め込み次元バッチサイズ

最大バッチトークン数 ()

価格 / 100 万トークン言語

無料クォータ(注)

qwen3.7-text-embedding

2,560、2,048、1,536、1,024 (デフォルト)、768、512、256

20

128,000

$0.07

中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語を含む 201 の主要言語および方言

サポートされているすべての言語

シナ・チベット語族: 中国語 (簡体字、繁体字、広東語)、ビルマ語、チベット語、マニプリ語

インド・ヨーロッパ語族: 英語、フランス語、ポルトガル語、ドイツ語、ルーマニア語、スウェーデン語、デンマーク語、ブルガリア語、ロシア語、チェコ語、ギリシャ語、ウクライナ語、スペイン語、オランダ語、スロバキア語、クロアチア語、ポーランド語、リトアニア語、ノルウェー語 (ブークモール)、ノルウェー語 (ニーノシュク)、ペルシャ語、スロベニア語、グジャラート語、ラトビア語、イタリア語、オック語、ネパール語、マラーティー語、ベラルーシ語、セルビア語、ルクセンブルク語、ベネチア語、アッサム語、ウェールズ語、シレジア語、アストゥリアス語、チャッティースガリー語、アワディー語、マイティリー語、ボージュプリー語、シンド語、アイルランド語、フェロー語、ヒンディー語、パンジャブ語、ベンガル語、オリヤー語、タジク語、東イディッシュ語、ロンバルド語、リグリア語、シチリア語、フリウリ語、サルデーニャ語、ガリシア語、カタルーニャ語、アイスランド語、トスク語、アルバニア語、リンブルフ語、ダリー語、アフリカーンス語、マケドニア語、シンハラ語、ウルドゥー語、マガヒー語、ボスニア語、アルメニア語、ラトガリア語、スコットランド・ゲール語、中央クルド語、北クルド語、南パシュトー語、サンスクリット語、ドゥーンダーリー語、マールワーリー語、アヒラーニー語、バゲーリー語、バーグリー語、ブンデーリー語、ブラジュ語、クマーオニー語、カシミール語

アフロ・アジア語族: アラビア語 (標準、ナジュド、レバント、エジプト、モロッコ、メソポタミア、タイズ・アデン、チュニジア、湾岸、アルジェリア、スーダン、リビア)、ヘブライ語、マルタ語、アムハラ語、ティグリニャ語、カビル語、ソマリ語、西中央オロモ語、ハウサ語

オーストロネシア語族: インドネシア語、マレー語、タガログ語、セブアノ語、ジャワ語、スンダ語、ミナンカバウ語、バリ語、バンジャル語、パンガシナン語、イロカノ語、ワライ語 (フィリピン)、高原マダガスカル語、マダガスカル語、ブギス語、マオリ語、サモア語、ハワイ語、フィジー語

ドラヴィダ語族: タミル語、テルグ語、カンナダ語、マラヤーラム語

テュルク語族: トルコ語、北アゼルバイジャン語、北ウズベク語、カザフ語、バシキール語、タタール語、クリミア・タタール語、キルギス語、トルクメン語、ウイグル語

タイ・カダイ語族: タイ語、ラオ語、シャン語

ウラル語族: フィンランド語、エストニア語、ハンガリー語、牧地マリ語

オーストロアジア語族: ベトナム語、クメール語

ニジェール・コンゴ語族: ヨルバ語、エウェ語、キニヤルワン語、リンガラ語、北ソト語、ニャンジャ語、ショナ語、南ソト語、ツワナ語、コサ語、ズールー語、ルガンダ語、スワジ語、ツォンガ語、トゥンブカ語、ヴェンダ語、チョクウェ語、ルバ・カサイ語、ルンディ語、ウンブンドゥ語、キクユ語、コンゴ語、ナイジェリア・フラニ語、ウォロフ語、フォン語、カビエ語、モシ語、アカン語、トウィ語、バンバラ語、イボ語

その他: 日本語、韓国語、グルジア語、バスク語、ハイチ・クレオール語、パピアメント語、カーボベルデ・クレオール語、トク・ピシン語、スワヒリ語、中央アイマラ語、トゥル語、ナガ語、ナイジェリア・ピジン語、モーリシャス・クレオール語、サンゴ語、アヤクーチョ・ケチュア語、ハルハ・モンゴル語、南西ディンカ語、ヌエル語、グアラニー語

100 万トークン

Model Studio のアクティベーション日、モデルのリリース日、またはアプリケーションの承認日のうち、いずれか遅い方から 90 日間有効です

text-embedding-v4

Qwen3-Embedding シリーズの一部

2,048、1,536、1,024 (デフォルト)、768、512、256、128、64

10

8,192

$0.07

中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語、および複数のプログラミング言語を含む 100 以上の主要言語

100 万トークン

Model Studio のアクティベーション日、モデルのリリース日、またはアプリケーションの承認日のうち、いずれか遅い方から 90 日間有効です

text-embedding-v3

1,024 (デフォルト)、768、512

中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語を含む 50 以上の主要言語

50 万トークン

Model Studio のアクティベーション日、モデルのリリース日、またはアプリケーションの承認日のうち、いずれか遅い方から 90 日間有効です

注記バッチサイズは、API 呼び出しあたりのテキストの最大数です。たとえば、text-embedding-v4 のバッチサイズは 10 で、リクエストごとに最大 10 個のテキストをベクトル化のために含めることができ、各テキストは 8,192 トークンに制限されます。この制限は以下に適用されます:

  • 文字列配列入力:配列には最大 10 個の要素を含めることができます。
  • ファイル入力:テキストファイルには最大 10 行を含めることができます。

マルチモーダル埋め込み

このモデルは、テキスト、画像、または動画の入力から埋め込みを生成します。これらの埋め込みを、動画および画像の分類、画像とテキストの検索、テキストによる画像検索またはテキストによる動画検索などのタスクに使用できます。

API は、単一のテキスト、画像、または動画の入力、およびテキストと画像のような組み合わせを受け入れます。一部のモデルは、複数の画像など、同じタイプの複数の入力をサポートします。詳細については、各モデルの制限事項をご参照ください。

シンガポール

モデル

埋め込み次元

テキスト長の制限

画像サイズの制限

動画サイズの制限

価格 (100 万トークンあたり)

無料クォータ(注)

tongyi-embedding-vision-plus

1152

1,024 トークン

画像あたり最大 3 MB。最大 8 枚の画像をサポートします。

動画ファイルあたり最大 10 MB

画像/動画:$0.09

テキスト:$0.09

100 万トークン

この無料クォータは、Model Studio のアクティベーション日、モデルのリリース日、またはアプリケーションの承認日のうち、いずれか遅い方から 90 日間有効です。

tongyi-embedding-vision-flash

768

画像/動画:$0.03

テキスト:$0.09

中国 (北京)

モデル

埋め込み次元

テキスト長の制限

画像サイズの制限

動画サイズの制限

価格 (100 万トークンあたり)

qwen3-vl-embedding

2560 (デフォルト)、2048、1536、1024、768、512、256

32,000 トークン

最大 1 枚の画像、最大サイズ 5 MB

動画ファイルあたり最大 50 MB

画像/動画:$0.258

テキスト:$0.1

multimodal-embedding-v1

1024

512 トークン

最大 8 枚の画像、各画像の最大サイズは 3 MB

動画ファイルあたり最大 10 MB

無料トライアル

入力と言語の制限

融合マルチモーダルモデル
モデルテキスト画像動画リクエスト制限

qwen3-vl-embedding

中国語、英語、日本語、韓国語、フランス語、ドイツ語など、33 の主要言語をサポートします。

サポートされているすべての言語

中国語、日本語、韓国語、インドネシア語、ベトナム語、タイ語、英語、フランス語、ドイツ語、ロシア語、ポルトガル語、スペイン語、イタリア語、スウェーデン語、デンマーク語、チェコ語、ノルウェー語、オランダ語、フィンランド語、トルコ語、ポーランド語、スワヒリ語、ルーマニア語、セルビア語、ギリシャ語、カザフ語、ウズベク語、セブアノ語、アラビア語、ウルドゥー語、ペルシャ語、ヒンディー語/デーヴァナーガリー、ヘブライ語。

JPEG、PNG、WEBP、BMP、TIFF、ICO、DIB、ICNS、SGI (URL または Base64 をサポート)

MP4、AVI、MOV (URL のみ)

1 回のリクエストに含まれるコンテンツ要素の総数は 20 を超えることはできません。画像の数は 5 を超えることはできません。画像、テキスト、動画はこの制限を共有します。

独立したマルチモーダルモデル
モデルテキスト画像動画リクエスト制限

tongyi-embedding-vision-plus

中国語/英語

JPG、PNG、BMP (URL または Base64 をサポート)

MP4、MPEG、AVI、MOV、MPG、WEBM、FLV、MKV (URL のみ)

コンテンツ要素の数に制限はありません。入力トークンの合計数がトークン制限を超えてはなりません。

tongyi-embedding-vision-flash

multimodal-embedding-v1

1 回のリクエストに含まれるコンテンツ要素の総数は 20 を超えることはできません。リクエストには最大 1 枚の画像、1 つの動画、20 個のテキストエントリを含めることができます。これらのアイテムは合計制限を共有します。

コア機能

ベクトル次元のカスタマイズ

qwen3.7-text-embeddingtext-embedding-v4text-embedding-v3tongyi-embedding-vision-plustongyi-embedding-vision-flashqwen3-vl-embedding モデルは、カスタムベクトル次元をサポートしています。次元が高いほど、より多くのセマンティック情報が保持されますが、ストレージと計算コストが増加します。

  • 一般的なユースケース (推奨):1024 次元は、パフォーマンスとコストの最適なバランスを提供し、ほとんどのセマンティック検索タスクに最適です。
  • 高精度シナリオ:高精度を必要とするアプリケーションでは、1536 または 2048 次元を選択できます。これにより精度が向上しますが、ストレージと計算のオーバーヘッドが大幅に増加します。
  • リソースに制約のある環境:コストに敏感なシナリオでは、768 以下の次元を選択します。これにより、一部のセマンティック情報を犠牲にして、リソース消費を大幅に削減します。
import os
from openai import OpenAI

client = OpenAI(
    # API キーはリージョン固有です。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # これはシンガポールリージョンのベース URL です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョン固有です。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

resp = client.embeddings.create(
    model="qwen3.7-text-embedding",
    input=["I like it and will buy from here again"],
    # ベクトル次元を 256 に設定
    dimensions=256
)
print(f"Vector dimension: {len(resp.data[0].embedding)}")
import dashscope

# 中国 (北京) リージョンのモデルを使用する場合は、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に置き換えてください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

resp = dashscope.TextEmbedding.call(
    model="qwen3.7-text-embedding",
    input=["I like it and will buy from here again"],
    # ベクトル次元を 256 に設定
    dimension=256
)

print(f"Vector dimension: {len(resp.output['embeddings'][0]['embedding'])}")

クエリ vs. ドキュメントテキスト (text_type)

このパラメーターは、DashScope SDK および API を通じてのみ利用可能です。

検索タスクで最適な結果を得るには、その役割に基づいてコンテンツを異なる方法でベクトル化する必要があります。text_type パラメーターはこの目的のために設計されています:

  • text_type: 'query':ユーザーが提供するクエリテキストに使用します。モデルは、より指向性が高く、情報検索に最適化された「タイトルのような」ベクトルを生成します。
  • text_type: 'document' (デフォルト):ナレッジベースに保存されているドキュメントテキストに使用します。モデルは、より包括的な情報を含み、マッチングに最適化された「本文のような」ベクトルを生成します。

短いテキストと長いテキストを照合する場合、querydocument を区別する必要があります。ただし、すべてのテキストが同じ役割を持つクラスタリングや分類などのタスクでは、このパラメーターを設定する必要はありません。

タスク命令 (instruct)

このパラメーターは、DashScope SDK および API を通じてのみ利用可能です。

明確な英語のタスク命令を提供することで、qwen3.7-text-embedding および text-embedding-v4 モデルを特定の検索シナリオに合わせてベクトル品質を最適化し、精度を向上させることができます。qwen3.7-text-embeddingtext-embedding-v4 よりも命令追従能力が 16.4% 向上しているため、最初に使用することを推奨します。この機能を使用する場合、text_type パラメーターを query に設定する必要があります。

# 例: ドキュメントベクトルを構築する際に検索品質を最適化するための命令を追加します。
resp = dashscope.TextEmbedding.call(
    model="qwen3.7-text-embedding",
    input="Research papers on machine learning",
    text_type="query",
    instruct="Given a research paper query, retrieve relevant research paper"
)

密ベクトルと疎ベクトル

このパラメーターは、DashScope SDK および API を通じてのみ利用可能です。

qwen3.7-text-embeddingtext-embedding-v4、および text-embedding-v3 モデルは、さまざまな検索戦略に対応するために 3 つのベクトル出力タイプをサポートしています。qwen3.7-text-embedding の疎埋め込みは、新しい SPLADE のようなトレーニング戦略を使用しており、効果を 8.4% 向上させ、クロス言語検索のサポートを追加しています。

ベクトルタイプ (output_type)

利点

制限事項

ユースケース

dense

深いセマンティック理解により、同義語や文脈を特定し、より関連性の高い結果を提供します。

計算およびストレージコストが高い。キーワードの完全一致を保証しません。

セマンティック検索、AI による Q&A、コンテンツレコメンデーション。

sparse

高い計算効率で、キーワードの完全一致に焦点を当て、高速なフィルタリングを可能にします。

セマンティック理解に欠け、同義語や文脈を処理できません。

ログ検索、製品 SKU 検索、精密な情報フィルタリング。

dense&sparse

セマンティックマッチングとキーワードマッチングを組み合わせて、最適な検索結果を提供します。生成コストは変わらず、API 呼び出しのオーバーヘッドは単一ベクトルモードと同じです。

より多くのストレージが必要であり、システムアーキテクチャと検索ロジックがより複雑になります。

高品質な本番環境グレードのハイブリッド検索エンジン。

ユースケース

以下のコードはデモンストレーションのみを目的としています。本番環境では、埋め込みを事前に計算し、ベクトルデータベースに保存してください。これにより、検索のためにクエリ埋め込みを生成するだけで済みます。

セマンティック検索

クエリ埋め込みとドキュメント埋め込みの間の類似度を計算することにより、正確なセマンティックマッチングを実行します。

import dashscope
import numpy as np
from dashscope import TextEmbedding

# 中国 (北京) リージョンのモデルを使用するには、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    """コサイン類似度を計算します。"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

def semantic_search(query, documents, top_k=5):
    """セマンティック検索を実行します。"""
    # クエリ埋め込みを生成します。
    query_resp = TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=query,
        dimension=1024
    )
    query_embedding = query_resp.output['embeddings'][0]['embedding']

    # ドキュメント埋め込みを生成します。
    doc_resp = TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=documents,
        dimension=1024
    )

    # 類似度を計算します。
    similarities = []
    for i, doc_emb in enumerate(doc_resp.output['embeddings']):
        similarity = cosine_similarity(query_embedding, doc_emb['embedding'])
        similarities.append((i, similarity))

    # 上位 k 件の結果をソートして返します。
    similarities.sort(key=lambda x: x[1], reverse=True)
    return [(documents[i], sim) for i, sim in similarities[:top_k]]

# 使用例
documents = [
    "Artificial intelligence is a branch of computer science",
    "Machine learning is an important method for achieving artificial intelligence",
    "Deep learning is a subfield of machine learning"
]
query = "What is AI?"
results = semantic_search(query, documents, top_k=2)
for doc, sim in results:
    print(f"Similarity: {sim:.3f}, Document: {doc}")

レコメンデーションシステム

ユーザーの行動履歴の埋め込みを分析して興味を特定し、類似のアイテムを推奨します。

import dashscope
import numpy as np
from dashscope import TextEmbedding

# 中国 (北京) リージョンのモデルを使用するには、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    """コサイン類似度を計算します。"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
def build_recommendation_system(user_history, all_items, top_k=10):
    """レコメンデーションシステムを構築します。"""
    # ユーザー履歴の埋め込みを生成します。
    history_resp = TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=user_history,
        dimension=1024
    )

    # 平均化によりユーザーの嗜好埋め込みを計算します。
    user_embedding = np.mean([
        emb['embedding'] for emb in history_resp.output['embeddings']
    ], axis=0)

    # すべてのアイテムの埋め込みを生成します。
    items_resp = TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=all_items,
        dimension=1024
    )

    # レコメンデーションスコアを計算します。
    recommendations = []
    for i, item_emb in enumerate(items_resp.output['embeddings']):
        score = cosine_similarity(user_embedding, item_emb['embedding'])
        recommendations.append((all_items[i], score))

    # レコメンデーション結果をソートして返します。
    recommendations.sort(key=lambda x: x[1], reverse=True)
    return recommendations[:top_k]

# 使用例
user_history = ["Science Fiction", "Action", "Suspense"]
all_movies = ["Future World", "Space Adventure", "Ancient War", "Romantic Journey", "Superhero"]
recommendations = build_recommendation_system(user_history, all_movies)
for movie, score in recommendations:
    print(f"Recommendation Score: {score:.3f}, Movie: {movie}")

テキストクラスタリング

埋め込み間の距離を分析することで、類似したテキストをグループ化します。

# scikit-learn が必要です: pip install scikit-learn
import dashscope
import numpy as np
from sklearn.cluster import KMeans

# 中国 (北京) リージョンのモデルを使用するには、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

def cluster_texts(texts, n_clusters=2):
    """テキストのセットをクラスタリングします。"""
    # 1. すべてのテキストの埋め込みを取得します。
    resp = dashscope.TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=texts,
        dimension=1024
    )
    embeddings = np.array([item['embedding'] for item in resp.output['embeddings']])

    # 2. KMeans アルゴリズムを使用してクラスタリングします。
    kmeans = KMeans(n_clusters=n_clusters, random_state=0, n_init='auto').fit(embeddings)

    # 3. 結果を整理して返します。
    clusters = {i: [] for i in range(n_clusters)}
    for i, label in enumerate(kmeans.labels_):
        clusters[label].append(texts[i])
    return clusters

# 使用例
documents_to_cluster = [
    "Mobile phone company A releases a new phone",
    "Search engine company B launches a new system",
    "World Cup final: Argentina vs. France",
    "China wins another gold medal at the Olympics",
    "A company releases its latest AI chip",
    "European Cup match report"
]
clusters = cluster_texts(documents_to_cluster, n_clusters=2)
for cluster_id, docs in clusters.items():
    print(f"--- Cluster {cluster_id} ---")
    for doc in docs:
        print(f"- {doc}")

テキスト分類

入力テキストの埋め込みと事前定義されたラベル埋め込みとの類似度を計算することで、ゼロショットテキスト分類を実行します。このプロセスは、事前にラベル付けされた例を必要とせずに、テキストを新しいカテゴリに分類します。

import dashscope
import numpy as np

# 中国 (北京) リージョンのモデルを使用するには、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    """コサイン類似度を計算します。"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

def classify_text_zero_shot(text, labels):
    """ゼロショットテキスト分類を実行します。"""
    # 1. 入力テキストとすべてのラベルの埋め込みを取得します。
    resp = dashscope.TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=[text] + labels,
        dimension=1024
    )
    embeddings = resp.output['embeddings']
    text_embedding = embeddings[0]['embedding']
    label_embeddings = [emb['embedding'] for emb in embeddings[1:]]

    # 2. 各ラベルとの類似度を計算します。
    scores = [cosine_similarity(text_embedding, label_emb) for label_emb in label_embeddings]

    # 3. 最も類似度の高いラベルを返します。
    best_match_index = np.argmax(scores)
    return labels[best_match_index], scores[best_match_index]

# 使用例
text_to_classify = "The fabric of this dress is comfortable, and the style is nice too"
possible_labels = ["Digital Products", "Apparel & Accessories", "Food & Beverage", "Home & Living"]

label, score = classify_text_zero_shot(text_to_classify, possible_labels)
print(f"Input text: '{text_to_classify}'")
print(f"Best matching category: '{label}' (Similarity: {score:.3f})")

異常検知

テキストの埋め込みと正常なサンプルの中心埋め込みとの類似度を計算することで、異常データを特定します。このパターンから著しく逸脱したデータは異常と見なされます。

例の threshold はデモンストレーション目的です。理想的な値はデータの内容と分布によって異なるため、ご自身のデータセットを使用して調整する必要があります。

import dashscope
import numpy as np

# 中国 (北京) リージョンのモデルを使用するには、base_http_api_url を https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1 に変更してください
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

def cosine_similarity(a, b):
    """コサイン類似度を計算します。"""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

def detect_anomaly(new_comment, normal_comments, threshold=0.6):
    # 1. すべての正常なコメントと新しいコメントの埋め込みを生成します。
    all_texts = normal_comments + [new_comment]
    resp = dashscope.TextEmbedding.call(
        model="qwen3.7-text-embedding",
        input=all_texts,
        dimension=1024
    )
    embeddings = [item['embedding'] for item in resp.output['embeddings']]

    # 2. 正常なコメントの中心埋め込み (平均) を計算します。
    normal_embeddings = np.array(embeddings[:-1])
    normal_center_vector = np.mean(normal_embeddings, axis=0)

    # 3. 新しいコメントの埋め込みと中心埋め込みの類似度を計算します。
    new_comment_embedding = np.array(embeddings[-1])
    similarity = cosine_similarity(new_comment_embedding, normal_center_vector)

    # 4. 異常かどうかを判断します。
    is_anomaly = similarity < threshold
    return is_anomaly, similarity

# 使用例
normal_user_comments = [
    "Today's meeting was productive",
    "The project is progressing smoothly",
    "The new version will be released next week",
    "User feedback is positive"
]

test_comments = {
    "Normal comment": "The feature works as expected",
    "Anomaly - meaningless garbled text": "asdfghjkl zxcvbnm"
}

print("--- Anomaly Detection Example ---")
for desc, comment in test_comments.items():
    is_anomaly, score = detect_anomaly(comment, normal_user_comments)
    result = "Yes" if is_anomaly else "No"
    print(f"Comment: '{comment}'")
    print(f"Is anomaly: {result} (Similarity to normal samples: {score:.3f})\n")

API リファレンス

エラーコード

モデルの呼び出しが失敗し、エラーメッセージが返された場合は、解決策について「エラーコード」をご参照ください。

レート制限

モデルのレート制限条件については、「レート制限」をご参照ください。

モデルのパフォーマンス (MTEB/CMTEB)

評価ベンチマーク

  • MTEB (Massive Text Embedding Benchmark):分類、クラスタリング、検索などのタスクにおけるテキスト埋め込みの汎用的なパフォーマンスを評価する包括的なベンチマークです。
  • CMTEB (Chinese Massive Text Embedding Benchmark):中国語のテキスト埋め込みを評価するために特化した大規模なベンチマークです。
  • スコアは 0 から 100 の範囲です。スコアが高いほど、パフォーマンスが良いことを示します。

モデル

MTEB

MTEB (検索タスク)

CMTEB

CMTEB (検索タスク)

text-embedding-v3 (512 次元)

62.11

54.30

66.81

71.88

text-embedding-v3 (768 次元)

62.43

54.74

67.90

72.29

text-embedding-v3 (1024 次元)

63.39

55.41

68.92

73.23

text-embedding-v4 (512 次元)

64.73

56.34

68.79

73.33

text-embedding-v4 (1024 次元)

68.36

59.30

70.14

73.98

text-embedding-v4 (2048 次元)

71.58

61.97

71.99

75.01