כדי להפעיל תחזיות או ליצור הטמעות באמצעות מודל, צריך לרשום את נקודת הקצה של המודל בניהול נקודות קצה של מודלים.
מידע נוסף על הפונקציה google_ml.create_model() זמין במאמר הסבר על ניהול נקודות קצה של מודלים.
לפני שרושמים נקודת קצה של מודל באמצעות ניהול נקודות קצה של מודלים, צריך להפעיל את התוסף google_ml_integration ולהגדיר אימות על סמך ספק המודל, אם נקודת הקצה של המודל דורשת אימות.
חשוב לוודא שאתם ניגשים למסד הנתונים עם שם המשתמש שמוגדר כברירת מחדל postgres.
הפעלת התוסף
כדי להתחיל להשתמש בפונקציות שמשויכות לתוסף google_ml_integration, צריך להוסיף אותו ולהפעיל אותו. כדי לנהל נקודות קצה של מודלים, צריך להתקין את התוסף google_ml_integration.
מתחברים למסד הנתונים באמצעות
psql.אופציונלי: אם התוסף
google_ml_integrationכבר מותקן, משנים אותו כדי לעדכן לגרסה העדכנית:ALTER EXTENSION google_ml_integration UPDATE;מוסיפים את התוסף
google_ml_integrationבאמצעות psql:CREATE EXTENSION google_ml_integration;אופציונלי: מעניקים הרשאה למשתמש PostgreSQL שאינו סופר-אדמין לנהל את המטא-נתונים של המודל:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;מחליפים את
NON_SUPER_USERבשם המשתמש ב-PostgreSQL שאין לו הרשאות סופר-משתמש.מפעילים את ניהול נקודות הקצה של המודל במסד הנתונים:
ALTER SYSTEM SET google_ml_integration.enable_model_support=on; SELECT pg_reload_conf();
מגדירים אימות
בקטעים הבאים מוסבר איך להגדיר אימות לפני שמוסיפים נקודת קצה של מודל Vertex AI או נקודות קצה של מודלים מספקים אחרים.
הגדרת אימות ל-Vertex AI
כדי להשתמש בנקודות הקצה של מודל Google Vertex AI, צריך להוסיף הרשאות Vertex AI לחשבון השירות שבו השתמשתם במהלך ההתקנה של AlloyDB Omni. מידע נוסף זמין במאמר הגדרת ההתקנה של AlloyDB Omni לשליחת שאילתות למודלים מבוססי-ענן.
הגדרת אימות לספקי מודלים אחרים
בכל המודלים חוץ ממודלים של Vertex AI, אפשר לאחסן את מפתחות ה-API או את טוקני ה-Bearer ב-Secret Manager. השלב הזה הוא אופציונלי אם נקודת הקצה של המודל לא מטפלת באימות באמצעות Secret Manager – לדוגמה, אם נקודת הקצה של המודל משתמשת בכותרות HTTP כדי להעביר פרטי אימות או לא משתמשת באימות בכלל.
בקטע הזה מוסבר איך להגדיר אימות אם משתמשים ב-Secret Manager.
כדי ליצור מפתח API או אסימון מסוג bearer ולהשתמש בהם, צריך לבצע את השלבים הבאים:
יוצרים את הסוד ב-Secret Manager. מידע נוסף זמין במאמר בנושא יצירת סוד וגישה לגרסה של סוד.
השם והנתיב של הסוד משמשים בפונקציית ה-SQL
google_ml.create_sm_secret().נותנים הרשאות לאשכול AlloyDB לגשת לסוד.
gcloud secrets add-iam-policy-binding 'SECRET_ID' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"מחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: מזהה הסוד ב-Secret Manager.
SERVICE_ACCOUNT_ID: המזהה של חשבון השירות שיצרתם בשלב הקודם. חשוב לוודא שזה אותו חשבון שבו השתמשתם במהלך ההתקנה של AlloyDB Omni. האיסור הזה כולל את הסיומת המלאהPROJECT_ID.iam.gserviceaccount.com. לדוגמה:my-service@my-project.iam.gserviceaccount.comאפשר גם להקצות את התפקיד הזה לחשבון השירות ברמת הפרויקט. מידע נוסף זמין במאמר הוספת קשירת מדיניות של ניהול זהויות והרשאות גישה
-
מודלים להטמעת טקסט עם תמיכה מובנית
בקטע הזה מוסבר איך לרשום נקודות קצה של מודלים שניהול נקודות הקצה של המודלים מספק תמיכה מובנית עבורן.
מודלים של הטמעה ב-Vertex AI
ניהול נקודות הקצה של המודלים מספק תמיכה מובנית בכל הגרסאות של מודל text-embedding-gecko של Vertex AI. משתמשים בשם המלא כדי להגדיר את גרסת המודל ל-textembedding-gecko@001 או ל-textembedding-gecko@002.
מכיוון שמזהה נקודת הקצה של המודל textembedding-gecko ו-textembedding-gecko@001 רשום מראש במערכת לניהול נקודות קצה של מודלים, אפשר להשתמש בהם ישירות כמזהה המודל. במודלים האלה, התוסף מגדיר באופן אוטומטי פונקציות ברירת מחדל של טרנספורמציה.
כדי לרשום את נקודת הקצה של גרסת מודל textembedding-gecko@002, פועלים לפי השלבים הבאים:
ב-AlloyDB Omni, חשוב לוודא שהגדרתם AlloyDB Omni לשליחת שאילתות למודלים של Vertex AI מבוססי-ענן.
קוראים לפונקציה ליצירת מודל כדי להוסיף את נקודת הקצה של מודל
textembedding-gecko@002: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 => 'alloydb_service_agent_iam'); The request URL that the function generates refers to the project associated with the AlloyDB Omni service account. If you want to refer to another project, then ensure that you specify the `model_request_url` explicitly.
מודל הטמעת טקסט של Open AI
ניהול נקודות הקצה של המודל מספק תמיכה מובנית במודל text-embedding-ada-002 של OpenAI.התוסף google_ml_integration מגדיר באופן אוטומטי פונקציות ברירת מחדל להמרה ומפעיל קריאות למודל המרוחק.
בדוגמה הבאה מוסיפים את נקודת הקצה של מודל OpenAI text-embedding-ada-002.
- מתחברים למסד הנתונים באמצעות
psql. - יוצרים ומפעילים את התוסף
google_ml_integration. - מוסיפים את מפתח OpenAI API כסוד ל-Secret Manager לצורך אימות.
קוראים לסוד שמאוחסן ב-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: מספר הגרסה של מזהה הסוד.
-
קוראים לפונקציה ליצירת מודל כדי לרשום את נקודת הקצה של מודל
text-embedding-ada-002:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'open_ai', model_type => 'text_embedding', model_qualified_name => 'text-embedding-ada-002', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה ייחודי של נקודת הקצה של המודל שאתם מגדירים. מזהה המודל הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
SECRET_ID: מזהה הסוד שבו השתמשתם קודם בהליךgoogle_ml.create_sm_secret().
-
כדי ליצור הטבעות, אפשר לעיין בהוראות ליצירת הטבעה לנקודות קצה של מודלים עם תמיכה מובנית.
מודלים אחרים להטמעת טקסט
בקטע הזה מוסבר איך לרשום נקודות קצה של מודלים להטמעת טקסט שמתארחים בהתאמה אישית, או נקודות קצה של מודלים להטמעת טקסט שסופקו על ידי ספקי אירוח מודלים. יכול להיות שתצטרכו להוסיף פונקציות טרנספורמציה, ליצור כותרות HTTP או להגדיר נקודות קצה, בהתאם למטא-נתונים של נקודת הקצה של המודל.
מודל להטמעת טקסט באירוח מותאם אישית
בקטע הזה מוסבר איך לרשום נקודת קצה (endpoint) של מודל באירוח מותאם אישית, וגם איך ליצור פונקציות טרנספורמציה, ואם רוצים, כותרות HTTP מותאמות אישית. AlloyDB Omni תומך בכל נקודות הקצה של מודלים בהוסטינג בהתאמה אישית, ללא קשר למיקום ההוסטינג.
בדוגמה הבאה מוסיפים את נקודת הקצה של המודל המותאם אישית custom-embedding-model שמארח Cymbal. הפונקציות cymbal_text_input_transform ו-cymbal_text_output_transform
משמשות לשינוי פורמט הקלט והפלט של
המודל לפורמט הקלט והפלט של פונקציית החיזוי.
כדי לרשום נקודות קצה של מודל הטמעת טקסט בהוסטינג בהתאמה אישית, מבצעים את השלבים הבאים:
מתחברים למסד הנתונים באמצעות
psql.אופציונלי: מוסיפים את מפתח ה-API כסוד ל-Secret Manager לצורך אימות.
קוראים לסוד שמאוחסן ב-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. -
MODEL_QUALIFIED_NAME: חובה אם נקודת הקצה של המודל משתמשת בשם מלא. השם המוגדר במלואו אם לנקודת הקצה של המודל יש כמה גרסאות. -
SECRET_ID: מזהה הסוד שבו השתמשתם קודם בהליךgoogle_ml.create_sm_secret().
-
מודלים קטנים וגדולים של OpenAI Text Embedding 3
אפשר לרשום את נקודות הקצה של מודלי OpenAI text-embedding-3-small ו-text-embedding-3-large באמצעות פונקציית החיזוי של ההטמעה ופונקציות ההמרה שספציפיות לנקודת הקצה של המודל. בדוגמה הבאה אפשר לראות איך רושמים את נקודת הקצה של מודל OpenAI text-embedding-3-small.
כדי לרשום את נקודת הקצה של מודל ההטמעה text-embedding-3-small:
- מתחברים למסד הנתונים באמצעות
psql. - יוצרים ומפעילים את התוסף
google_ml_integration. - מוסיפים את מפתח OpenAI API כסוד ל-Secret Manager לצורך אימות. אם כבר יצרתם סוד למודל אחר של OpenAI, אתם יכולים להשתמש באותו סוד.
קוראים לסוד שמאוחסן ב-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: מזהה הסוד שהגדרתם ומשמש בהמשך כשרושמים נקודת קצה של מודל. -
SECRET_MANAGER_SECRET_ID: מזהה הסוד שהוגדר ב-Secret Manager כשיוצרים את הסוד. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
VERSION_NUMBER: מספר הגרסה של מזהה הסוד.
-
יוצרים את פונקציות ההמרה של הקלט והפלט על סמך החתימה הבאה של פונקציית החיזוי עבור מודלים של הטמעת טקסט. מידע נוסף על יצירת פונקציות טרנספורמציה זמין במאמר דוגמה לפונקציות טרנספורמציה. מידע על פורמטי הקלט והפלט שמצפים להם בנקודות הקצה של מודל OpenAI זמין במאמר הטמעות.
בהמשך מופיעות דוגמאות לפונקציות המרה לנקודות הקצה של מודל הטמעת הטקסט של OpenAI
text-embedding-ada-002,text-embedding-3-smallו-text-embedding-3-large.-- Input Transform Function corresponding to openai_text_embedding model endpoint family CREATE OR REPLACE FUNCTION openai_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ #variable_conflict use_variable DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT google_ml.model_qualified_name_of(model_id) INTO model_qualified_name; SELECT json_build_object('input', input_text, 'model', model_qualified_name)::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to openai_text_embedding model endpoint family CREATE OR REPLACE FUNCTION openai_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->'data'->0->'embedding')) INTO transformed_output; RETURN transformed_output; END; $$;קוראים לפונקציה ליצירת מודל כדי לרשום את נקודת הקצה של מודל ההטמעה
text-embedding-3-small:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'open_ai', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'text-embedding-3-small', model_in_transform_fn => 'openai_text_input_transform', model_out_transform_fn => 'openai_text_output_transform');מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה ייחודי לנקודת הקצה של המודל שאתם מגדירים, לדוגמהopenai-te-3-small. מזהה המודל הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
SECRET_ID: מזהה הסוד שבו השתמשתם קודם בהליךgoogle_ml.create_sm_secret().
-
מידע נוסף זמין במאמר בנושא יצירת הטמעה לנקודות קצה אחרות של מודלים להטמעת טקסט.
מודלים גנריים
בקטע הזה מוסבר איך לרשום כל נקודת קצה של מודל גנרי שזמינה אצל ספק של מודלים מתארחים, כמו Hugging Face, OpenAI, Vertex AI או כל ספק אחר. בקטע הזה מוצגות דוגמאות לרישום של נקודת קצה של מודל כללי שמתארח ב-Hugging Face, ומודל כללי gemini-pro מ-Vertex AI Model Garden, שאין לו תמיכה מובנית.
אתם יכולים לרשום כל נקודת קצה של מודל גנרי, כל עוד הקלט והפלט הם בפורמט JSON. יכול להיות שתצטרכו ליצור כותרות HTTP או להגדיר נקודות קצה על סמך המטא-נתונים של נקודת הקצה של המודל.
מודל כללי ב-Hugging Face
בדוגמה הבאה מוסיפים את נקודת הקצה של מודל הסיווג המותאם אישית facebook/bart-large-mnli שמתארח ב-Hugging Face.
- מתחברים למסד הנתונים באמצעות
psql. - יוצרים ומפעילים את התוסף
google_ml_integration. - מוסיפים את טוקן ה-Bearer כסוד ל-Secret Manager לצורך אימות.
קוראים לסוד שמאוחסן ב-Secret Manager:
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRE_MANAGER_SECRET_ID/versions/VERSION_NUMBER');מחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: מזהה הסוד שהגדרתם ומשמש בהמשך כשרושמים נקודת קצה של מודל. -
SECRET_MANAGER_SECRET_ID: מזהה הסוד שהוגדר ב-Secret Manager כשיוצרים את הסוד. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
VERSION_NUMBER: מספר הגרסה של מזהה הסוד.
-
קוראים לפונקציה ליצירת מודל כדי לרשום את נקודת הקצה של מודל
facebook/bart-large-mnli:CALL google_ml.create_model( model_id => 'MODEL_ID', model_provider => 'custom', model_request_url => 'REQUEST_URL', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID');מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה ייחודי לנקודת הקצה של המודל שאתם מגדירים, לדוגמה:custom-classification-model. מזהה המודל הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
REQUEST_URL: נקודת הקצה הספציפית למודל כשמוסיפים הטמעת טקסט בהתאמה אישית ונקודות קצה של מודלים גנריים, לדוגמהhttps://api-inference.huggingface.co/models/facebook/bart-large-mnli. -
MODEL_QUALIFIED_NAME: השם המוגדר במלואו של נקודת הקצה של גרסת המודל, לדוגמהfacebook/bart-large-mnli. -
SECRET_ID: מזהה הסוד שבו השתמשתם קודם בהליךgoogle_ml.create_sm_secret().
-
מודל Gemini
מוודאים שהגדרתם את AlloyDB Omni לשליחת שאילתות למודלים של Vertex AI מבוססי-ענן.
בדוגמה הבאה מוסיפים את נקודת הקצה של מודל gemini-1.0-pro מ-Vertex AI Model Garden.
- מתחברים למסד הנתונים באמצעות
psql. - יוצרים ומפעילים את התוסף
google_ml_integration. מפעילים את הפונקציה ליצירת מודל כדי לרשום את מודל
gemini-1.0-pro: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 => 'alloydb_service_agent_iam');מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה ייחודי לנקודת הקצה של המודל שאתם מגדירים, לדוגמה:gemini-1. מזהה המודל הזה משמש כהפניה למטא-נתונים שנקודת הקצה של המודל צריכה כדי ליצור הטמעות או להפעיל תחזיות. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
מידע נוסף זמין במאמר בנושא הפעלת תחזיות לנקודות קצה של מודלים גנריים.