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
  • 2: אינדקס ScaNN ברמה 3
  • 3: אינדקס ScaNN ברמה 4 (תצוגה מקדימה)

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

יצירת אינדקס

(אופציונלי)

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

יצירת אינדקס

(נדרש עבור אינדקסים שכוונו ידנית)

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

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

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

יצירת אינדקס

(אופציונלי)

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

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

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

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