שיפור הביצועים של שאילתות באמצעות פונקציות AI

התכונה 'חבילות חכמות' לפונקציות 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. מידע נוסף זמין במאמר בנושא אזורים נתמכים.

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