במדריך ביצוע חיפוש וקטורי מוסבר שלב אחרי שלב איך מטמיעים חיפוש וקטורי מההתחלה ועד הסוף.
פרמטרים של כוונון
הפרמטרים הבאים של האינדקס והשאילתה משמשים למציאת האיזון הנכון בין היזכרות לבין שאילתות לשנייה (QPS).
| פרמטר כוונון | תיאור | סוג האפשרות |
|---|---|---|
mode |
מגדיר אם אינדקס ScaNN הוא אינדקס בכוונון אוטומטי או בכוונון ידני. אלה האפשרויות שאתם יכולים להשתמש בהן:
מידע נוסף זמין במאמר יצירת אינדקס ScaNN. |
יצירת אינדקס (אופציונלי) |
max_num_levels |
המספר המקסימלי של רמות מרכז הכובד של עץ האשכולות של K-means. איך מגדירים את הערך הזה?
אלה הערכים הזמינים:
אם מגדירים את |
יצירת אינדקס (אופציונלי) |
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 ואת תוצאות החיפוש. מידע נוסף מופיע במאמר תחזוקה אוטומטית של אינדקסים. |
יצירת אינדקס (אופציונלי) |
scann.pct_leaves_to_search |
ניהול אוטומטי של מספר המחיצות שבהן מתבצע חיפוש באינדקס וקטורי. מידע נוסף זמין במאמר בנושא חיפוש אחוז המחיצות. | |
scann.num_leaves_to_search
|
המספר האבסולוטי של המחיצות לחיפוש. כך אפשר לבחור בין
recall של שאילתות לבין QPS. ערך ברירת המחדל הוא 1% מתוך ערכים גבוהים יותר מובילים לאחזור שאילתות טוב יותר, אבל למספר נמוך יותר של שאילתות לשנייה. באופן דומה, ערכים נמוכים יותר מובילים לזיכרון גרוע יותר של שאילתות, אבל ל-QPS טוב יותר. |
זמן הריצה של השאילתה (אופציונלי) |
scann.pre_reordering_num_neighbors
|
מציין את מספר השכנים המועמדים שצריך להביא בחשבון בשלבי הסידור מחדש, אחרי שהחיפוש הראשוני מזהה קבוצה של מועמדים. מגדירים את הפרמטר הזה לערך גבוה יותר ממספר השכנים שרוצים שהשאילתה תחזיר. ערכים גבוהים יותר משפרים את ה-recall, אבל מקטינים את ה-QPS.
ברירת המחדל היא |
זמן הריצה של השאילתה (אופציונלי) |
scann.num_search_threads |
מספר השרשורים של החיפוש לחיפוש מרובה-שרשורים. השימוש ביותר משרשור אחד לחיפוש ScaNN ANN באפליקציות שרגישות לזמן האחזור יכול לעזור לצמצם את זמן האחזור של שאילתה יחידה. ההגדרה הזו לא משפרת את זמן האחזור של שאילתה בודדת אם מסד הנתונים כבר מוגבל על ידי המעבד (CPU). ערך ברירת המחדל הוא 2. |
זמן הריצה של השאילתה (אופציונלי) |
|
כשהדגל לניהול מסד הנתונים מוגדר לערך relaxed_order, הוא מטפל בבעיה של שליפה לא מספקת. זיכרון לא מספיק יכול להתרחש כשזיכרון ההחזרה שנצפה בשאילתה נמוך מזיכרון ההחזרה של היעד, וזה סביר יותר כשמשתמשים במסננים. ההגדרה הזו עוזרת להשיג את ה-recall המטורגט בכך שהיא מאפשרת לסריקת הווקטור להמשיך לחפש מעבר למגבלה של num_leaves_to_search עד שנמצא מספר מספיק של תוצאות. |
זמן הריצה של השאילתה (אופציונלי) |
|
הדגל הזה לניהול מסד הנתונים מגדיר גבול עליון לאחוז העלים הכולל שאפשר לבקר בהם בשאילתות שאתם מריצים כש-scann.satisfy_limit מופעל. זוהי המגבלה העליונה היחידה שזמינה ב-GUC, והיא חלה על מצבי חיפוש אוטומטיים וידניים. היא מונעת מהחיפוש לחרוג מהמגבלה, מה שעלול לפגוע משמעותית בביצועים. ההגדרה הזו רלוונטית כשהמדיניות scann.satisfy_limit מופעלת.אפשר להגדיר את הפרמטר הזה לכל ערך בין 0 ל-100. ערך ברירת המחדל הוא 15%. ערך ברירת המחדל הזה מבוסס על ההנחה שאם חיפוש צריך לבדוק יותר מ-15% מהעלים, סביר להניח שהמסנן סלקטיבי מספיק כדי שחיפוש של השכן הקרוב המשוער (ANN) לא יספק יתרון, ולכן סינון מראש של השכן הקרוב (KNN) הוא בחירה מתאימה יותר. |
זמן הריצה של השאילתה (אופציונלי) |