All Products
Search
Document Center

Alibaba Cloud Model Studio:Penyematan

Last Updated:Mar 26, 2026

Model penyematan mengonversi data seperti teks, gambar, dan video menjadi vektor untuk berbagai tugas lanjutan, termasuk pencarian semantik, sistem rekomendasi, pengelompokan, klasifikasi, dan deteksi anomali.

Persiapan

Dapatkan Kunci API dan ekspor Kunci API sebagai variabel lingkungan. Jika Anda menggunakan OpenAI SDK atau DashScope SDK untuk melakukan panggilan, instal SDK.

Dapatkan penyematan

Penyematan teks

Untuk memanggil API, tentukan teks yang akan disematkan dan model dalam permintaan.

Antarmuka kompatibel OpenAI

import os
from openai import OpenAI

input_text = "The quality of the clothes is excellent"

client = OpenAI(
    # Kunci API berbeda berdasarkan Region. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika variabel lingkungan tidak dikonfigurasi, ganti ini dengan Kunci API Anda.
    # Ini adalah URL untuk Region Singapura. Untuk menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

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

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

// Inisialisasi klien OpenAI
const openai = new OpenAI({
    // Jika variabel lingkungan tidak dikonfigurasi, ganti ini dengan Kunci API Anda.
    // Kunci API berbeda berdasarkan Region. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    apiKey: process.env.DASHSCOPE_API_KEY, 
    // Ini adalah URL untuk Region Singapura. Untuk menggunakan model di Region China (Beijing), ganti baseURL dengan: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
    baseURL: 'https://dashscope-intl.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: "text-embedding-v4",
            input: inputTexts,
            dimensions: 1024 // Menentukan dimensi vektor. Parameter ini hanya didukung oleh text-embedding-v3 dan text-embedding-v4.
        });

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

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

DashScope

import dashscope
from http import HTTPStatus

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

input_text = "The quality of the clothes is excellent"
resp = dashscope.TextEmbedding.call(
    model="text-embedding-v4",
    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://dashscope-intl.aliyuncs.com/api/v1";
        // Untuk Region China (Beijing), ganti dengan: https://dashscope.aliyuncs.com/api/v1
    }
     public static void main(String[] args) {
        String inputTexts = "The quality of the clothes is excellent";
        try {
            // Bangun parameter permintaan
            TextEmbeddingParam param = TextEmbeddingParam
                    .builder()
                    .model("text-embedding-v4")
                    // Teks input
                    .texts(Collections.singleton(inputTexts))
                    .build();

            // Buat instance model dan panggil
            TextEmbedding textEmbedding = new TextEmbedding();
            TextEmbeddingResult result = textEmbedding.call(param);

            // Cetak hasilnya
            System.out.println(result);

        } catch (NoApiKeyException e) {
            // Tangkap dan tangani pengecualian untuk Kunci API yang belum diatur
            System.err.println("Terjadi pengecualian selama pemanggilan API: " + e.getMessage());
            System.err.println("Periksa apakah Kunci API Anda dikonfigurasi dengan benar.");
            e.printStackTrace();
        }
    }
}
# ======= Penting =======
# Jika Anda menggunakan model di Region China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding
# === Hapus komentar ini sebelum eksekusi ===

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

Vektor multimodal independen

Fitur ini menghasilkan vektor individu untuk konten dalam modalitas berbeda, seperti teks, gambar, dan video. Fitur ini ideal untuk kasus penggunaan yang memerlukan pemrosesan setiap jenis konten secara terpisah.

Untuk menghasilkan vektor multimodal independen, gunakan SDK DashScope atau panggil API secara langsung. Fitur ini tidak didukung oleh antarmuka kompatibel OpenAI atau Konsol.

Python

import dashscope
import json
import os
from http import HTTPStatus

dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# URL dasar di atas untuk Region Singapura. Untuk menggunakan model di Region China (Beijing), ganti dengan: https://dashscope.aliyuncs.com/api/v1

