全部产品
Search
文档中心

Alibaba Cloud Model Studio:Embedding

更新时间:Feb 07, 2026

Model embedding mengonversi data seperti teks, gambar, dan video menjadi vektor numerik. Vektor ini digunakan untuk tugas lanjutan seperti pencarian semantik, rekomendasi, pengelompokan, klasifikasi, dan deteksi anomali.

Persiapan

Anda harus mendapatkan Kunci API dan menyetel Kunci API sebagai Variabel lingkungan. Jika Anda menggunakan OpenAI SDK atau DashScope SDK untuk melakukan panggilan, Anda juga harus menginstal SDK.

Mendapatkan embedding

Text embedding

Saat memanggil API, tentukan teks yang akan di-embed dan nama model dalam permintaan.

Antarmuka kompatibel dengan OpenAI

import os
from openai import OpenAI

input_text = "The quality of the clothes is excellent"

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti dengan Kunci API Anda di sini
    # Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti 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({
    // Pastikan Anda telah menyetel variabel lingkungan DASHSCOPE_API_KEY dengan benar
    apiKey: process.env.DASHSCOPE_API_KEY, // Jika Anda belum mengonfigurasi variabel lingkungan, ganti dengan Kunci API Anda di sini
    // Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.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 // Tentukan dimensi embedding (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 wilayah Tiongkok (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 wilayah Tiongkok (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 disetel
            System.err.println("Terjadi pengecualian saat memanggil API: " + e.getMessage());
            System.err.println("Periksa apakah Kunci API Anda dikonfigurasi dengan benar.");
            e.printStackTrace();
        }
    }
}
# ======= Penting =======
# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_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"
        ]
    }
}'

Embedding multimodal independen

Fitur embedding multimodal independen hanya tersedia melalui DashScope SDK atau API. Fitur ini tidak didukung oleh antarmuka kompatibel OpenAI atau Konsol. Fitur ini menghasilkan vektor terpisah dan independen untuk konten dari modalitas berbeda, seperti teks, gambar, dan video. Fitur ini cocok untuk skenario di mana Anda perlu memproses setiap jenis konten secara individual.

import dashscope
import json
import os
from http import HTTPStatus

dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Di atas adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1

# Input bisa 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 Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    # Kunci API untuk wilayah Singapura dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/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))
    

Embedding multimodal terpadu

Fitur embedding multimodal terpadu hanya tersedia melalui DashScope SDK atau API. Fitur ini tidak didukung oleh antarmuka kompatibel OpenAI atau Konsol. Fitur ini menggabungkan konten dari modalitas berbeda, seperti teks, gambar, dan video, menjadi satu vektor terpadu. Fitur ini cocok untuk skenario seperti pencarian teks-ke-gambar, pencarian gambar-ke-gambar, pencarian teks-ke-video, dan pengambilan lintas-modalitas.

qwen3-vl-embedding mendukung pembuatan embedding terpadu maupun independen. Ketika teks, gambar, dan video ditempatkan dalam objek yang sama, vektor terpadu akan dihasilkan. Ketika mereka merupakan elemen terpisah, vektor independen akan dihasilkan untuk masing-masing. qwen2.5-vl-embedding hanya mendukung embedding terpadu dan tidak mendukung embedding independen.
import dashscope
import json
import os
from http import HTTPStatus

# Embedding multimodal terpadu: Menggabungkan teks, gambar, dan video menjadi satu vektor terpadu
# Cocok untuk skenario seperti pengambilan lintas-modalitas dan pencarian gambar
text = "This is a test text for generating a fused multimodal embedding"
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 mencakup teks, gambar, dan video. Model akan menggabungkannya 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 Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen3-vl-embedding",
    input=input_data,
    # Parameter opsional: Tentukan dimensi embedding (Mendukung 2560, 2048, 1536, 1024, 768, 512, 256. Default: 2560)
    # parameters={"dimension": 1024}
)

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

Pemilihan model

Model yang tepat bergantung pada jenis data masukan dan skenario aplikasi Anda.

  • Untuk teks biasa atau kode: Gunakan text-embedding-v4, model paling canggih yang tersedia saat ini. Model ini mendukung fitur lanjutan seperti instruksi dan vektor jarang, serta mencakup sebagian besar skenario pemrosesan teks.

  • Memproses konten multimodal:

    • Embedding multimodal terpadu: Untuk merepresentasikan input modal-tunggal atau campuran sebagai vektor terpadu dalam skenario seperti pengambilan lintas-modalitas dan pencarian gambar, gunakan qwen3-vl-embedding. Misalnya, Anda dapat memasukkan gambar kaus dengan teks "temukan gaya serupa yang terlihat lebih muda". Model dapat menggabungkan gambar dan instruksi teks menjadi satu vektor untuk pemahaman.

    • Embedding independen: Untuk menghasilkan vektor independen untuk setiap input, seperti gambar dan judul teks yang sesuai, pilih tongyi-embedding-vision-plus, tongyi-embedding-vision-flash, atau model multimodal umum multimodal-embedding-v1. Ini menghasilkan vektor terpisah untuk setiap bagian input (gambar, teks).

