התכונה 'חבילות חכמות' לפונקציות AI מאפשרת לכם לבצע אופטימיזציה של הביצועים כשאתם מריצים שאילתות שמשתמשות בפונקציות AI. היא מספקת ביצועים זהים או טובים יותר מאלה של פונקציות מבוססות מערך, בלי שתצטרכו לכתוב שאילתות מורכבות. מידע נוסף על פונקציות AI זמין במאמר סקירה כללית על פונקציות AI.
התכונה 'הוספת פונקציות חכמות' תומכת בפונקציות ה-AI הבאות:
-
ai.if: חלוקה חכמה למנות חלה רק על שאילתותSELECTשבהן הפונקציה נמצאת בסעיףWHERE. היא תומכת בפונקציה אחת שלai.ifלכל סריקה, ועובדת עם סריקה עוקבת, סריקת אינדקס וסריקת ערימה של מפת סיביות. אם שאילתה מכילה כמה סריקות של טבלאות – למשל, בטבלאות שונות, ביחסים או בביטויים נפוצים של טבלאות (CTEs), אפשר להאיץ פונקציה אחת של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 בתוכנית לביצוע שאילתה מציין שהשאילתה השתמשה באצווה חכמה לפונקציות 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 באמצעות פונקציות שעברו אופטימיזציה.
- ביצוע סינון באמצעות פונקציות מבוססות-מערך