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

בחירת גרסה של מאמר העזרה:

בדף הזה מובאת סקירה כללית של שיפור הביצועים של שאילתות וקטוריות באמצעות אינדקס Scalable Nearest Neighbor ‏ (ScaNN) של AlloyDB AI. מידע נוסף מופיע במאמר יצירת אינדקסים ושאילתות של וקטורים.

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

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

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

מכיוון שהפחתת המימדים גורמת לאובדן קל של יכולת השליפה באינדקס, אינדקס AlloyDB AI ScaNN מפצה על אובדן יכולת השליפה על ידי ביצוע שלב דירוג עם מספר גדול יותר של וקטורים מועמדים שעברו PCA מהאינדקס. לאחר מכן,‏ ScaNN מדרג מחדש את הווקטורים המועמדים שעברו PCA לפי הווקטורים המקוריים. מידע נוסף זמין במאמר scann.pre_reordering_num_neighbors.

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