בחירה מבין פונקציות של מרחק וקטורי כדי למדוד את הדמיון בין הטמעות וקטוריות

בדף הזה מוסבר איך לבחור מבין פונקציות המרחק הווקטורי שזמינות ב-Spanner כדי למדוד את הדמיון בין הטמעות וקטוריות.

אחרי שיצרתם הטבעות מהנתונים שלכם ב-Spanner, אתם יכולים לבצע חיפוש דמיון באמצעות פונקציות של מרחק וקטורי. בטבלה הבאה מתוארות פונקציות המרחק בין וקטורים ב-Spanner.

תפקידתיאורנוסחההקשר למידת הדמיון הגוברת
מכפלה סקלרית מחשבת את הקוסינוס של הזווית \(\theta\) כפול המכפלה של הגדלים של הווקטורים התואמים. \(a_1b_1+a_2b_2+...+a_nb_n\) \(=|a||b|cos(\theta)\) עלייה
מרחק קוסינוס פונקציית המרחק הקוסינוסי מחסרת את הדמיון הקוסינוסי מאחד (cosine_distance() = 1 - cosine similarity). הדמיון הקוסינוסי מודד את הקוסינוס של הזווית \(\theta\) בין שני וקטורים. 1 - \(\frac{a^T b}{|a| \cdot |b|}\) ירידות
מרחק אוקלידי מדידת המרחק בקו ישר בין שני וקטורים. \(\sqrt{(a_1-b_1)^2+(a_2-b_2)^2+...+(a_N-b_N)^2}\) ירידות

בחירת מדד דמיון

בהתאם לכך שכל הטמעות הווקטורים מנורמלות או לא, אפשר לקבוע באיזה מדד דמיון להשתמש כדי למצוא דמיון. לווקטור הטמעה מנורמל יש גודל (אורך) של 1.0 בדיוק.

בנוסף, אם אתם יודעים באיזו פונקציית מרחק נעשה שימוש באימון המודל, תוכלו להשתמש בפונקציית המרחק הזו כדי למדוד את הדמיון בין הטמעות הווקטורים.

נתונים מנורמלים

אם יש לכם מערך נתונים שבו כל ההטמעות הווקטוריות מנורמלות, כל שלוש הפונקציות יספקו את אותן תוצאות של חיפוש סמנטי. במילים אחרות, למרות שכל פונקציה מחזירה ערך שונה, הערכים האלה מסודרים באותו אופן. כשמבצעים נורמליזציה של הטמעות, בדרך כלל DOT_PRODUCT() היא האפשרות הכי יעילה מבחינת חישובים, אבל ההבדל זניח ברוב המקרים. עם זאת, אם האפליקציה שלכם רגישה מאוד לביצועים, יכול להיות ש-DOT_PRODUCT() יעזור לכם לכוונן את הביצועים.

נתונים לא מנורמלים

אם יש לכם מערך נתונים שבו וקטורים מוטמעים לא מנורמלים, לא נכון מבחינה מתמטית להשתמש ב-DOT_PRODUCT() כפונקציית מרחק, כי מכפלה סקלרית כפונקציה לא מודדת מרחק. בהתאם לאופן שבו נוצרו ההטמעות ולסוג החיפוש המועדף, הפונקציה COSINE_DISTANCE() או הפונקציה EUCLIDEAN_DISTANCE() מפיקות תוצאות חיפוש טובות יותר באופן סובייקטיבי מהפונקציה השנייה. יכול להיות שתצטרכו לבצע ניסויים עם COSINE_DISTANCE() או עם EUCLIDEAN_DISTANCE() כדי לקבוע מה הכי מתאים לתרחיש השימוש שלכם.

לא בטוחים אם הנתונים מנורמלים או לא מנורמלים

אם אתם לא בטוחים אם הנתונים שלכם מנורמלים ואתם רוצים להשתמש ב-DOT_PRODUCT(), מומלץ להשתמש ב-COSINE_DISTANCE() במקום. הפונקציה COSINE_DISTANCE() דומה לפונקציה DOT_PRODUCT(), אבל היא כוללת נרמול מובנה. מידת הדמיון שנמדדת באמצעות COSINE_DISTANCE() נעה בין 0 לבין 2. תוצאה שקרובה ל-0 מצביעה על כך שהווקטורים דומים מאוד.

המאמרים הבאים