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

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

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

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

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

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

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

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