Angenommen, Sie haben ein Einbettungsmodell. Wie würden Sie entscheiden, welche Artikel Sie einem Nutzer empfehlen?
Wenn Sie eine Abfrage ausliefern, gehen Sie so vor:
- Bei einem Matrixfaktorisierungsmodell ist die Einbettung der Suchanfrage (oder des Nutzers) statisch bekannt und kann vom System einfach in der Matrix für die Nutzereinbettung abgerufen werden.
- Bei einem DNN-Modell berechnet das System die Abfrage-Embedding \(\psi(x)\)zum Zeitpunkt der Bereitstellung, indem es das Netzwerk auf den Feature-Vektor anwendet \(x\).
Nachdem Sie die Abfrage-Einbettung \(q\)haben, suchen Sie im Einbettungsraum nach Artikel-Einbettungen\(V_j\) , die sich in der Nähe von \(q\) befinden. Dies ist ein Problem mit dem nächsten Nachbarn. Sie können beispielsweise die obersten k Elemente gemäß dem Ähnlichkeitswert \(s(q, V_j)\)zurückgeben.
Sie können einen ähnlichen Ansatz auch bei Empfehlungen zu ähnlichen Artikeln verwenden. Wenn sich der Nutzer beispielsweise ein YouTube-Video ansieht, kann das System zuerst nach der Einbettung dieses Elements suchen und dann nach Einbettungen anderer Elemente\(V_j\) suchen, die im Einbettungsbereich nahe beieinander liegen.
Abruf im großen Maßstab
Um die nächsten Nachbarn im Einbettungsraum zu berechnen, kann das System jeden potenziellen Kandidaten erschöpfend bewerten. Eine umfassende Bewertung kann bei sehr großen Textkorpora teuer sein. Sie können jedoch eine der folgenden Strategien verwenden, um sie effizienter zu gestalten:
- Wenn die Abfrageeinbettung statisch bekannt ist, kann das System eine umfassende Bewertung offline durchführen. Dabei wird eine Liste der Top-Kandidaten für jede Abfrage vorausberechnet und gespeichert. Dies ist eine gängige Praxis bei der Empfehlung ähnlicher Artikel.
- Verwenden Sie ungefähre nächste Nachbarn. Google stellt auf GitHub das Open-Source-Tool ScaNN (Scalable Nearest Neighbors) bereit. Dieses Tool führt eine effiziente Suche nach Vektorähnlichkeiten in großem Maßstab durch.