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