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) הוא בחירה מתאימה יותר.
זמן הריצה של השאילתה
(אופציונלי)

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