אינדקס ScaNN משתמש באינדקס מבוסס-קוונטיזציה של עץ, שבו האינדקסים לומדים עץ חיפוש יחד עם פונקציית קוונטיזציה (או גיבוב). כשמריצים שאילתה, עץ החיפוש משמש לגיזום מרחב החיפוש, והכימות משמש לדחיסת גודל האינדקס. הגיזום הזה מזרז את הניקוד של הדמיון – במילים אחרות, המרחק – בין ווקטור השאילתה לבין הווקטורים במסד הנתונים.
כדי להשיג גם שיעור גבוה של שאילתות לשנייה (QPS) וגם שיעור גבוה של אחזור נתונים בשאילתות של השכן הקרוב ביותר, צריך לבצע חלוקה למחיצות של עץ אינדקס ScaNN באופן המתאים ביותר לנתונים ולשאילתות.
מודלים של הטמעות רב-ממדיות יכולים לשמור על חלק גדול מהמידע בממדיות נמוכה בהרבה. לדוגמה, אפשר לשמור על 90% מהמידע עם 20% בלבד מהממדים של ההטמעה. כדי להאיץ את העיבוד של מערכי נתונים כאלה, אינדקס ה-ScaNN של AlloyDB AI מבצע באופן אוטומטי צמצום ממדים באמצעות ניתוח רכיבים ראשיים (PCA) על הווקטורים באינדקס, וכך מצמצם עוד יותר את השימוש במעבד ובזיכרון לחיפוש הווקטורים. מידע נוסף זמין במאמר scann.enable_pca.
מכיוון שהפחתת המימדים גורמת לאובדן קל של נתונים באינדקס, אינדקס ScaNN של AlloyDB AI מפצה על אובדן הנתונים על ידי ביצוע שלב דירוג עם מספר גדול יותר של וקטורים מועמדים שעברו PCA מהאינדקס. לאחר מכן, ScaNN מדרג מחדש את הווקטורים המועמדים שעברו PCA לפי הווקטורים המקוריים. מידע נוסף זמין במאמר scann.pre_reordering_num_neighbors.
המאמרים הבאים
- שיטות מומלצות להתאמת אינדקסים של ScaNN
- איך מתחילים להשתמש בהטמעות וקטורים באמצעות AlloyDB AI
- מידע נוסף על אינדקס AlloyDB AI ScaNN