סקירה כללית של ביצועי שאילתות וקטוריות ב-ScaNN

אינדקס Scalable Nearest Neighbors‏ (ScaNN) ב-AlloyDB ל-PostgreSQL מאיץ שאילתות של דמיון וקטורי, ומפחית את השימוש בזיכרון באמצעות אינדקס של כימות עץ. בשיטות של קוונטיזציה של עצים, אינדקסים לומדים עץ חיפוש יחד עם פונקציית קוונטיזציה (או גיבוב). כשמריצים שאילתה, עץ החיפוש מצמצם את מרחב החיפוש, והכימות דוחס את גודל האינדקס. כך אפשר להאיץ את דירוג הדמיון בין וקטור השאילתה לבין הווקטורים של מסד הנתונים.

כדי להשיג גם קצב גבוה של שאילתות לשנייה (QPS) וגם שיעור גבוה של שליפה בשאילתות של השכן הקרוב ביותר, צריך לחלק את העץ של האינדקס ScaNN באופן שהכי מתאים לנתונים ולשאילתות.

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

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