התכונה "חלוקה חכמה לקבוצות" של פונקציות AI ב-AlloyDB ל-PostgreSQL מאפשרת לשפר את הביצועים כשמריצים שאילתות SQL שמפעילות מודלים של AI. היא מספקת ביצועים זהים או טובים יותר מאלה של פונקציות מבוססות מערך, בלי שתצטרכו לכתוב שאילתות מורכבות של עיבוד באצווה. מידע נוסף על פונקציות AI זמין במאמר סקירה כללית על פונקציות AI.
התכונה "העברה חכמה לאצווה" תומכת בפונקציות ה-AI הבאות:
-
ai.if: חלוקה חכמה לאצוות חלה רק על שאילתותSELECTשבהן הפונקציה נמצאת בסעיףWHERE. הוא תומך בפונקציהai.ifאחת לכל סריקה, ופועל עם סריקה ערימתית (heap scan) של רצף, אינדקס ומפת סיביות. אם שאילתה מכילה כמה סריקות של טבלאות – לדוגמה, בטבלאות, ביחסים או בביטויי טבלה נפוצים (CTE) שונים, אפשר להאיץ פונקצייתai.ifאחת לכל סריקה. -
ai.rank: חלוקה חכמה לאצוות חלה רק על שאילתותSELECTשבהן הפונקציה נמצאת בסעיףORDER BY. הוא תומך בפונקציה אחת שלai.rankבכל סריקה. אם שאילתה מכילה כמה סריקות של טבלאות – לדוגמה, בטבלאות, ביחסים או ב-CTE שונים, תוכלו להאיץ פונקצייתai.rankאחת לכל סריקה.
הפעלת עיבוד חכם באצווה לפונקציות AI
כדי להפעיל את התכונה "איסוף חכם של נתונים באצווה" לפונקציות AI, מגדירים את הדגל google_ml_integration.enable_ai_function_acceleration לערך on. הדגל הזה מושבת כברירת מחדל, והוא קובע אם מותר למפעיל השאילתות להעביר פעולות AI שעומדות בדרישות לצומת החלת פונקציית ה-AI כדי להאיץ את הביצוע.
אם לא מגדירים את המדיניות או מגדירים אותה כ-off, כל פעולות השאילתה מבוצעות על ידי מנגנון הביצוע הרגיל של PostgreSQL.
אפשר להגדיר את הדגל הזה ברמת הסשן או ברמת המכונה.
כדי להפעיל את התכונה "איסוף חכם של נתונים באצווה" לפונקציות AI ברמת המכונה, משתמשים בפקודה gcloud
alloydb instances update:
gcloud alloydb instances update INSTANCE_ID \
--database-flags google_ml_integration.enable_ai_function_acceleration=on \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_ID: המזהה של המכונה שרוצים לעדכן. -
REGION_ID: מזהה האזור שבו נמצא האשכול. מידע נוסף זמין במאמר בנושא אזורים נתמכים. -
CLUSTER_ID: מזהה האשכול. -
PROJECT_ID: מזהה הפרויקט.
מידע נוסף על הגדרת דגל ברמת המכונה זמין במאמר הגדרת דגלים לניהול מסדי נתונים.
אימות של חלוקה חכמה לאצוות בפונקציות AI
כדי לוודא שהאפשרות 'אצווה חכמה' מופעלת עבור פונקציות AI, אפשר להשתמש בהצהרה EXPLAIN כדי לנתח את השאילתה.
אימות של חלוקה חכמה לקבוצות של פונקציות AI בשאילתות ai.if
בדוגמה הבאה מוסבר איך להפעיל את התכונה 'הוספה חכמה לאצווה' לפונקציות AI בסשן הנוכחי ולהריץ שאילתה באמצעות הפונקציה ai.if:
SET google_ml_integration.enable_ai_function_acceleration = on;
EXPLAIN (COSTS OFF) SELECT r.name
FROM restaurant_reviews r
WHERE ai.if('Is the following a positive review? Review: '||r.review) AND r.city = 'Los Angeles'
GROUP BY r.name
HAVING count(*) > 20
ORDER BY r.name;
כשמשתמשים בהצהרה EXPLAIN כדי לנתח את השאילתה, בתוכנית לביצוע השאילתה מופיע צומת AI Function Apply:
QUERY PLAN
----------------------------------------------------------------------------------------
GroupAggregate
Group Key: name
Filter: (count(*) > 20)
-> Sort
Sort Key: name
-> AI Function Apply
Filter: ai.if((('Is the following a positive review? Review: '::text || review)), NULL::character varying)
-> Index Scan using idx_restaurant_reviews_city on restaurant_reviews r
Index Cond: ((city)::text = 'Los Angeles'::text)
אימות של אצווה חכמה לפונקציות AI בשאילתות של ai.rank
בדוגמה הבאה מוסבר איך להפעיל את התכונה 'הוספה חכמה לאצווה' לפונקציות AI בסשן הנוכחי ולהריץ שאילתה באמצעות הפונקציה ai.rank:
SET google_ml_integration.enable_ai_function_acceleration = on;
EXPLAIN (COSTS OFF) SELECT r.name, r.review
FROM restaurant_reviews r
WHERE r.city = 'Los Angeles'
ORDER BY ai.rank('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review) DESC
LIMIT 50;
כשמשתמשים בהצהרה EXPLAIN כדי לנתח את השאילתה, בתוכנית לביצוע השאילתה מופיע צומת AI Function Apply:
QUERY PLAN
----------------------------------------------------------------------------------------
Limit
-> Sort
Sort Key: (ai.rank(('Rank these reviews based on how much they emphasize high-quality ingredients. Review: ' || r.review'), NULL)) DESC
-> AI Function Apply
-> Bitmap Heap Scan on restaurant_reviews r
Recheck Cond: (city = 'Los Angeles')
-> Bitmap Index Scan on idx_restaurant_reviews_city
Index Cond: (city = 'Los Angeles')
הצומת AIFunctionApply בתוכנית לביצוע השאילתה מציין שהשאילתה השתמשה ב-smart batching לפונקציות AI. אם הצומת הזה לא קיים, השאילתה השתמשה בהפעלה רגילה של PostgreSQL.
מגבלות
- יש תמיכה רק בארגומנטים בסיסיים לפונקציות. בפונקציות
ai.ifו-ai.rank, הארגומנטpromptחייב להיות הפניה לעמודה או מחרוזת מילולית שמשורשרת עם הפניה לעמודה. כל הארגומנטים האחרים חייבים להיות קבועים. דוגמאות לארגומנטים נתמכים שלprompt:ai.if(r.review)ai.if('Is this true? : ' || r.review)ai.rank(r.review)ai.rank('Rate this review: ' || r.review)
- יש תמיכה רק בשאילתות
SELECTעםai.ifבסעיפיWHEREאוai.rankבסעיפיORDER BY. - אפשר להשתמש רק בפונקציית AI אחת בכל סריקת טבלה.
- יש תמיכה רק במודלים של Gemini שמוגדרים כברירת מחדל. מידע נוסף זמין במאמר בנושא מודלים של Gemini. כדי להשתמש במודל אחר, אתם יכולים להגדיר את הדגל
google_ml_integration.default_llm_modelלמזהה המודל שבו אתם רוצים להשתמש. - התכונה זמינה רק באזורים שבהם יש תמיכה במודל
gemini-2.5-flash-liteאו באזורים של מודל ה-LLM שהגדרתם באמצעות הדגלgoogle_ml_integration.default_llm_model. מידע נוסף זמין במאמר בנושא אזורים נתמכים.
המאמרים הבאים
- הרצת שאילתות SQL חכמות באמצעות פונקציות AI.
- האצת שאילתות AI באמצעות פונקציות שעברו אופטימיזציה.
- סינון באמצעות פונקציות מבוססות-מערך