Supposons que vous disposiez d'un modèle d'embedding. Comment choisir les éléments à recommander à un utilisateur ?
Au moment de la présentation des résultats, pour une requête donnée, vous commencez par effectuer l'une des opérations suivantes:
- Pour un modèle de factorisation matricielle, l'embedding de la requête (ou de l'utilisateur) est connu de manière statique, et le système peut simplement le rechercher dans la matrice d'embedding de l'utilisateur.
- Pour un modèle de DNN, le système calcule l'embedding de requête \(\psi(x)\)au moment de la diffusion en exécutant le réseau sur le vecteur de caractéristiques \(x\).
Une fois que vous avez l'encapsulation de requête \(q\), recherchez les représentations vectorielles continues\(V_j\) des articles qui sont proches de \(q\) dans l'espace d'encapsulation. Il s'agit d'un problème de voisin le plus proche. Par exemple, vous pouvez renvoyer les k premiers éléments en fonction du score de similarité \(s(q, V_j)\).
Vous pouvez utiliser une approche similaire pour les recommandations d'éléments associés. Par exemple, lorsque l'utilisateur regarde une vidéo YouTube, le système peut d'abord rechercher l'encapsulation de cet élément, puis rechercher les encapsulations d'autres éléments\(V_j\) qui sont proches dans l'espace d'encapsulation.
Récupération à grande échelle
Pour calculer les voisins les plus proches dans l'espace d'embedding, le système peut évaluer de manière exhaustive chaque candidat potentiel. L'évaluation exhaustive peut être coûteuse pour de très grands corpus, mais vous pouvez utiliser l'une des stratégies suivantes pour l'optimiser:
- Si l'encapsulation de la requête est connue de manière statique, le système peut effectuer une évaluation exhaustive hors connexion, en précalculant et en stockant une liste des principaux candidats pour chaque requête. Il s'agit d'une pratique courante pour les recommandations d'articles associés.
- Utilisez la recherche approximative du voisin le plus proche. Google fournit un outil Open Source sur GitHub appelé ScaNN (Scalable Nearest Neighbors). Cet outil effectue une recherche de similarité vectorielle efficace à grande échelle.