# Input dapat berupa video
# video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"
# input = [{'video': video}]
# atau gambar
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
input = [{'image': image}]
resp = dashscope.MultiModalEmbedding.call(
    # Jika variabel lingkungan tidak dikonfigurasi, berikan Kunci API Model Studio Anda secara langsung, contoh: api_key="sk-xxx"
    # Kunci API berbeda berdasarkan Region. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/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))
    

Java

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://dashscope-intl.aliyuncs.com/api/v1";
        // Untuk Region China (Beijing), ganti dengan: https://dashscope.aliyuncs.com/api/v1
    }
    public static void main(String[] args) {
        try {
            MultiModalEmbedding embedding = new MultiModalEmbedding();
            // Input dapat berupa video
            // MultiModalEmbeddingItemVideo video = new MultiModalEmbeddingItemVideo(
            //     "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4");
            // atau gambar
            MultiModalEmbeddingItemImage image = new MultiModalEmbeddingItemImage(
                "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png");

            MultiModalEmbeddingParam param = MultiModalEmbeddingParam.builder()
                // Jika variabel lingkungan tidak dikonfigurasi, tambahkan Kunci API Model Studio Anda, contoh: .apiKey("sk-xxx")
                .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("Terjadi pengecualian selama pemanggilan API: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Vektor multimodal terpadu

Fitur ini menggabungkan konten dari modalitas berbeda, seperti teks, gambar, dan video, menjadi satu vektor terpadu. Fitur ini cocok untuk kasus penggunaan seperti pencarian teks-ke-gambar, pencarian gambar-ke-gambar, pencarian teks-ke-video, dan pengambilan lintas-modal.

Untuk menghasilkan vektor multimodal terpadu, gunakan SDK DashScope Python atau panggil API secara langsung. Fitur ini tidak didukung oleh antarmuka kompatibel OpenAI, SDK DashScope Java, atau Konsol.
  • qwen3-vl-embedding: Mendukung pembuatan vektor terpadu maupun vektor independen. Menghasilkan vektor terpadu ketika text, image, dan video berada dalam objek yang sama, dan vektor independen untuk masing-masing modalitas tersebut ketika diberikan sebagai elemen terpisah.

  • qwen2.5-vl-embedding: Hanya mendukung vektor terpadu dan tidak mendukung vektor individu.

  • tongyi-embedding-vision-plus-2026-03-06 dan tongyi-embedding-vision-flash-2026-03-06 mendukung penyematan terpadu maupun independen. Buat penyematan terpadu dengan menempatkan teks, gambar, dan video dalam objek konten yang sama.

Python

import dashscope
import json
import os
from http import HTTPStatus

# Vektor Multimodal Terpadu: Menggabungkan teks, gambar, dan video menjadi satu Vektor Terpadu.
# Cocok untuk kasus penggunaan seperti pengambilan lintas-modal dan pencarian gambar.
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/zh-CN/20250107/lbcemt/new+video.mp4"

# Input berisi teks, gambar, dan video, yang digabungkan model menjadi satu Vektor Terpadu.
input_data = [
    {
        "text": text,
        "image": image,
        "video": video
    }
]

# Gunakan qwen3-vl-embedding untuk menghasilkan Vektor Terpadu
resp = dashscope.MultiModalEmbedding.call(
    # Jika variabel lingkungan tidak dikonfigurasi, berikan Kunci API Model Studio Anda secara langsung, contoh: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-vl-embedding",
    input=input_data,
    # Parameter opsional: Menentukan dimensi vektor. Nilai yang didukung: 2560, 2048, 1536, 1024, 768, 512, 256. Default: 2560
    # dimension = 1024
)

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

Java (HTTP)

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 {
        // Jika variabel lingkungan tidak dikonfigurasi, berikan Kunci API Model Studio Anda secara langsung, contoh: String apiKey = "sk-xxx";
        String apiKey = System.getenv("DASHSCOPE_API_KEY");

        // Vektor Multimodal Terpadu: Menggabungkan teks, gambar, dan video menjadi satu Vektor Terpadu.
        // Ketika teks, gambar, dan video ditempatkan dalam objek yang sama pada input, model menghasilkan Vektor Terpadu.
        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/zh-CN/20250107/lbcemt/new+video.mp4\""
                + "  }]"
                + "}"
                + "}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://dashscope.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());
    }
}

Pemilihan model

Pemilihan model yang tepat bergantung pada jenis data masukan dan kasus penggunaan Anda.

  • Untuk teks biasa atau kode: Kami merekomendasikan menggunakan text-embedding-v4. Ini adalah model kami dengan performa tertinggi, mendukung fitur lanjutan seperti instruksi tugas dan vektor jarang, serta mencakup sebagian besar skenario pemrosesan teks.

  • Untuk konten multimodal:

    • Penyematan multimodal terpadu: Untuk merepresentasikan input single-modal atau mixed-modal sebagai penyematan terpadu dalam skenario seperti pengambilan lintas-modal dan pencarian gambar, gunakan qwen3-vl-embedding, tongyi-embedding-vision-plus-2026-03-06, atau tongyi-embedding-vision-flash-2026-03-06. Misalnya, masukkan gambar kemeja dengan teks "Temukan gaya serupa yang terlihat lebih muda." Model akan menggabungkan gambar dan instruksi teks menjadi satu penyematan.

    • Penyematan independen: Untuk menghasilkan penyematan independen untuk setiap input, seperti gambar dan judul teks yang sesuai, pilih tongyi-embedding-vision-plus, tongyi-embedding-vision-flash, tongyi-embedding-vision-plus-2026-03-06, tongyi-embedding-vision-flash-2026-03-06, atau model multimodal tujuan umum multimodal-embedding-v1.

Tabel berikut mencantumkan spesifikasi untuk semua model penyematan.

Penyematan teks

Singapura

Model

Dimensi penyematan

Ukuran batch

Token maks per batch (Catatan)

Harga (per 1 juta token input)

Bahasa

Kuota gratis (Catatan)

text-embedding-v4

Bagian dari seri Qwen3-Embedding

2.048, 1.536, 1.024 (default), 768, 512, 256, 128, 64

10

8.192

$0,07

Lebih dari 100 bahasa utama, termasuk Tionghoa, Inggris, Spanyol, Prancis, Portugis, Indonesia, Jepang, Korea, Jerman, dan Rusia

1 juta token

Masa Berlaku: 90 hari setelah Anda mengaktifkan Model Studio

text-embedding-v3

1.024 (default), 768, 512

Lebih dari 50 bahasa utama, termasuk Tionghoa, Inggris, Spanyol, Prancis, Portugis, Indonesia, Jepang, Korea, Jerman, dan Rusia

500.000 token

Masa Berlaku: 90 hari setelah Anda mengaktifkan Model Studio

China (Beijing)

Model

Dimensi penyematan

Ukuran batch

Token maks per batch (Catatan)

Harga (per 1 juta token input)

Bahasa

text-embedding-v4

Bagian dari seri Qwen3-Embedding

2.048, 1.536, 1.024 (default), 768, 512, 256, 128, 64

10

8.192

$0,072

Lebih dari 100 bahasa utama, termasuk Tionghoa, Inggris, Spanyol, Prancis, Portugis, Indonesia, Jepang, Korea, Jerman, dan Rusia, serta beberapa bahasa pemrograman

China (Hong Kong)

Model

Dimensi penyematan

Ukuran batch

Token maks per batch (Catatan)

Harga (per 1 juta token input)

Bahasa

text-embedding-v4

Bagian dari seri Qwen3-Embedding

2.048, 1.536, 1.024 (default), 768, 512, 256, 128, 64

10

8.192

$0,07

Lebih dari 100 bahasa utama, termasuk Tionghoa, Inggris, Spanyol, Prancis, Portugis, Indonesia, Jepang, Korea, Jerman, dan Rusia, serta beberapa bahasa pemrograman

Catatan

Ukuran batch adalah jumlah maksimum teks yang diproses dalam satu panggilan API. Misalnya, text-embedding-v4 memiliki ukuran batch 10. Artinya, Anda dapat menyertakan hingga 10 teks untuk disematkan dalam satu permintaan, dan setiap teks tidak boleh melebihi 8.192 token. Batasan ini berlaku untuk:

  • Input array string: Array dapat berisi hingga 10 elemen.

  • Input file: File teks dapat berisi hingga 10 baris teks.

Penyematan multimodal

Model menghasilkan penyematan vektor dari input teks, gambar, atau video. Gunakan penyematan ini untuk klasifikasi video, klasifikasi gambar, pengambilan gambar-teks, pencarian teks-ke-gambar, dan pencarian teks-ke-video.

API mendukung input tunggal berupa teks, gambar, atau video, serta input gabungan seperti teks dan gambar. Beberapa model mendukung beberapa input jenis yang sama, seperti beberapa gambar dalam satu permintaan. Untuk batasan spesifik, lihat keterbatasan masing-masing model.

Singapura

Model

Dimensi penyematan

Batas panjang teks

Batas ukuran gambar

Batas ukuran video

Harga

Kuota gratis(Catatan)

tongyi-embedding-vision-plus

1152 (default), 1024, 512, 256, 128, 64

1.024 token

Hingga 3 MB per gambar

Hingga 10 MB per file video

Gambar/Video: $0,09

Teks: $0,09

1 juta token

Masa Berlaku: 90 hari setelah mengaktifkan Model Studio

tongyi-embedding-vision-flash

768 (default), 512, 256, 128, 64

Gambar/Video: $0,03

Teks: $0,09

Beijing

Model

Dimensi penyematan

Batas panjang teks

Batas ukuran gambar

Batas ukuran video

Harga

qwen3-vl-embedding

2560 (default), 2048, 1536, 1024, 768, 512, 256

32.000 token

Maks. 1 gambar, hingga 5 MB

Hingga 50 MB per file video

Gambar/Video: $0,258

Teks: $0,1

multimodal-embedding-v1

1024

512 token

Hingga 8 gambar, 3 MB masing-masing

Hingga 10 MB per file video

Uji coba gratis

Batasan input dan bahasa:

Model multimodal terpadu

Model

Teks

Gambar

Video

Batas permintaan

qwen3-vl-embedding

Mendukung 33 bahasa utama, termasuk Tionghoa, Inggris, Jepang, Korea, Prancis, dan Jerman.

JPEG, PNG, WEBP, BMP, TIFF, ICO, DIB, ICNS, dan SGI (URL atau Base64 didukung).

MP4, AVI, dan MOV (hanya URL).

Maks 20 elemen per permintaan (hingga 5 gambar).

Model multimodal independen

Model

Teks

Gambar

Video

Batas permintaan

tongyi-embedding-vision-plus

Tionghoa dan Inggris

JPG, PNG, dan BMP (URL atau Base64 didukung).

MP4, MPEG, AVI, MOV, MPG, WEBM, FLV, dan MKV (hanya URL).

Tidak ada batas jumlah elemen; permintaan dibatasi oleh jumlah token per batch.

tongyi-embedding-vision-flash

multimodal-embedding-v1

Hingga 20 elemen konten per permintaan, termasuk maksimal 1 gambar dan 1 video.

Fitur inti

Dimensi penyematan kustom

Model text-embedding-v4, text-embedding-v3, tongyi-embedding-vision-plus, tongyi-embedding-vision-flash, dan qwen3-vl-embedding mendukung dimensi vektor kustom. Dimensi yang lebih tinggi mempertahankan lebih banyak informasi semantik tetapi juga meningkatkan biaya penyimpanan dan komputasi.

  • Kasus penggunaan umum (Direkomendasikan): Dimensi 1024 menawarkan keseimbangan optimal antara performa dan biaya, sehingga cocok untuk sebagian besar tugas pencarian semantik.

  • Persyaratan presisi tinggi: Untuk aplikasi presisi tinggi, pilih dimensi 1536 atau 2048. Ini meningkatkan presisi tetapi juga secara signifikan meningkatkan overhead penyimpanan dan komputasi.

  • Lingkungan dengan sumber daya terbatas: Dalam skenario sensitif biaya, pilih dimensi 768 atau lebih rendah. Ini secara signifikan mengurangi konsumsi sumber daya dengan mengorbankan sebagian informasi semantik.

API OpenAI

import os
from openai import OpenAI

client = OpenAI(
    # Kunci API berbeda berdasarkan Region. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Berikut adalah URL untuk Region Singapura. Jika Anda menggunakan model di Region China (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

resp = client.embeddings.create(
    model="text-embedding-v4",
    input=["I like it and will buy from here again"],
    # Atur dimensi vektor ke 256
    dimensions=256
)
print(f"Dimensi vektor: {len(resp.data[0].embedding)}")

DashScope

import dashscope

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

resp = dashscope.TextEmbedding.call(
    model="text-embedding-v4",
    input=["I like it and will buy from here again"],
    # Atur dimensi vektor ke 256
    dimension=256
)

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

Teks kueri dan dokumen (text_type)

Parameter ini hanya tersedia melalui SDK dan API DashScope.

Untuk mencapai hasil optimal dalam tugas pencarian, proses konten berbeda berdasarkan perannya. Parameter text_type dirancang untuk tujuan ini:

  • text_type: 'query': Gunakan untuk teks kueri yang dimasukkan pengguna. Model menghasilkan vektor "seperti judul" yang lebih terarah dan dioptimalkan untuk "bertanya" dan "menemukan."

  • text_type: 'document' (default): Gunakan untuk teks dokumen yang disimpan dalam basis pengetahuan Anda. Model menghasilkan vektor "seperti isi" yang berisi informasi lebih komprehensif dan dioptimalkan untuk pencocokan.

Ketika Anda mencocokkan teks pendek dengan teks panjang, Anda harus membedakan antara query dan document. Namun, untuk tugas seperti pengelompokan atau klasifikasi di mana semua teks memiliki peran yang sama, Anda tidak perlu mengatur parameter ini.

Instruksi tugas (instruct)

Parameter ini hanya tersedia melalui SDK dan API DashScope.

Berikan instruksi tugas berbahasa Inggris yang jelas untuk membimbing model text-embedding-v4 agar mengoptimalkan kualitas vektor untuk skenario pengambilan tertentu, meningkatkan presisi. Saat menggunakan fitur ini, Anda harus mengatur parameter text_type ke query.

# Skenario: Saat membangun vektor dokumen untuk mesin pencari, tambahkan instruksi untuk mengoptimalkan kualitas vektor untuk pengambilan.
resp = dashscope.TextEmbedding.call(
    model="text-embedding-v4",
    input="Research papers on Machine Learning",
    text_type="query",
    instruct="Given a research paper query, retrieve relevant research paper"
)

Vektor padat dan jarang

Parameter ini hanya tersedia melalui SDK dan API DashScope.

Model text-embedding-v4 dan text-embedding-v3 mendukung tiga jenis output vektor untuk strategi pengambilan berbeda.

Jenis vektor (output_type)

Keunggulan utama

Batasan utama

Kasus penggunaan khas

dense

Pemahaman semantik mendalam. Mengidentifikasi sinonim dan konteks, menghasilkan hasil pengambilan yang lebih relevan.

Biaya komputasi dan penyimpanan lebih tinggi. Tidak menjamin pencocokan eksak untuk kata kunci.

Pencarian semantik, tanya jawab berbasis AI, dan rekomendasi konten.

sparse

Efisiensi komputasi tinggi. Fokus pada pencocokan eksak untuk kata kunci dan memungkinkan penyaringan cepat.

Kurang pemahaman semantik. Tidak dapat memproses sinonim atau konteks.

Pengambilan log, pencarian SKU produk, dan penyaringan informasi presisi.

dense&sparse

Menggabungkan pencocokan semantik dan kata kunci untuk hasil pencarian optimal. Biaya generasi sama, dan overhead panggilan API identik dengan mode vektor tunggal.

Membutuhkan lebih banyak penyimpanan. Arsitektur sistem dan logika pengambilan lebih kompleks.

Mesin pencari hibrida berkualitas tinggi untuk lingkungan produksi.

Contoh

Kode ini hanya untuk demonstrasi. Di lingkungan produksi, pra-hitung dan simpan penyematan dalam database vektor. Untuk pengambilan, Anda hanya perlu menghasilkan penyematan kueri.

Pencarian semantik

Hitung kesamaan vektor antara kueri dan dokumen untuk melakukan pencarian semantik yang akurat.

import dashscope
import numpy as np
from dashscope import TextEmbedding

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    ""Hitung kesamaan kosinus.""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

def semantic_search(query, documents, top_k=5):
    ""Lakukan pencarian semantik.""
    # Hasilkan penyematan kueri.
    query_resp = TextEmbedding.call(
        model="text-embedding-v4",
        input=query,
        dimension=1024
    )
    query_embedding = query_resp.output['embeddings'][0]['embedding']

    # Hasilkan penyematan dokumen.
    doc_resp = TextEmbedding.call(
        model="text-embedding-v4",
        input=documents,
        dimension=1024
    )

    # Hitung kesamaan.
    similarities = []
    for i, doc_emb in enumerate(doc_resp.output['embeddings']):
        similarity = cosine_similarity(query_embedding, doc_emb['embedding'])
        similarities.append((i, similarity))

    # Urutkan dan kembalikan hasil top_k.
    similarities.sort(key=lambda x: x[1], reverse=True)
    return [(documents[i], sim) for i, sim in similarities[:top_k]]

# Contoh penggunaan
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"Kesamaan: {sim:.3f}, Dokumen: {doc}")

Sistem rekomendasi

Analisis vektor dari riwayat perilaku pengguna untuk mengidentifikasi preferensi dan merekomendasikan item serupa.

import dashscope
import numpy as np
from dashscope import TextEmbedding

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    ""Hitung kesamaan kosinus.""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
def build_recommendation_system(user_history, all_items, top_k=10):
    ""Bangun sistem rekomendasi.""
    # Hasilkan penyematan riwayat pengguna.
    history_resp = TextEmbedding.call(
        model="text-embedding-v4",
        input=user_history,
        dimension=1024
    )

    # Hitung vektor preferensi pengguna dengan rata-rata.
    user_embedding = np.mean([
        emb['embedding'] for emb in history_resp.output['embeddings']
    ], axis=0)

    # Hasilkan penyematan semua item.
    items_resp = TextEmbedding.call(
        model="text-embedding-v4",
        input=all_items,
        dimension=1024
    )

    # Hitung skor rekomendasi.
    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))

    # Urutkan dan kembalikan hasil rekomendasi.
    recommendations.sort(key=lambda x: x[1], reverse=True)
    return recommendations[:top_k]

