בחירת האסטרטגיה והאינדקס הנכונים לחיפוש וקטורי ב-AlloyDB AI מאפשרת לאזן בין זמן האחזור של השאילתה לבין דיוק החיפוש בעומס העבודה. כברירת מחדל, AlloyDB ל-PostgreSQL משתמש בחיפוש מדויק של k השכנים הקרובים ביותר (KNN) כדי למצוא וקטורים דומים. כשיוצרים אינדקס וקטורי, AlloyDB AI משתמש בחיפוש Approximate Nearest Neighbor (ANN) כדי לשפר את הביצועים של שאילתות בקנה מידה נרחב, תוך התפשרות על כמות ניתנת להגדרה של שליפה.
אחזור מודד את היעילות שבה החיפוש מאחזר את כל הפריטים הרלוונטיים לשאילתה נתונה. לדוגמה, נניח שיש לכם 100 הטמעות, שכל אחת מהן מייצגת ישות במסד הנתונים. אתם שולחים שאילתה להטמעות עם וקטור יעד ומגבילים אותה ל-10 תוצאות. חיפוש וקטורי של KNN מוצא את 10 הווקטורים הקרובים ביותר באמצעות שיטת חישוב של כוח גס, וכתוצאה מכך מתקבלת שליפה של 100%. כברירת מחדל, AlloyDB AI משתמש בשיטה הזו אם לא נוצר או נבחר אינדקס חיפוש וקטורי. כשיוצרים אינדקס וקטורי ב-AlloyDB, בדרך כלל משתמשים ב-ANN, שיכול לחלק וקטורים לפי דמיון כדי לאחזר אותם מהר יותר. כתוצאה מכך, אם משתמשים ב-ANN, יכול להיות ש-10 הווקטורים שיוחזרו בדוגמה הקודמת לא יהיו בדיוק 10 הווקטורים הכי קרובים. אם 9 מתוך 10 הווקטורים שאוחזרו הם הקרובים ביותר במרחב לווקטור השאילתה, אז ה-recall הוא 90%. מידע נוסף זמין במאמר מדידת השליפה של שאילתות וקטוריות.
זמן האחזור של השאילתה קובע כמה מהר נוצרות תוצאות החיפוש. לדוגמה, זמן האחזור מחושב לפי משך הזמן שלוקח לחיפוש להחזיר את הווקטורים אחרי ששולחים שאילתה.
בחירת אסטרטגיית חיפוש
כשמבצעים חיפוש וקטורי ב-AlloyDB, בוחרים אחת משיטות החיפוש הבאות:
| אסטרטגיית חיפוש | תיאור | תרחישים לדוגמה |
| K השכנים הקרובים ביותר (KNN) |
אלגוריתם שמוצא את k נקודות על הגרף הקרובות ביותר לנקודת נתונים נתונה של שאילתה. כשמבצעים חיפוש וקטורי בלי ליצור אינדקס, כברירת מחדל מתבצע חיפוש KNN. כדי לשפר עוד יותר את הביצועים של חיפוש KNN, מוסיפים את עמודת ההטמעה ועמודות אחרות שקשורות לשאילתה למאגר העמודות במנוע מבוסס-עמודות. אפשר להוסיף את העמודות באופן ידני או להוסיף את העמודות באמצעות ארגון אוטומטי בעמודות. |
|
| שכנים קרובים משוערים (ANN) | אלגוריתם שמוצא בקירוב את נקודות הנתונים הקרובות ביותר. ANN מחלק את הנקודות על הגרף של נתוני הלקוחות הקיימים לקבוצות קטנות על סמך קווי דמיון. |
|
שני הסוגים הנפוצים של אינדקסים וקטוריים מבוססי-ANN ב-AlloyDB הם ScaNN ו-HNSW. אתם יכולים להיעזר בהנחיות הבאות כדי להחליט איזה סוג אינדקס הכי מתאים לתרחיש לדוגמה שלכם:
| סוג האינדקס | מתי להשתמש | יתרונות | האצה של מנוע מבוסס-עמודות |
| ScaNN |
בדרך כלל מתאים לנתונים עם מעט מאפיינים או למערכי נתונים גדולים מאוד שחורגים מהזיכרון. מתאים ל-10 מיליארד וקטורים. |
יש לו כמה יתרונות על פני HNSW ב-PostgreSQL רגיל:
|
אפשר להאיץ את החיפוש הווקטורי באמצעות אינדקס ScaNN בעזרת המנוע מבוסס-העמודות של AlloyDB. מידע נוסף זמין במאמר האצת החיפוש הווקטורי באמצעות המנוע מבוסס-העמודות. |
| HNSW |
בדרך כלל מתאים לנתונים עם יותר ממדים, שמתאימים ברובם למטמון בזיכרון. מתאים ל-10 עד 20 מיליון וקטורים. |
אינדקס HNSW מואץ של מנוע מבוסס-עמודות pgvector ב-AlloyDB מציע שאילתות וקטוריות מהירות עד פי 5 בהשוואה ל-PostgreSQL רגיל | אפשר להאיץ את החיפוש הווקטורי באמצעות אינדקס HNSW בעזרת המנוע מבוסס-העמודות של AlloyDB. מידע נוסף זמין במאמר האצת החיפוש הווקטורי באמצעות המנוע מבוסס-העמודות. |
Google ממליצה ליצור אינדקס וקטורי כדי לשפר את הביצועים של שאילתות החיפוש הווקטורי. למידע נוסף על השימוש באינדקס ANN לחיפושי דמיון, ראו יצירת אינדקסים באמצעות ScaNN.
כדי להאיץ את החיפוש המסונן של KNN, השתמשו במנוע מבוסס-עמודות.
המאמרים הבאים
- יצירת אינדקסים ווקטורים של שאילתות באמצעות ScaNN
- יצירת אינדקסים באמצעות HNSW
- כוונון הביצועים של שאילתות וקטוריות