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
  • 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 מנתחת ומעדכנת את מרכזי המסה ומפצלת מחיצות גדולות של חריגים. הפעולה הזו משפרת באופן אוטומטי את QPS ואת תוצאות החיפוש. מידע נוסף מופיע במאמר תחזוקה אוטומטית של אינדקסים.

יצירת אינדקס

(אופציונלי)

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

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

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

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

(אופציונלי)

scann.pre_reordering_num_neighbors

מציין את מספר השכנים הפוטנציאליים שצריך לקחת בחשבון במהלך שלבי הסידור מחדש, אחרי שהחיפוש הראשוני מזהה קבוצה של מועמדים. צריך להגדיר את הפרמטר הזה לערך גבוה יותר ממספר השכנים שרוצים שהשאילתה תחזיר. ערכים גבוהים יותר משפרים את ה-recall, אבל מקטינים את ה-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) הוא בחירה מתאימה יותר.
זמן הריצה של השאילתה
(אופציונלי)

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