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