בדף הזה מוסבר איך להפעיל חיזויים או ליצור הטמעות באמצעות מודל, ואז לרשום את נקודת הקצה של המודל בניהול נקודות קצה של מודלים.
מידע נוסף על הפונקציה google_ml.create_model() זמין במאמר הסבר על ניהול נקודות קצה של מודלים.
לפני שמתחילים
- אם נקודת הקצה של המודל דורשת אימות, צריך להפעיל את התוסף
google_ml_integration.
- מגדירים אימות בהתאם לספק המודל.
- חשוב לוודא שאתם משתמשים בשם המשתמש שמוגדר כברירת מחדל ב-
postgresכדי לגשת למסד הנתונים.
הפעלת התוסף
מגדירים את הדגל
google_ml_integration.enable_model_supportשל מסד הנתונים לערךonבמופע. מידע נוסף על הגדרת דגלים של מסד נתונים זמין במאמר הגדרת דגלים של מסד נתונים.מתחברים למכונה הראשית באמצעות לקוח
psqlאו Cloud SQL Studio.מריצים את הפקודה הבאה כדי לוודא שהתוסף
google_ml_integrationעודכן לגרסה 1.4.2:ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'מוסיפים את התוסף
google_ml_integrationגרסה 1.4.2 באמצעותpsql:CREATE EXTENSION google_ml_integration VERSION '1.4.2';אופציונלי: מעניקים הרשאה למשתמש PostgreSQL שאינו סופר-אדמין לנהל את המטא-נתונים של המודל:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;מחליפים את
NON_SUPER_USERבשם המשתמש ב-PostgreSQL שאין לו הרשאות סופר-משתמש.
מגדירים אימות
בקטעים הבאים מוסבר איך להגדיר אימות לפני שמוסיפים נקודת קצה של מודל Vertex AI או נקודות קצה של מודלים שמתארחים ב- Google Cloud.
הגדרת אימות ל-Vertex AI
כדי להשתמש בנקודות הקצה של מודל Google Vertex AI, צריך להוסיף הרשאות Vertex AI לחשבון השירות של Cloud SQL שמבוסס על IAM, שמשמש לחיבור למסד הנתונים. מידע נוסף על שילוב עם Vertex AI זמין במאמר שילוב של Cloud SQL עם Vertex AI.
הגדרת אימות למודלים שמתארחים בהתאמה אישית
בקטע הזה מוסבר איך להגדיר אימות אם אתם משתמשים ב-Secret Manager. בכל המודלים חוץ מנקודות הקצה של מודלים ב-Vertex AI, אפשר לאחסן את מפתחות ה-API או את טוקני ה-Bearer ב-Secret Manager.
אם נקודת הקצה של המודל לא מטפלת באימות באמצעות Secret Manager, הקטע הזה הוא אופציונלי. לדוגמה, אם נקודת הקצה של המודל משתמשת בכותרות HTTP כדי להעביר פרטי אימות או לא משתמשת באימות בכלל, אל תבצעו את השלבים שבקטע הזה.
כדי ליצור מפתח API או אסימון מסוג bearer ולהשתמש בהם, צריך לבצע את השלבים הבאים:
יוצרים סוד ב-Secret Manager. מידע נוסף זמין במאמר בנושא יצירת סוד וגישה לגרסה של סוד.
שם הסוד ונתיב הסוד משמשים בפונקציית ה-SQL
google_ml.create_sm_secret().נותנים הרשאות למכונת Cloud SQL לגשת לסוד.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"מחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: מזהה הסוד ב-Secret Manager. -
SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות של Cloud SQL שמבוסס על IAM. כדי למצוא את כתובת האימייל הזו, משתמשים בפקודהgcloud sql instances describe INSTANCE_NAMEומחליפים את INSTANCE_NAME בשם המכונה. הערך שמופיע לצד הפרמטרserviceAccountEmailAddressהוא כתובת האימייל.
-
מודלים להטמעת טקסט עם תמיכה מובנית
בקטע הזה מוסבר איך לרשום נקודות קצה של מודלים לניהול נקודות קצה של מודלים.
מודלים של הטמעה ב-Vertex AI
ניהול נקודות קצה של מודלים מספק תמיכה מובנית בכל הגרסאות של המודלים text-embedding-gecko, text-embedding ו-gemini-embedding של Vertex AI. משתמשים בשם המלא כדי להגדיר את גרסת המודל ל-textembedding-gecko@001 או ל-textembedding-gecko@002.
מזהי נקודות הקצה של מודלים להטמעה ב-Vertex AI נתמכים כברירת מחדל בניהול נקודות קצה של מודלים, ולכן אפשר להשתמש בכל אחד מהם ישירות כמזהה המודל. במודלים האלה, התוסף מגדיר באופן אוטומטי פונקציות ברירת מחדל של טרנספורמציה.
מוודאים שגם מכונת Cloud SQL וגם מודל Vertex AI שאתם שולחים אליו שאילתה נמצאים באותו אזור.
כדי לרשום את נקודת הקצה של מודל textembedding-gecko@002, קוראים לפונקציה create_model:
CALL
google_ml.create_model(
model_id => 'textembedding-gecko@002',
model_provider => 'google',
model_qualified_name => 'textembedding-gecko@002',
model_type => 'text_embedding',
model_auth_type => 'cloudsql_service_agent_iam');
מודלים של הטמעת טקסט שמתארחים בהתאמה אישית
בקטע הזה מוסבר איך לרשום נקודות קצה של מודלים בהתאמה אישית שמארחים ברשתות בתוך Google Cloud.
הוספה של נקודות קצה (endpoints) של מודלים להטמעת טקסט באירוח מותאם אישית כוללת יצירה של פונקציות טרנספורמציה, ואופציונלית, כותרות HTTP מותאמות אישית. לעומת זאת, כדי להוסיף נקודות קצה של מודלים גנריים באירוח מותאם אישית, אפשר ליצור כותרות HTTP מותאמות אישית ולהגדיר את כתובת ה-URL של בקשת המודל.
בדוגמה הבאה מוסיפים את נקודת הקצה של מודל הטמעת הטקסט custom-embedding-model שמארח Cymbal, שמתארח ב- Google Cloud. פונקציות הטרנספורמציה cymbal_text_input_transform ו-cymbal_text_output_transform משמשות לשינוי פורמט הקלט והפלט של המודל לפורמט הקלט והפלט של פונקציית החיזוי.
כדי לרשום נקודות קצה של מודל הטמעת טקסט בהוסטינג בהתאמה אישית, מבצעים את השלבים הבאים:
קוראים לסוד שמאוחסן ב-Secret Manager:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');מחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: מזהה הסוד שהגדרתם ומשמש בהמשך לרישום של נקודת קצה של מודל, לדוגמהkey1. -
SECRET_MANAGER_SECRET_ID: מזהה הסוד שהוגדר ב-Secret Manager כשיוצרים את הסוד. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
VERSION_NUMBER: מספר הגרסה של מזהה הסוד.
-
יוצרים את פונקציות ההמרה של הקלט והפלט על סמך החתימה הבאה של פונקציית החיזוי עבור נקודות קצה של מודלים להטמעת טקסט. מידע נוסף על יצירת פונקציות טרנספורמציה זמין במאמר דוגמה לפונקציות טרנספורמציה.
אלה דוגמאות לפונקציות טרנספורמציה שספציפיות לנקודת הקצה של מודל הטמעת הטקסט
custom-embedding-model:-- Input Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output; RETURN transformed_output; END; $$;קוראים לפונקציה ליצירת מודל כדי לרשום את נקודת הקצה של מודל ההטמעה המותאם אישית:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'custom',
model_type => 'text_embedding',
model_auth_type => 'secret_manager',
model_auth_id => 'SECRET_ID',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_in_transform_fn => 'cymbal_text_input_transform',
model_out_transform_fn => 'cymbal_text_output_transform');
מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: שדה חובה. מזהה ייחודי לנקודת הקצה של המודל שאתם מגדירים (לדוגמה,custom-embedding-model). המזהה הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
REQUEST_URL: שדה חובה. נקודת הקצה הספציפית למודל כשמוסיפים הטמעת טקסט בהתאמה אישית ונקודות קצה של מודלים גנריים – לדוגמה,https://cymbal.com/models/text/embeddings/v1. מוודאים שאפשר לגשת לנקודת הקצה של המודל דרך כתובת IP פנימית. ניהול נקודות קצה של מודלים לא תומך בכתובות IP חיצוניות. -
MODEL_QUALIFIED_NAME: חובה אם נקודת הקצה של המודל משתמשת בשם מלא. השם המוגדר במלואו אם לנקודת הקצה של המודל יש כמה גרסאות. -
SECRET_ID: מזהה הסוד שבו השתמשתם קודם בgoogle_ml.create_sm_secret()הליך.
מודלים גנריים
בקטע הזה מוסבר איך לרשום נקודת קצה של מודל גנריgemini-pro מ-Vertex AI Model Garden, שאין לו תמיכה מובנית.
אפשר לרשום כל נקודת קצה של מודל גנרי שמארחת בתוך Google Cloud.
Cloud SQL תומך רק בנקודות קצה של מודלים שזמינות דרך Vertex AI Model Garden ובנקודות קצה של מודלים שמארחים ברשתות בתוך Google Cloud.
מודל Gemini
בדוגמה הבאה מוסיפים את נקודת הקצה של מודל gemini-1.0-pro מ-Vertex AI Model Garden.
כדי לרשום את נקודת הקצה של מודל gemini-1.0-pro, קוראים לפונקציה create model:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה ייחודי לנקודת הקצה של המודל שאתם מגדירים (לדוגמה,
gemini-1). המזהה הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
מידע נוסף זמין במאמר בנושא הפעלת תחזיות לנקודות קצה של מודלים גנריים.