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