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