בחירת אינדקס וקטורים ב-AlloyDB AI

בחירת אסטרטגיית החיפוש הווקטורי והאינדקס המתאימים ב-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 מחלקות נקודות נתונים קיימות של לקוחות לקבוצות קטנות על סמך דמיון.
  • האפליקציה שלך דורשת זמן אחזור נמוך.
  • יש לכם יותר מ-100,000 וקטורים.

שני הסוגים הנפוצים של אינדקסים וקטוריים מבוססי-ANN ב-AlloyDB הם ScaNN ו-HNSW. אתם יכולים להיעזר בהנחיות הבאות כדי להחליט איזה סוג אינדקס הכי מתאים לתרחיש לדוגמה שלכם:

סוג האינדקס מתי להשתמש יתרונות האצה של מנוע מבוסס-עמודות
ScaNN

בדרך כלל מתאים לנתונים עם ממדים נמוכים או למערכי נתונים גדולים מאוד שחורגים מהזיכרון.

הפתרון הזה מתאים ל-10 מיליארד וקטורים.

יש לו כמה יתרונות על פני HNSW ב-PostgreSQL רגיל:

  • שאילתות וקטוריות מהירות פי 6 ושאילתות חיפוש וקטוריות עם מסננים מהירות פי 10
  • יצירת אינדקס מהירה פי 16
  • תפוקת כתיבה גבוהה פי 24
  • צורך עד פי 4 פחות זיכרון
אפשר להאיץ את החיפוש הווקטורי באמצעות אינדקס ScaNN בעזרת המנוע מבוסס-העמודות של AlloyDB. מידע נוסף זמין במאמר בנושא האצת חיפוש וקטורי באמצעות מנוע עמודות.
HNSW

בדרך כלל מתאים לנתונים רב-ממדיים שנכנסים ברובם למטמון בזיכרון.

מתאים ל-10 עד 20 מיליון וקטורים.

מנוע מבוסס-העמודות של pgvector מאיץ את אינדקס HNSW ב-AlloyDB ומציע שאילתות וקטוריות מהירות פי 4 מאשר ב-PostgreSQL רגיל אפשר להאיץ את החיפוש הווקטורי באמצעות אינדקס HNSW באמצעות מנוע מבוסס-עמודות ב-AlloyDB. מידע נוסף זמין במאמר בנושא האצת חיפוש וקטורי באמצעות מנוע עמודות.

‫Google ממליצה ליצור אינדקס וקטורי כדי לשפר את הביצועים של שאילתות החיפוש הווקטורי. מידע נוסף על השימוש באינדקס ANN לחיפושי דמיון זמין במאמר יצירת אינדקסים באמצעות ScaNN.

כדי להאיץ את החיפוש המסונן של KNN, השתמשו במנוע מבוסס-עמודות.

המאמרים הבאים