מדריך מפורט להטמעה של חיפוש וקטורי מההתחלה ועד הסוף זמין במאמר בנושא ביצוע חיפוש וקטורי.
פרמטרים של התאמה
הפרמטרים הבאים של האינדקס והשאילתה משמשים כדי למצוא את האיזון הנכון בין היזכרות לבין שאילתות לשנייה (QPS).
| פרמטר של התאמה | תיאור | סוג האפשרות |
|---|---|---|
mode |
הגדרה של אינדקס ScaNN כאינדקס עם כוונון אוטומטי או ידני. אלה האפשרויות הזמינות:
מידע נוסף זמין במאמר בנושא יצירת אינדקס ScaNN. |
יצירת אינדקס (אופציונלי) |
max_num_levels |
מספר הרמות המקסימלי של מרכזי הכובד בעץ של אשכולות K-means. הנחיות להגדרת הערך הזה
הערכים האפשריים הם:
אם מגדירים את |
יצירת אינדקס (אופציונלי) |
num_leaves |
מספר המחיצות שיוחלו על האינדקס הזה. הערך המקסימלי הוא 30000000. מידע נוסף על בחירת הערך הזה זמין במאמרים בנושא התאמה של אינדקס ScaNN ושיטות מומלצות להתאמה של אינדקסים של ScaNN.
|
יצירת אינדקס (נדרש עבור אינדקסים שכוונו ידנית) |
quantizer |
סוג הכמת שרוצים להשתמש בו בעץ K-means. ערך ברירת המחדל הוא SQ8, שמספק ביצועים טובים יותר של שאילתות עם אובדן מינימלי של אחזור (בדרך כלל פחות מ-1-2%).מגדירים את הערך ל- FLAT אם נדרש אחזור של 99% ומעלה. |
יצירת אינדקס (אופציונלי) |
scann.enable_pca |
ההגדרה הזו מפעילה ניתוח גורמים ראשיים (PCA), שהיא טכניקה לצמצום ממדים שמשמשת לצמצום אוטומטי של גודל ההטמעה כשזה אפשרי. האפשרות הזו מופעלת כברירת מחדל. מגדירים את האפשרות לערך false אם מבחינים בהידרדרות בזיכרון. |
יצירת אינדקס (אופציונלי) |
auto_maintenance |
תחזוקה אוטומטית של אינדקס ScaNN, כך שככל שמערך הנתונים גדל, מערכת AlloyDB Omni מנתחת ומעדכנת את מרכזי המסה ומפצלת מחיצות גדולות של חריגים. כך משפרים באופן אוטומטי את השאילתות לשנייה ואת תוצאות החיפוש. מידע נוסף מופיע במאמר בנושא תחזוקה אוטומטית של אינדקסים. |
יצירת אינדקס (אופציונלי) |
scann.pct_leaves_to_search |
ניהול אוטומטי של מספר המחיצות שמתבצע בהן חיפוש באינדקס וקטורי. מידע נוסף זמין במאמר בנושא חיפוש אחוז המחיצות. | |
scann.num_leaves_to_search
|
מספר המחיצות האבסולוטי לחיפוש. כך אפשר לבחור בין
היזכרות בשאילתות לבין QPS. ערך ברירת המחדל הוא 1% מתוך ערכים גבוהים יותר מובילים לזיכרון טוב יותר של השאילתות, אבל ל-QPS נמוך יותר. באופן דומה, ערכים נמוכים יותר מובילים לזיכרון גרוע יותר של השאילתה, אבל ל-QPS טוב יותר. |
זמן הריצה של השאילתה (אופציונלי) |
scann.pre_reordering_num_neighbors
|
מציינים את מספר השכנים הפוטנציאליים שצריך לקחת בחשבון במהלך שלבי הסידור מחדש, אחרי שהחיפוש הראשוני מזהה קבוצה של מועמדים. מגדירים את הפרמטר הזה לערך גבוה ממספר השכנים שרוצים שהשאילתה תחזיר. ערכים גבוהים יותר מובילים לזיכרון טוב יותר, אבל ל-QPS נמוך יותר.
ברירת המחדל היא |
זמן הריצה של השאילתה (אופציונלי) |
scann.num_search_threads |
מספר השרשורים של החיפוש עבור חיפוש מרובה שרשורים. השימוש ביותר משרשור אחד לחיפוש ScaNN ANN באפליקציות שרגישות לזמן האחזור יכול לעזור לצמצם את זמן האחזור של שאילתה יחידה. ההגדרה הזו לא משפרת את זמן האחזור של שאילתה יחידה אם מסד הנתונים כבר מוגבל על ידי CPU. ערך ברירת המחדל הוא 2. |
זמן הריצה של השאילתה (אופציונלי) |
|
כשמגדירים את הדגל של מסד הנתונים לערך relaxed_order, הוא מטפל בבעיה של היזכרות לא מספקת. היזכרות לא מספקת יכולה לקרות כשההיזכרות שנצפתה בשאילתה נמוכה מהיזכרות היעד, וזה סביר יותר כשמשתמשים במסננים. ההגדרה הזו עוזרת להשיג את היזכרות היעד בכך שהיא מאפשרת לסריקת הווקטורים להמשיך לחפש מעבר למגבלת num_leaves_to_search עד שנמצא מספר מספיק של תוצאות. |
זמן הריצה של השאילתה (אופציונלי) |
|
הדגל הזה במסד הנתונים מגדיר רף עליון לאחוז העלים הכולל שאפשר לבקר בהם בשאילתות שמריצים עם האפשרות scann.satisfy_limit מופעלת. זוהי המגבלה העליונה היחידה של GUC שזמינה, והיא חלה על מצבי חיפוש אוטומטיים וידניים. היא מונעת מהחיפוש לחרוג מהיעד, מה שעלול לפגוע בביצועים באופן משמעותי. הפרמטר הזה רלוונטי כשהאפשרות scann.satisfy_limit מופעלת.אפשר להגדיר את הפרמטר הזה לכל ערך בין 0 ל-100. ערך ברירת המחדל הוא 15%. ערך ברירת המחדל הזה מבוסס על ההנחה שאם בחיפוש צריך לבדוק יותר מ-15% מהעלים, סביר להניח שהמסנן סלקטיבי מספיק כדי שחיפוש של השכן הקרוב המשוער (ANN) לא יספק יתרון, ולכן סינון מראש של השכן הקרוב (KNN) הוא בחירה מתאימה יותר. |
זמן הריצה של השאילתה (אופציונלי) |