הפעלת חיזויים אונליין ממסדי נתונים של AlloyDB

בחירת גרסה של מאמר העזרה:

בדף הזה מוסבר איך להפעיל תחזיות אונליין ממסד נתונים של AlloyDB ל-PostgreSQL.

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

לפני שמתחילים

כדי להפעיל חיזויים אונליין ממסד נתונים של AlloyDB, צריך להכין את מסד הנתונים ולבחור מודל מתאים של למידת מכונה.

הכנת מסד הנתונים

  1. הגדרת שילוב בין מסד הנתונים לבין Vertex AI.

  2. נותנים למשתמשים במסד הנתונים הרשאה להפעיל את הפונקציה ml_predict_row() כדי להריץ תחזיות:

    1. מחברים לקוח psql למופע הראשי של האשכול, כמו שמתואר במאמר חיבור לקוח psql למופע.

    2. בשורת הפקודה של psql, מתחברים למסד הנתונים ומעניקים הרשאות:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
      

      מחליפים את מה שכתוב בשדות הבאים:

      • DB_NAME: שם מסד הנתונים שצריך להעניק לו הרשאות.

      • USER_NAME: השם של המשתמש שצריך להעניק לו הרשאות.

בחירת מודל למידת מכונה

כשמפעילים את הפונקציה ml_predict_row(), צריך לציין את המיקום של מודל ה-ML. המודל שאתם מציינים יכול להיות אחד מהמודלים הבאים:

  • מודל שפועל ב-Vertex AI Model Garden.

    הפונקציה ml_predict_row() תומכת בהפעלת תחזיות רק במודלים טבלאיים או במודלים מותאמים אישית.

  • מודל Vertex AI עם נקודת קצה פעילה שיש לכם הרשאה לגישה אליה בניהול זהויות והרשאות גישה (IAM).

    ‫AlloyDB לא תומך בנקודות קצה פרטיות לקבלת חיזויים אונליין.

הפעלת חיזויים אונליין

משתמשים בפונקציית ה-SQL‏ ml_predict_row() כדי להפעיל תחזיות אונליין על הנתונים.

הפורמט של הארגומנט הראשוני של הפונקציה תלוי בכך אם מודל ה-ML שבו רוצים להשתמש נמצא ב-Vertex AI Model Garden או שהוא נקודת קצה שפועלת ב Google Cloud פרויקט.

שימוש במודל ב-Vertex AI Model Garden

כדי להפעיל חיזוי אונליין באמצעות מודל למידת מכונה שפועל ב-Vertex AI Model Garden, משתמשים בתחביר הבא לפונקציית ה-SQL‏ ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud

  • REGION_ID: המזהה של האזור שבו המודל נמצא, לדוגמה, us-central1 עבור gemini-pro Google Cloud

  • MODEL_ID: המזהה של מודל ה-ML לשימוש – לדוגמה, gemini-pro

  • CONTENTS: הקלט לקריאה לחיזוי, בפורמט JSON

אם מודל ה-ML מאוחסן באותו פרויקט ואזור כמו אשכול AlloyDB, אפשר לקצר את הארגומנט הראשון של הפונקציה הזו:

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

מידע על הודעות התגובה של המודל ב-JSON מופיע במאמר הפניה למודל בסיסי של AI גנרטיבי.

דוגמאות מופיעות בקטע דוגמאות להפעלות.

שימוש בנקודת קצה של מודל Vertex AI

כדי להפעיל חיזוי אונליין באמצעות נקודת קצה של מודל Vertex AI, משתמשים בתחביר הבא עבור פונקציית ה-SQL‏ ml_predict_row():

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: המזהה של Google Cloud הפרויקט שבו נמצא המודל

  • REGION_ID: המזהה של Google Cloud האזור שבו המודל נמצא, לדוגמה us-central1

  • ENDPOINT_ID: המזהה של נקודת הקצה של המודל

  • CONTENTS: הקלט לקריאה לחיזוי, בפורמט JSON

אם נקודת הקצה ממוקמת באותו פרויקט ובאותו אזור כמו אשכול AlloyDB, אפשר לקצר את הארגומנט הראשון של הפונקציה הזו:

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

מידע על הודעות התגובה של המודל ב-JSON זמין במאמר PredictResponse.

דוגמאות להפעלות

בדוגמה הבאה נעשה שימוש ב-gemini-pro, שזמין ב-Model Garden, כדי ליצור טקסט על סמך הנחיה קצרה שמועברת כארגומנט מילולי אל ml_predict_row():

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', '{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "What is AlloyDB?"
    }]
  }]
}');

התגובה היא אובייקט JSON. מידע נוסף על הפורמט של האובייקט זמין במאמר בנושא גוף התגובה.

בדוגמה הבאה, שינינו את הדוגמה הקודמת באופן הבא:

  • בדוגמה נעשה שימוש בתוכן של העמודה messages.message במסד הנתונים הנוכחי כקלט.

  • בדוגמה הזו רואים שימוש בפונקציה json_build_object() כדי לעזור בעיצוב הפרמטרים של הפונקציה.


select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

אובייקט ה-JSON שמוחזר מכיל עכשיו רשומה אחת במערך predictions לכל שורה בטבלה messages.

מכיוון שהתגובה היא אובייקט JSON, אפשר לשלוף ממנה שדות ספציפיים באמצעות אופרטור החץ של PostgreSQL:

select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

דוגמאות נוספות לארגומנטים של ml_predict_row() זמינות במאמר מדריך למתחילים לשימוש ב-Vertex AI API.