Supponiamo di avere un modello di embedding. Dato un utente, come faresti a decidere quali articoli consigliare?
Al momento della pubblicazione, data una query, inizi eseguendo una delle seguenti operazioni:
- Per un modello di fattorizzazione matriciale, l'incorporamento della query (o dell'utente) è noto in modo statico e il sistema può semplicemente cercarlo dalla matrice di incorporamento dell'utente.
- Per un modello di rete neurale profonda, il sistema calcola l'embedding della query \(\psi(x)\) al momento del servizio eseguendo la rete sul vettore di caratteristiche \(x\).
Una volta ottenuto l'incorporamento della query \(q\), cerca gli incorporamenti di elementi \(V_j\) più vicini a \(q\) nello spazio di incorporamento. Si tratta di un problema di vicino più prossimo. Ad esempio, puoi restituire i k elementi migliori in base al punteggio di somiglianza \(s(q, V_j)\).
Puoi utilizzare un approccio simile nei consigli di articoli correlati. Ad esempio, quando un utente guarda un video di YouTube, il sistema può prima cercare l'embedding di quell'elemento e poi cercare gli embedding di altri elementi\(V_j\) vicini nello spazio di embedding.
Recupero su larga scala
Per calcolare i vicini più prossimi nello spazio di incorporamento, il sistema può assegnare un punteggio esaustivo a ogni potenziale candidato. Il punteggio esaustivo può essere costoso per corpora molto grande, ma puoi utilizzare una delle seguenti strategie per renderlo più efficiente:
- Se l'embedding della query è noto in modo statico, il sistema può eseguire un calcolo del punteggio esaustivo offline, precomputando e memorizzando un elenco dei candidati migliori per ogni query. Questa è una pratica comune per i consigli di articoli correlati.
- Utilizza i vicini più prossimi approssimativi. Google fornisce uno strumento open source su GitHub chiamato ScaNN (Vicino più vicino scalabile). Questo strumento esegue ricerche di somiglianza di vettori su larga scala in modo efficiente.