נניח שיש לכם מודל הטמעה. איך תבחרו את הפריטים שתמליצו עליהם למשתמש מסוים?
בזמן ההצגה, מקבלים שאילתה ומתחילים באחת מהפעולות הבאות:
- במודל של גורמי מטריצה, הטמעת השאילתה (או המשתמש) ידועה באופן סטטי, והמערכת יכולה פשוט לחפש אותה במטריצה של הטמעת המשתמש.
- במודל DNN, המערכת מחשבת את הטמעת השאילתה \(\psi(x)\)בזמן ההצגה על ידי הפעלת הרשת על וקטור המאפיינים \(x\).
אחרי שמקבלים את הטמעת השאילתה \(q\), מחפשים הטמעות של פריטים\(V_j\) שקרובות ל- \(q\) במרחב ההטמעה. זוהי בעיה של השכן הקרוב ביותר. לדוגמה, אפשר להציג את הפריטים המובילים ב-k לפי ציון הדמיון \(s(q, V_j)\).
אפשר להשתמש בגישה דומה בהמלצות לפריטים קשורים. לדוגמה, כשהמשתמש צופה בסרטון ב-YouTube, המערכת יכולה לחפש קודם את ההטמעה של הפריט הזה, ואז לחפש הטמעות של פריטים אחרים\(V_j\) שנמצאים בקרבת מקום במרחב ההטמעה.
אחזור בקנה מידה גדול
כדי לחשב את השכנים הקרובים ביותר במרחב ההטמעה, המערכת יכולה לדרג כל מועמד פוטנציאלי. ניקוד מקיף יכול להיות יקר לגבי קורפוסים גדולים מאוד, אבל אפשר להשתמש באחת מהאסטרטגיות הבאות כדי לשפר את היעילות שלו:
- אם הטמעת השאילתות ידועה באופן סטטי, המערכת יכולה לבצע ניקוד כולל ללא חיבור לאינטרנט, לחשב מראש ולאחסן רשימה של המועמדים המובילים לכל שאילתה. זוהי שיטה נפוצה להמלצה על פריטים קשורים.
- שימוש בשכנים הקרובים ביותר (ANN) עם הערכה. Google מספקת כלי בקוד פתוח ב-GitHub שנקרא ScaNN (שכנים קרובים שניתן להתאמה). הכלי הזה מבצע חיפוש יעיל של דמיון וקטורי בקנה מידה רחב.