AlloyDB Omni ScaNN index reference

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

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

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

פרמטרים של התאמה

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

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

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

יצירת אינדקס

(אופציונלי)

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

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

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

יצירת אינדקס

(אופציונלי)

num_leaves מספר המחיצות שצריך להחיל על האינדקס הזה. ב-PostgreSQL מגרסה 17 ואילך, הערך המקסימלי הוא 104857600. בגרסה 16 של PostgreSQL ובגרסאות קודמות, הערך המקסימלי הוא 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.

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

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

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