# Contoh penggunaan
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"Skor Rekomendasi: {score:.3f}, Film: {movie}")

Pengelompokan teks

Secara otomatis kelompokkan teks serupa dengan menganalisis jarak antar vektornya.

# scikit-learn diperlukan: pip install scikit-learn
import dashscope
import numpy as np
from sklearn.cluster import KMeans

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def cluster_texts(texts, n_clusters=2):
    ""Kelompokkan sekumpulan teks.""
    # 1. Dapatkan penyematan untuk semua teks.
    resp = dashscope.TextEmbedding.call(
        model="text-embedding-v4",
        input=texts,
        dimension=1024
    )
    embeddings = np.array([item['embedding'] for item in resp.output['embeddings']])

    # 2. Gunakan algoritma KMeans untuk pengelompokan.
    kmeans = KMeans(n_clusters=n_clusters, random_state=0, n_init='auto').fit(embeddings)

    # 3. Atur dan kembalikan hasilnya.
    clusters = {i: [] for i in range(n_clusters)}
    for i, label in enumerate(kmeans.labels_):
        clusters[label].append(texts[i])
    return clusters


# Contoh penggunaan
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"--- Kluster {cluster_id} ---")
    for doc in docs:
        print(f"- {doc}")

Klasifikasi teks

Lakukan klasifikasi teks zero-shot dengan menghitung kesamaan vektor antara teks input dan label yang telah ditentukan. Metode ini mengklasifikasikan teks tanpa memerlukan contoh berlabel sebelumnya.