Tabel berikut menyediakan spesifikasi terperinci untuk semua model embedding yang tersedia.

Text embedding

Singapura

Model

Dimensi embedding

Ukuran batch

Token maks per batch (Catatan)

Harga (per 1 juta token input)

Bahasa yang didukung

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

Berlaku: 90 hari setelah mengaktifkan Model Studio

text-embedding-v3

1.024 (bawaan), 768, 512

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

500.000 token

Berlaku: 90 hari setelah mengaktifkan Model Studio

Beijing

Model

Dimensi embedding

Ukuran batch

Token maks per batch (Catatan)

Harga (per 1 juta token input)

Bahasa yang didukung

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 beberapa bahasa pemrograman

Catatan

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

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

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

Multimodal embedding

Model menghasilkan vektor kontinu berdasarkan input pengguna, yang dapat berupa teks, gambar, atau video. Ini cocok untuk tugas seperti klasifikasi video, klasifikasi gambar, pengambilan teks-gambar, pencarian gambar-ke-gambar, dan pencarian video-ke-teks/gambar.

Antarmuka mendukung pengunggahan satu segmen teks, satu gambar, atau satu file video. Antarmuka juga memungkinkan kombinasi jenis berbeda (seperti teks + gambar). Beberapa model mendukung beberapa input dari jenis yang sama (seperti beberapa gambar). Untuk informasi lebih lanjut, lihat detail batasan untuk model tertentu.

Singapura

Model

Dimensi embedding

Batas panjang teks

Batas ukuran gambar

Batas ukuran video

Harga (per 1 juta token input)

Kuota gratis(Catatan)

tongyi-embedding-vision-plus

1152, 1024, 512, 256, 128, 64

1.024 token

Satu file tidak boleh lebih besar dari 3 MB.

Ukuran file video hingga 10 MB

Gambar/Video: $0,09

Teks: $0,09

1 juta token

Berlaku: 90 hari setelah mengaktifkan Model Studio

tongyi-embedding-vision-flash

768, 512, 256, 128, 64

Gambar/Video: $0,03

Teks: $0,09

Beijing

Model

Dimensi embedding

Batas panjang teks

Batas ukuran gambar

Batas ukuran video

Harga (per 1 juta token input)

qwen3-vl-embedding

2560, 2048, 1536, 1024, 768, 512, 256

32.000 token

Maks 1 gambar, hingga 5 MB

Ukuran file video hingga 50 MB

Gambar/Video: $0,258

Teks: $0,1

multimodal-embedding-v1

1024

512 token

Maks 8 gambar, masing-masing hingga 3 MB

Ukuran file video hingga 10 MB

Uji coba gratis

Batasan input:

Model embedding multimodal terpadu

Model

Teks

Gambar

Video

Elemen maks per permintaan

qwen3-vl-embedding

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

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

MP4, AVI, MOV (hanya URL)

Total elemen konten per permintaan tidak boleh melebihi 20. Gambar, teks, dan video berbagi batas ini.

Model embedding multimodal independen

Model

Teks

Gambar

Video

Elemen maks per permintaan

tongyi-embedding-vision-plus

Tionghoa/Inggris

JPG, PNG, BMP (URL atau Base64 didukung)

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

Tidak ada batasan jumlah elemen konten. Total jumlah token tidak boleh melebihi batas token.

tongyi-embedding-vision-flash

multimodal-embedding-v1

Total elemen konten per permintaan tidak boleh melebihi 20. Maks 1 gambar, 1 video, dan 20 entri teks, berbagi batas total.

Fitur inti

Mengganti dimensi embedding

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

  • Skenario umum (Direkomendasikan): Dimensi 1024 menawarkan keseimbangan terbaik antara kinerja dan biaya, cocok untuk sebagian besar tugas pengambilan semantik.

  • Skenario presisi tinggi: Untuk domain yang membutuhkan presisi tinggi, pilih dimensi 1536 atau 2048. Ini memberikan peningkatan presisi tertentu tetapi secara signifikan meningkatkan overhead penyimpanan dan komputasi.

  • Skenario terbatas sumber daya: Dalam skenario yang sensitif biaya, pilih dimensi 768 atau lebih rendah. Ini secara signifikan mengurangi konsumsi sumber daya tetapi mengakibatkan kehilangan informasi semantik.

Antarmuka kompatibel dengan OpenAI

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Tiongkok (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"],
    # Setel dimensi embedding ke 256
    dimensions=256
)
print(f"Dimensi embedding: {len(resp.data[0].embedding)}")

DashScope

import dashscope

# Jika Anda menggunakan model di wilayah Tiongkok (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"],
    # Setel dimensi embedding ke 256
    dimension=256
)

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

Membedakan antara teks kueri dan dokumen (text_type)

Parameter ini saat ini hanya dapat diaktifkan melalui DashScope SDK dan API.

