AlloyDB Omni ScaNN index reference

בוחרים גרסת תיעוד:

בדף הזה מפורטים הפרמטרים לכוונון של אינדקסים של Scalable Nearest Neighbors‏ (ScaNN) ב-AlloyDB Omni.

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

פרמטרים של כוונון

הפרמטרים הבאים של האינדקס והשאילתה משמשים כדי למצוא את האיזון הנכון בין השליפה לבין השאילתות לשנייה (QPS).

פרמטר כוונון תיאור סוג האפשרות
mode הגדרה של אינדקס ScaNN כאינדקס עם כוונון אוטומטי או ידני. אלה האפשרויות שאתם יכולים להשתמש בהן:
  • ‫AUTO: אינדקס שעבר כוונון אוטומטי
  • ‫MANUAL: אינדקס בכוונון ידני

מידע נוסף זמין במאמר יצירת אינדקס ScaNN.

יצירת אינדקס

(אופציונלי)

max_num_levels המספר המקסימלי של רמות מרכז הכובד של עץ האשכולות של K-means. איך מגדירים את הערך הזה?

אלה הערכים הזמינים:

  • ‫1: אינדקס ScaNN דו-שלבי
  • ‫2: אינדקס ScaNN עם שלוש רמות
  • 3: אינדקס ScaNN עם ארבע רמות (תצוגה מקדימה)

אם מגדירים את max_num_levels ל-3, צריך גם להגדיר את scann.max_allowed_num_levels ל-3. מידע נוסף זמין במאמר שיטות מומלצות לכוונון אינדקסים של ScaNN.

יצירת אינדקס

(אופציונלי)

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

יצירת אינדקס

(נדרש לאינדקסים שכווננו באופן ידני)

quantizer סוג הקוונטיזציה שרוצים להשתמש בה לעץ K-means. ערך ברירת המחדל הוא SQ8, שמשפר את ביצועי השאילתות עם אובדן מינימלי של שליפה (בדרך כלל פחות מ-1-2%).

אם נדרשת שליפה של 99% ומעלה, צריך להגדיר את הערך ל-FLAT.
יצירת אינדקס
(אופציונלי)
scann.enable_pca מפעיל ניתוח רכיבים עיקריים (PCA), שהוא שיטה להפחתת ממדים שמשמשת להפחתה אוטומטית של גודל ההטמעה כשאפשר. האפשרות הזו מופעלת כברירת מחדל.

אם אתם מבחינים בירידה בשיעור האחזור, הגדירו את הערך false.
יצירת אינדקס
(אופציונלי)
auto_maintenance תחזוקה אוטומטית של אינדקס ScaNN, כך שככל שקבוצת הנתונים גדלה, AlloyDB Omni מנתח ומעדכן את המרכזים (centroids) ומפצל מחיצות גדולות של חריגים. כך משפרים באופן אוטומטי את QPS ואת תוצאות החיפוש. מידע נוסף מופיע במאמר בנושא תחזוקה אוטומטית של אינדקסים.

יצירת אינדקס

(אופציונלי)

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

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

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

זמן הריצה של השאילתה

(אופציונלי)

scann.pre_reordering_num_neighbors

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

ברירת המחדל היא 0, שמשביתה את שינוי הסדר. אם PCA מופעל במהלך יצירת האינדקס, ברירת המחדל היא 50 x K, כאשר K הוא הערך של LIMIT שצוין בשאילתה.

זמן הריצה של השאילתה

(אופציונלי)

scann.num_search_threads מספר השרשורים של החיפוש לחיפוש מרובה שרשורים. כך אפשר להפחית את זמן האחזור של שאילתה אחת באמצעות יותר משרשור אחד לחיפוש ScaNN ANN באפליקציות שרגישות לזמן אחזור. ההגדרה הזו לא משפרת את זמן האחזור של שאילתה בודדת אם מסד הנתונים כבר מוגבל על ידי המעבד (CPU). ערך ברירת המחדל הוא 2. זמן הריצה של השאילתה
(אופציונלי)

scann.satisfy_limit (תצוגה מקדימה)

כשהדגל לניהול מסד הנתונים מוגדר לערך relaxed_order, הוא מטפל בבעיה של שליפה לא מספקת. אחזור לא מספיק יכול להתרחש כשהאחזור שנצפה בשאילתה נמוך מהאחזור המטורגט, וזה קורה לעיתים קרובות יותר כשמשתמשים במסננים. ההגדרה הזו עוזרת להשיג את ה-recall המטורגט בכך שהיא מאפשרת לסריקת הווקטור להמשיך לחפש מעבר למגבלה של num_leaves_to_search עד שנמצא מספר מספיק של תוצאות. זמן הריצה של השאילתה
(אופציונלי)
דגל לניהול מסד נתונים זה מגדיר רף עליון לאחוז העלים הכולל שאפשר לבקר בהם בשאילתות שמריצים עם ההגדרה scann.satisfy_limit מופעלת. זוהי המגבלה העליונה היחידה שזמינה ב-GUC, והיא חלה על מצבי חיפוש אוטומטיים וידניים. היא מונעת מהחיפוש לחרוג מהיעד, מה שעלול לפגוע משמעותית בביצועים. ההגדרה הזו רלוונטית כשהמדיניות scann.satisfy_limit מופעלת.
אפשר להגדיר את הפרמטר הזה לכל ערך בין 0 ל-100. ערך ברירת המחדל הוא 15%. ערך ברירת המחדל הזה מבוסס על ההנחה שאם חיפוש צריך לבדוק יותר מ-15% מהעלים, סביר להניח שהמסנן סלקטיבי מספיק כדי שחיפוש של השכן הקרוב המשוער (ANN) לא יספק יתרון, ולכן סינון מראש של השכן הקרוב (KNN) הוא בחירה מתאימה יותר.
זמן הריצה של השאילתה
(אופציונלי)

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