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

בדף הזה נסביר על שיטות לחיפוש וקטורים ב-AlloyDB AI ומתי כדאי להשתמש בכל שיטה. כברירת מחדל, מערכת AlloyDB ל-PostgreSQL משתמשת בחיפוש k-nearest neighbors (KNN) כדי למצוא וקטורים שדומים לשאילתה. באינדקסים של וקטורים מיושמת אסטרטגיית חיפוש שנקראת 'שכן קרוב משוער' (ANN). כשיוצרים אינדקס וקטורי, AlloyDB AI משתמש ב-ANN, שמספק ביצועים טובים יותר מ-KNN. חשוב לזכור שכאשר בוחרים אינדקס וקטורי, צריך לאזן בין זמן האחזור של השאילתה לבין ההחזרה.

החזרה מודדת את היעילות של החיפוש באחזור כל הפריטים הרלוונטיים לשאילתה מסוימת. לדוגמה, נניח שיש לכם 100 הטמעות, וכל אחת מהן מייצגת ישות במסד הנתונים. אתם שולחים שאילתה להטמעות עם וקטור יעד ומגבילים אותה ל-10 תוצאות. חיפוש וקטורים ב-KNN מוצא את 10 הווקטורים הכי קרובים באמצעות שיטת חישוב של כוח גס, וכתוצאה מכך מתקבלת רמת היזכרות של 100%. ‫AlloyDB AI משתמש בשיטה הזו כברירת מחדל אם לא נוצר או נבחר אינדקס חיפוש וקטורי. כשיוצרים אינדקס וקטורי ב-AlloyDB, בדרך כלל נעשה שימוש ב-ANN, שעשוי לחלק וקטורים לפי דמיון כדי לאפשר אחזור מהיר יותר. כתוצאה מכך, יכול להיות ש-10 הווקטורים שמוחזרים בדוגמה הקודמת לא יהיו בדיוק 10 הווקטורים שהמרחק שלהם הכי קרוב. אם 9 מתוך 10 הווקטורים שאוחזרו הם הקרובים ביותר במרחב לווקטור השאילתה, אז ה-recall הוא 90%. מידע נוסף מופיע במאמר מדידת ההחזרה של שאילתות וקטוריות.

זמן האחזור של השאילתה מגדיר כמה מהר נוצרות תוצאות החיפוש. לדוגמה, זמן האחזור מחושב על סמך הזמן שחלף מרגע שליחת השאילתה ועד להחזרת הווקטורים.

בחירה של אסטרטגיית חיפוש

כשמבצעים חיפוש וקטורי ב-AlloyDB, בוחרים באחת מאסטרטגיות החיפוש הבאות:

אסטרטגיית חיפוש תיאור תרחישים לדוגמה
שכנים קרובים (KNN)

אלגוריתם שמאתר את נקודות הנתונים של k השכנים הקרובים ביותר לנקודת נתונים נתונה של שאילתה. כשמבצעים חיפוש וקטורי בלי ליצור אינדקס, מתבצע חיפוש KNN כברירת מחדל.

כדי לשפר עוד יותר את הביצועים של חיפוש KNN, מוסיפים את עמודת ההטמעה ועמודות אחרות שקשורות לשאילתה אל מאגר העמודות במנוע מבוסס-עמודות. אפשר להוסיף את העמודות באופן ידני או להוסיף את העמודות באמצעות הוספה אוטומטית של עמודות.

  • האפליקציה שלכם רגישה מאוד לדיוק ואתם צריכים את ההתאמות הכי קרובות.
  • יש לכם עשרות אלפי וקטורים
שכנים קרובים משוערים (ANN) אלגוריתם שמוצא בקירוב את נקודות הנתונים הקרובות ביותר. רשת ה-ANN מחלקת נקודות נתונים קיימות של לקוחות לקבוצות קטנות על סמך דמיון.
  • האפליקציה שלכם דורשת זמן אחזור נמוך.
  • יש לכם יותר מ-100,000 וקטורים.

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

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

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

אפשר להשתמש בווקטורים עד 10 מיליארד.

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

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

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

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

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

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

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

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