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

בוחרים גרסת תיעוד:

בדף הזה מתוארות אסטרטגיות החיפוש הווקטורי של AlloyDB AI, ומוסבר מתי להשתמש בכל אסטרטגיה. כברירת מחדל, AlloyDB Omni משתמש בחיפוש k-השכנים הקרובים ביותר (KNN) כדי למצוא וקטורים שדומים לשאילתה. אינדקסים של וקטורים מיישמים אסטרטגיית חיפוש שנקראת Approximate Nearest Neighbor ‏ (ANN). כשיוצרים אינדקס וקטורי, AlloyDB AI משתמש ב-ANN, שמספק ביצועים טובים יותר מ-KNN. חשוב לזכור שכאשר בוחרים אינדקס וקטורי, צריך לאזן בין זמן האחזור של השאילתה לבין ה-recall.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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