בחירת אסטרטגיית החיפוש הווקטורי והאינדקס המתאימים ב-AlloyDB AI מאפשרת לאזן בין זמן האחזור של השאילתה לבין דיוק החיפוש של עומס העבודה. כברירת מחדל, AlloyDB ל-PostgreSQL משתמש בחיפוש מדויק של k השכנים הקרובים ביותר (KNN) כדי למצוא וקטורים דומים. כשיוצרים אינדקס וקטורי, AlloyDB AI משתמש בחיפוש Approximate Nearest Neighbor (ANN) כדי להאיץ את ביצועי השאילתות בקנה מידה נרחב, תוך התפשרות על כמות ניתנת להגדרה של ה-recall.
החזרת מידע היא מדד שמשקף את היעילות של החיפוש באחזור כל הפריטים הרלוונטיים לשאילתה מסוימת. לדוגמה, נניח שיש לכם 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 מיליון וקטורים. |
מנוע מבוסס-העמודות של pgvector מאיץ את אינדקס HNSW ב-AlloyDB ומציע שאילתות וקטוריות מהירות פי 4 מאשר ב-PostgreSQL רגיל | אפשר להאיץ את החיפוש הווקטורי באמצעות אינדקס HNSW באמצעות מנוע מבוסס-עמודות ב-AlloyDB. מידע נוסף זמין במאמר בנושא האצת חיפוש וקטורי באמצעות מנוע עמודות. |
Google ממליצה ליצור אינדקס וקטורי כדי לשפר את הביצועים של שאילתות החיפוש הווקטורי. מידע נוסף על השימוש באינדקס ANN לחיפושי דמיון זמין במאמר יצירת אינדקסים באמצעות ScaNN.
כדי להאיץ את החיפוש המסונן של KNN, השתמשו במנוע מבוסס-עמודות.
המאמרים הבאים
- יצירת אינדקסים ווקטורים של שאילתות באמצעות ScaNN
- יצירת אינדקסים באמצעות HNSW
- כוונון הביצועים של שאילתות וקטוריות