import dashscope
import numpy as np

# Jika Anda menggunakan model di Region China (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def cosine_similarity(a, b):
    ""Hitung kesamaan kosinus.""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))


def classify_text_zero_shot(text, labels):
    ""Lakukan klasifikasi teks zero-shot.""
    # 1. Dapatkan penyematan untuk teks input dan semua label.
    resp = dashscope.TextEmbedding.call(
        model="text-embedding-v4",
        input=[text] + labels,
        dimension=1024
    )
    embeddings = resp.output['embeddings']
    text_embedding = embeddings[0]['embedding']
    label_embeddings = [emb['embedding'] for emb in embeddings[1:]]

    # 2. Hitung kesamaan dengan setiap label.
    scores = [cosine_similarity(text_embedding, label_emb) for label_emb in label_embeddings]

    # 3. Kembalikan label dengan kesamaan tertinggi.
    best_match_index = np.argmax(scores)
    return labels[best_match_index], scores[best_match_index]


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

label, score = classify_text_zero_shot(text_to_classify, possible_labels)
print(f"Teks input: '{text_to_classify}'")
print(f"Kategori yang paling cocok: '{label}' (Kesamaan: {score:.3f})")

Deteksi anomali

Identifikasi data anomali dengan menghitung kesamaan vektornya terhadap vektor pusat sampel normal. Skor kesamaan rendah menunjukkan potensi anomali.

