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

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

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

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

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

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

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

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

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

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

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

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

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

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