סקירה כללית של Vector Search ב-AlloyDB AI

‫AlloyDB AI הוא תוסף מתקדם ל-AlloyDB ל-PostgreSQL, שנועד לשלב עיבוד וקטורי עם ביצועים גבוהים ישירות במסד הנתונים הרלציוני ברמת הארגון. הוא מאפשר למפתחים ליצור אפליקציות מתוחכמות וחכמות שמבינות את המשמעות הסמנטית של נתונים בפורמטים מובנים ולא מובנים. ‫AlloyDB AI משלב בין יכולות SQL לבין טכנולוגיית חיפוש וקטורי מתקדמת, ומספק פלטפורמה יחידה שמוכנה ל-AI לניהול נתונים ולתהליכי עבודה של יצירה משופרת באמצעות אחזור (RAG). כך אין צורך לפרוס ולנהל מסד נתונים וקטורי נפרד.

ארכיטקטורה וביצועים מרכזיים

‫AlloyDB משתמש בתוסף pgvector של PostgreSQL כדי לספק פונקציונליות של וקטורים. הוא תומך באינדקס HNSW הפופולרי, וגם באינדקס Scalable Nearest Neighbors ‏ (ScaNN), אלגוריתם מתקדם לחיפוש וקטורים שמבוסס על מחקר של שנים בחיפוש Google. השילוב העמוק הזה בסביבת PostgreSQL מאפשר פעולות מהירות ותואמות ל-pgvector, ושאילתות סמנטיות מתקדמות.

ביצועים של אינדקסים ב-ScaNN

אינדקס ScaNN מציע יתרונות משמעותיים במהירות בהשוואה לאינדקס HNSW (Hierarchical Navigable Small Worlds) הרגיל של PostgreSQL, ומספק פעולות וקטוריות מהירות שנדרשות לעומסי עבודה כבדים של AI:

פעולה שיפור בביצועים (לעומת אינדקס HNSW רגיל של PostgreSQL) תכונות
יצירת אינדקס עד פי 10 מהר יותר יצירת אינדקס מקביל
שאילתות חיפוש וקטורי עד פי 4 מהר יותר תחזוקה אוטומטית של אינדקסים
שאילתות חיפוש וקטורי מסוננות עד פי 10 מהר יותר ניראות ברמה שמתאימה לארגונים

סינון אדפטיבי ואופטימיזציה של שאילתות

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

  • סינון דינמי: מנגנון הסינון הדינמי מבטיח ביצועים אופטימליים כשמשתמשים במסננים, בצירופים ובאינדקסים של וקטורים בו-זמנית. הפונקציה פועלת על ידי התבוננות בנתונים סטטיסטיים של הרצת שאילתות בזמן ריצה, למידת הסלקטיביות של המסננים והתאמה של תוכנית ההרצה כדי לקבוע את הסדר היעיל ביותר של החלת המסננים וחיפוש וקטורים.
  • סינון מוטבע: סינון מוטבע הוא אסטרטגיית אופטימיזציה שספציפית לאלגוריתם ScaNN, ומבצעת חיפוש וקטורי והערכה של מסנן מטא נתונים במקביל. הוא משתמש באינדקסים משניים של PostgreSQL (כמו B-trees,‏ GIN או GiST) כדי ליצור רשימה קצרה (מפת סיביות) של שורות שעומדות בקריטריונים של המסנן. בסריקת הווקטורים הבאה, המערכת מחשבת רק את המרחקים של הווקטורים שנכללים בקבוצה המסוננת מראש, וכך מצמצמת באופן משמעותי את התקורה החישובית, במיוחד כשמדובר במסננים סלקטיביים במידה בינונית.

שילוב חלק עם Vertex AI

‫AlloyDB AI מתוכנן לשילוב מובנה עם המערכת האקולוגית של Vertex AI, ומאפשר לבצע טרנספורמציה של נתונים ולהעשיר אותם ישירות במסד הנתונים באמצעות SQL.

יצירה אוטומטית של הטמעה

הפלטפורמה תומכת ביצירה אוטומטית של הטמעה באמצעות התוסף google_ml_integration. היכולת הזו מאפשרת להמיר נתונים תפעוליים (טקסט, תמונות וסרטונים) להטמעות וקטוריות באמצעות מודלים של Vertex AI, כמו text-embedding-005.

  • רישום מודלים: מודלים של Vertex AI (מודלים של הטמעה ומודלים גנרטיביים) נרשמים במסד הנתונים באמצעות הפרוצדורה google_ml.create_model.
  • עמודות וירטואליות: אפשר ליצור הטבעות באופן אוטומטי ולשמור אותן בעמודה שנוצרה באמצעות הפונקציה embedding(), כדי להבטיח שהנתונים הווקטוריים יישארו מסונכרנים עם נתוני עמודת המקור:
ALTER TABLE my_table
ADD COLUMN embedding vector(768)
GENERATED ALWAYS AS (embedding('text-embedding-005', source_column)) STORED;

שאילתות והעשרה באמצעות AI גנרטיבי

אחרי שמטמיעים וקטורים מאוחסנים, מפתחים יכולים לבצע חיפושים סמנטיים מתוחכמים באמצעות אופרטור הדמיון בין וקטורים (<=>) ב-SQL סטנדרטי. בנוסף, אפשר להעביר את תוצאות החיפושים האלה ישירות למודלים של AI גנרטיבי, כמו gemini-2.0-flash-001, באמצעות פונקציות כמו google_ml.generate_content להעשרת שאילתות מבוססת-RAG ויצירת פלט ידידותי למשתמש.