Ambang batas dalam kode contoh hanya untuk demonstrasi. Dalam praktiknya, nilai ambang batas ideal bergantung pada konten dan distribusi data Anda, sehingga tidak ada nilai tetap. Kalibrasi nilai ini pada dataset Anda sendiri.
import dashscope
import numpy as np


def cosine_similarity(a, b):
    ""Hitung kesamaan kosinus.""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))


def detect_anomaly(new_comment, normal_comments, threshold=0.6):
    ""Deteksi anomali.""
    # 1. Hasilkan penyematan untuk semua komentar normal dan komentar baru.
    all_texts = normal_comments + [new_comment]
    resp = dashscope.TextEmbedding.call(
        model="text-embedding-v4",
        input=all_texts,
        dimension=1024
    )
    embeddings = [item['embedding'] for item in resp.output['embeddings']]

    # 2. Hitung vektor pusat (rata-rata) komentar normal.
    normal_embeddings = np.array(embeddings[:-1])
    normal_center_vector = np.mean(normal_embeddings, axis=0)

    # 3. Hitung kesamaan antara penyematan komentar baru dan vektor pusat.
    new_comment_embedding = np.array(embeddings[-1])
    similarity = cosine_similarity(new_comment_embedding, normal_center_vector)

    # 4. Tentukan apakah ini anomali.
    is_anomaly = similarity < threshold
    return is_anomaly, similarity


