Komponen Evaluasi Recall Berbasis Vektor mengukur akurasi sistem pengambilan vektor dengan menghitung tingkat hit (hit rate) di ruang penyematan berdimensi tinggi. Gunakan komponen ini untuk mengevaluasi recall u2i (user-to-item) dan i2i (item-to-item) dalam sistem rekomendasi dan pipeline information retrieval.
Cara kerja
Komponen ini mendukung dua jenis recall:
u2i: Menggunakan vektor pengguna untuk mengambil K item teratas yang paling mirip dengan pengguna tertentu.
i2i: Menggunakan vektor item untuk mengambil K item teratas yang paling mirip dengan item tertentu.
Tingkat hit dihitung sebagai berikut: diberikan himpunan M berisi item relevan (vektor pengguna untuk u2i, vektor item untuk i2i) yang memicu recall, komponen mengambil K tetangga terdekat dan menghitung berapa banyak, N, yang termasuk dalam M. Tingkat hit sama dengan |N| / |M|.
Komponen ini juga menghasilkan item yang berada di luar M beserta nilai jaraknya untuk mendukung analisis kasus buruk (bad case analysis).
Komponen ini dapat dijalankan dalam mode standalone atau terdistribusi:
Semua worker memuat tabel penyematan pengguna atau item dan membangun indeks yang dibutuhkan untuk pencarian k-nearest neighbor (KNN).
Worker melakukan lookup pada tabel sekuens ground truth secara batch dan mengembalikan K tetangga terdekat.
Komponen menghitung tingkat hit dengan membandingkan nilai sekuens dalam tabel sekuens ground truth terhadap hasil K teratas.
Hasil agregasi ditulis ke tabel MaxCompute.
Saat mengevaluasi presisi recall, tabel penyematan dan tabel sekuens ground truth harus berasal dari titik waktu yang berbeda. Kumpulkan data penyematan pada waktu T dan data sekuens ground truth pada waktu T+1. Jika kedua tabel menggunakan data dari titik waktu yang sama, tingkat hit akan meningkat secara artifisial melebihi nilai sebenarnya.
Input
Tabel penyematan item
Menyimpan vektor item, biasanya dihasilkan oleh algoritma pelatihan seperti GraphSAGE.
| Kolom | Tipe | Contoh |
|---|---|---|
| item id | bigint | 23456677 |
| item embeddings | string | 0.1,0.2,0.3,... |
Tabel penyematan pengguna
Menyimpan vektor pengguna, biasanya dihasilkan oleh algoritma pelatihan seperti GraphSAGE. Diperlukan hanya untuk recall u2i.
| Kolom | Tipe | Contoh |
|---|---|---|
| user id | bigint | 12345 |
| user embeddings | string | 0.1,0.2,0.3,... |
Tabel sekuens ground truth
Tabel ground truth yang memetakan setiap pemicu ke himpunan item relevannya. Untuk recall u2i, kolom trigger id dipetakan ke kolom user id. Untuk recall i2i, dipetakan ke kolom item id.
| Kolom | Tipe | Contoh |
|---|---|---|
| trigger id | bigint | 12345 |
| item ids | string | 23456677,2233445,6837292,... |
Output
tabel total_hitrate
Berisi tingkat hit keseluruhan di seluruh pemicu.
| Kolom | Tipe | Contoh |
|---|---|---|
| hitrate | double | 0.4 |
tabel hitrate_details
Berisi satu baris per pemicu, sesuai jumlah baris pada tabel sekuens ground truth.
| Kolom | Tipe | Deskripsi |
|---|---|---|
| id | bigint | Untuk recall u2i: user_id. Untuk recall i2i: item_id. |
| topk_ids | string | ID dari K item teratas yang direcall, dipisahkan koma. |
| topk_dists | string | Nilai jarak yang bersesuaian dengan setiap item dalam topk_ids. |
| hitrate | double | Tingkat hit untuk pemicu ini. |
| bad_ids | string | Item yang direcall tetapi tidak termasuk dalam himpunan relevan M. |
| bad_dists | string | Nilai jarak yang bersesuaian dengan setiap item dalam bad_ids. |
Parameter komponen
| Grup | Parameter | Tipe | Deskripsi |
|---|---|---|---|
| Input | item_emb_table | string | Tabel penyematan item. |
| Input | true_seq_table | string | Tabel ground truth. Untuk recall u2i: pengguna dan item yang relevan bagi pengguna. Untuk recall i2i: item dan item yang relevan bagi item tersebut. |
| Input | user_emb_table | string (opsional) | Tabel penyematan pengguna. Diperlukan hanya untuk recall u2i. |
| Output | total_hitrate | string | Tabel output untuk nilai tingkat hit total. |
| Output | hitrate_details | string | Tabel output untuk detail tingkat hit per pemicu. |
| Parameter | recall_type | string | Jenis recall: u2i atau i2i. |
| Parameter | emb_dim | int | Dimensi penyematan dari tabel penyematan. |
| Parameter | k | int | Jumlah item yang direcall (top K). |
| Parameter | metric | int (opsional, default: 1) | Metrik kemiripan. 0 menggunakan jarak L2 dan mengembalikan K item teratas dengan jarak terpendek. 1 menggunakan inner product dan mengembalikan K item teratas dengan nilai inner product terbesar. |
| Parameter | strict | bool (opsional, default: False) | Jika True, menghitung kemiripan tanpa aproksimasi. Ini menghilangkan deviasi kecil dalam perhitungan tingkat hit tetapi secara signifikan meningkatkan waktu komputasi. |
| Parameter | lifecycle | int (opsional, default: 7) | Periode retensi untuk tabel output, dalam hari. |
| Tuning | batch_size | int (opsional, default: 1024) | Jumlah sampel yang diproses per batch. Kurangi nilai ini jika worker kehabisan memori. |
| Tuning | worker_count | int (opsional, default: 1) | Jumlah worker. Tingkatkan nilai ini untuk tabel input besar atau ketika satu worker tidak cukup cepat. |
| Tuning | worker_memory | int (opsional, default: 20000) | Memori yang dialokasikan untuk setiap worker, dalam MB. |
Contoh perintah
Perintah berikut mengevaluasi tingkat hit recall u2i. Inner product digunakan sebagai metrik kemiripan, mode ketat dinonaktifkan, dan evaluasi dijalankan secara batch. Satu worker memproses 1.024 item per batch dengan memori 20.000 MB. Tabel output disimpan selama 7 hari.
pai -name hitrate_gl_ext
-Ditem_emb_table='item_emb_table'
-Duser_emb_table='user_emb_table'
-Dtrue_seq_table='true_seq_table'
-Dhitrate_details='hitrate_details'
-Dtotal_hitrate='total_hitrate'
-Drecall_type='u2i'
-Dk=5
-Demb_dim=10
-Dmetric=1
-Dstrict=False
-Dbatch_size=1024
-Dworker_count=1
-Dworker_memory=20000
-Dlifecycle=7;