Misalkan Anda memiliki model penyematan. Dengan mempertimbangkan pengguna, bagaimana Anda akan memutuskan item mana yang akan direkomendasikan?
Pada waktu penayangan, dengan kueri tertentu, Anda memulai dengan melakukan salah satu hal berikut:
- Untuk model faktorisasi matriks, penyematan kueri (atau pengguna) diketahui secara statis, dan sistem dapat dengan mudah mencarinya dari matriks penyematan pengguna.
- Untuk model DNN, sistem menghitung penyematan kueri \(\psi(x)\) pada waktu penayangan dengan menjalankan jaringan pada vektor fitur \(x\).
Setelah Anda memiliki penyematan kueri \(q\), telusuri penyematan item \(V_j\) yang dekat dengan \(q\) di ruang penyematan. Ini adalah masalah tetangga terdekat. Misalnya, Anda dapat menampilkan item k teratas sesuai dengan skor kemiripan \(s(q, V_j)\).
Anda dapat menggunakan pendekatan serupa dalam rekomendasi item terkait. Misalnya, saat pengguna menonton video YouTube, sistem dapat terlebih dahulu mencari penyematan item tersebut, lalu mencari penyematan item lain \(V_j\) yang dekat di ruang penyematan.
Pengambilan berskala besar
Untuk menghitung tetangga terdekat di ruang penyematan, sistem dapat menilai setiap kandidat potensial secara menyeluruh. Penskoran menyeluruh dapat mahal untuk korpus yang sangat besar, tetapi Anda dapat menggunakan salah satu strategi berikut untuk membuatnya lebih efisien:
- Jika penyematan kueri diketahui secara statis, sistem dapat melakukan penskoran menyeluruh secara offline, melakukan prakomputasi, dan menyimpan daftar kandidat teratas untuk setiap kueri. Ini adalah praktik umum untuk rekomendasi item terkait.
- Gunakan perkiraan tetangga terdekat. Google menyediakan alat open source di GitHub yang disebut ScaNN (Scalable Nearest Neighbors). Alat ini melakukan penelusuran kemiripan vektor yang efisien dalam skala besar.