# Contoh penggunaan
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("--- Contoh Deteksi Anomali ---")
for desc, comment in test_comments.items():
    is_anomaly, score = detect_anomaly(comment, normal_user_comments)
    result = "Ya" if is_anomaly else "Tidak"
    print(f"Komentar: '{comment}'")
    print(f"Apakah anomali: {result} (Kesamaan dengan sampel normal: {score:.3f})\n")

Referensi API

Kode kesalahan

Jika pemanggilan model gagal dan mengembalikan pesan kesalahan, lihat Pesan kesalahan untuk resolusi.

Batas laju

Untuk batas laju model, lihat Batas laju.

Performa model (MTEB/CMTEB)

Tolok ukur evaluasi

  • MTEB: Massive Text Embedding Benchmark, tolok ukur komprehensif yang mengevaluasi performa umum pada tugas seperti klasifikasi, pengelompokan, dan pengambilan.

  • CMTEB: Chinese Massive Text Embedding Benchmark, tolok ukur yang mengevaluasi performa khusus pada teks Tionghoa.

  • Skor berkisar dari 0 hingga 100. Nilai lebih tinggi menunjukkan performa lebih baik.

Model

MTEB

MTEB (Tugas Pengambilan)

CMTEB

CMTEB (Tugas Pengambilan)

text-embedding-v3 (512 dimensi)

62,11

54,30

66,81

71,88

text-embedding-v3 (768 dimensi)

62,43

54,74

67,90

72,29

text-embedding-v3 (1024 dimensi)

63,39

55,41

68,92

73,23

text-embedding-v4 (512 dimensi)

64,73

56,34

68,79

73,33

text-embedding-v4 (1024 dimensi)

68,36

59,30

70,14

73,98

text-embedding-v4 (2048 dimensi)

71,58

61,97

71,99

75,01