Untuk mencapai hasil terbaik dalam tugas pencarian, proses konten jenis berbeda dengan embedding yang ditargetkan untuk memanfaatkan sepenuhnya peran masing-masing. 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 di database. Model menghasilkan vektor "seperti isi" yang berisi informasi lebih komprehensif dan dioptimalkan untuk diambil.

Saat menggunakan teks pendek untuk mencocokkan teks panjang, bedakan antara query dan document. Untuk tugas di mana semua teks memiliki peran yang sama, seperti pengelompokan atau klasifikasi, Anda tidak perlu menyetel parameter ini.

Gunakan instruksi untuk meningkatkan kinerja (instruct)

Parameter ini saat ini hanya dapat diaktifkan melalui DashScope SDK dan API.

Berikan instruksi bahasa Inggris yang jelas untuk membimbing text-embedding-v4 mengoptimalkan kualitas vektor untuk skenario pengambilan tertentu, sehingga secara efektif meningkatkan presisi. Saat menggunakan fitur ini, setel parameter text_type ke query.

# Skenario: Saat membangun vektor dokumen untuk mesin pencari, Anda dapat menambahkan 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 saat ini hanya dapat diaktifkan melalui DashScope SDK dan API.

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

Jenis vektor (output_type)

Keunggulan utama

Kekurangan utama

Skenario aplikasi khas

dense

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

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

Pencarian semantik, Chat AI, rekomendasi konten.

sparse

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

Mengorbankan pemahaman semantik. Tidak dapat menangani sinonim atau konteks.

Pengambilan log, pencarian SKU produk, penyaringan informasi presisi.

dense&sparse

Menggabungkan semantik dan kata kunci untuk hasil pencarian terbaik. Biaya generasi sama. Overhead panggilan API identik dengan mode vektor tunggal.

Kebutuhan penyimpanan besar. Arsitektur sistem dan logika pengambilan lebih kompleks.

Mesin pencari hibrida berkualitas tinggi untuk lingkungan produksi.

Contoh penggunaan

Kode berikut hanya untuk tujuan demonstrasi. Di lingkungan produksi, pra-hitung vektor embedding dan simpan di database vektor. Selama pengambilan, Anda hanya perlu menghitung vektor kueri.

Pencarian semantik

Mencapai pencocokan semantik presisi dengan menghitung kesamaan vektor antara kueri dan dokumen.

import dashscope
import numpy as np
from dashscope import TextEmbedding

# Jika Anda menggunakan model di wilayah Tiongkok (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 cosinus"""
    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 vektor kueri
    query_resp = TextEmbedding.call(
        model="text-embedding-v4",
        input=query,
        dimension=1024
    )
    query_embedding = query_resp.output['embeddings'][0]['embedding']

    # Hasilkan vektor 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

Temukan minat pengguna dan rekomendasikan item serupa dengan menganalisis vektor dari perilaku historis mereka.

import dashscope
import numpy as np
from dashscope import TextEmbedding

# Jika Anda menggunakan model di wilayah Tiongkok (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 cosinus"""
    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 vektor 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 semua vektor 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

Otomatis mengelompokkan teks serupa dengan menganalisis jarak antara vektor mereka.

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

# Jika Anda menggunakan model di wilayah Tiongkok (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 vektor 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"--- Cluster {cluster_id} ---")
    for doc in docs:
        print(f"- {doc}")

Klasifikasi teks

Kenali dan klasifikasikan kategori baru tanpa contoh berlabel sebelumnya dengan menghitung kesamaan vektor antara teks input dan label yang telah ditentukan.

import dashscope
import numpy as np

# Jika Anda menggunakan model di wilayah Tiongkok (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 cosinus"""
    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 vektor 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 yang berbeda secara signifikan dari pola normal dengan menghitung kesamaan vektor antara vektor teks dan pusat vektor sampel normal.

Ambang batas dalam kode contoh hanya untuk tujuan demonstrasi. Dalam skenario bisnis dunia nyata, nilai kesamaan spesifik bervariasi tergantung pada konten dan distribusi data. Tidak ada ambang batas tetap. Kalibrasi nilai ini berdasarkan dataset Anda sendiri.
import dashscope
import numpy as np


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


def detect_anomaly(new_comment, normal_comments, threshold=0.6):
    # 1. Vektorisasi 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 (nilai rata-rata) komentar normal
    normal_embeddings = np.array(embeddings[:-1])
    normal_center_vector = np.mean(normal_embeddings, axis=0)

    # 3. Hitung kesamaan antara 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 error

Jika panggilan gagal, lihat Pesan error untuk troubleshooting.

Batas laju

Lihat Batas laju.

Kinerja model (MTEB/CMTEB)

Tolok ukur evaluasi

  • MTEB: Massive Text Embedding Benchmark, evaluasi komprehensif kemampuan tujuan umum untuk tugas seperti klasifikasi, pengelompokan, dan pengambilan.

  • CMTEB: Chinese Massive Text Embedding Benchmark, evaluasi khusus untuk teks Tionghoa.

  • Skor berkisar dari 0 hingga 100. Nilai yang lebih tinggi menunjukkan kinerja yang 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