התוסף google_ml_integration ב-AlloyDB ל-PostgreSQL מאפשר ליצור הטמעות טקסט ישירות ב-SQL באמצעות פונקציות בסכימות public ו-google_ml. אפשר להפעיל את הפונקציה embedding() בסכימה public עם כל מודל הטמעה של Gemini Enterprise Agent Platform בלי לרשום נקודת קצה (endpoint). כדי להעביר פרמטרים מותאמים אישית כמו סוגי משימות או להשתמש במודלים של צד שלישי, צריך לרשום את נקודת הקצה של המודל ולהפעיל את הפונקציה google_ml.embedding() בסכימה google_ml.
איך הטמעות עובדות
נניח שיש מסד נתונים שפועל ב-AlloyDB עם המאפיינים הבאים:
מסד הנתונים מכיל טבלה בשם
items. כל שורה בטבלה הזו מתארת פריט שהעסק שלכם מוכר.הטבלה
itemsמכילה עמודה בשםcomplaints. בעמודהTEXTהזו מאוחסנות תלונות של קונים שנרשמו לגבי כל פריט.המסד משולב עם Model Garden, ולכן יש לו גישה למודלים באנגלית
gemini-embedding-001.
למרות שבמסד הנתונים הזה מאוחסנות תלונות על פריטים, התלונות האלה מאוחסנות כטקסט פשוט, ולכן קשה לשלוח אליהן שאילתות. לדוגמה, כדי לראות אילו פריטים קיבלו הכי הרבה תלונות מלקוחות שקיבלו את הצבע הלא נכון של המוצר, אתם יכולים להריץ שאילתות SQL רגילות בטבלה, שמחפשות התאמות שונות למילות מפתח. עם זאת, הגישה הזו מתאימה רק לשורות שמכילות את מילות המפתח המדויקות האלה.
לדוגמה, שאילתת SQL בסיסית כמו SELECT * FROM item WHERE complaints LIKE
"%wrong color%" לא מחזירה שורה שהשדה complaints שלה מכיל רק את הערך The picture shows a blue one, but the one I received was red.
שאילתות SQL שמבוססות על הטמעות מבוססות-LLM יכולות לעזור להחזיר תשובות דומות מבחינה סמנטית לשאילתות כאלה. באמצעות הטמעות, אפשר לשלוח שאילתה לטבלה בדוגמה הזו כדי למצוא פריטים שהתלונות לגביהם דומות מבחינה סמנטית לפרומפט טקסטואלי נתון, כמו It was the
wrong color.
כדי ליצור הטמעה בסיסית, בוחרים באחת מהסכימות הבאות.
לפני שמתחילים
כדי לאפשר ל-AlloyDB ליצור הטמעות:
- מתחברים למסד הנתונים באמצעות
psqlאו AlloyDB ל-PostgreSQL Studio בתור המשתמשpostgres. מוודאים שהתוסף
google_ml_integrationמותקן.כדי לבדוק את גרסת התוסף באמצעות הפקודה הבאה:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';אם צריך לעדכן את התוסף, משתמשים בפקודה
ALTER EXTENSION google_ml_integration UPDATE;.כדי ליצור הטמעות ממסד נתונים של AlloyDB, צריך להגדיר את AlloyDB כך שיפעל עם Agent Platform. מידע נוסף זמין במאמר שילוב מסד הנתונים עם Agent Platform.
נותנים למשתמשים במסד הנתונים הרשאות ליצור הטמעות.
אם אתם משתמשים ב-
psql, צריך להתחבר למסד הנתונים שרוצים לתת לו הרשאות:\c DB_NAME GRANT EXECUTE ON FUNCTION embedding TO "USER_NAME";מחליפים את מה שכתוב בשדות הבאים:
- DB_NAME: שם מסד הנתונים שרוצים לתת לו הרשאות.
- USER_NAME: שם המשתמש שרוצים לתת לו הרשאות.
אם אתם משתמשים ב-AlloyDB ל-PostgreSQL Studio, בוחרים את שם מסד הנתונים שרוצים להעניק לו הרשאות ברשימה Database. נותנים למשתמש את ההרשאה
EXECUTEבפונקציהgoogle_ml.embedding:GRANT EXECUTE ON FUNCTION google_ml.embedding TO "USER_NAME";מחליפים את USER_NAME בשם המשתמש שרוצים לתת לו הרשאות.
יצירת הטמעות
משתמשים בפונקציית ה-SQL google_ml.embedding() כדי לקרוא למודלים של הטמעת טקסט.
כדי להפעיל את המודל וליצור הטמעות, מריצים את השאילתה הבאה:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
מחליפים את מה שכתוב בשדות הבאים:
-
MODEL_ID: מזהה המודל המלא, לדוגמהgemini-embedding-001. -
CONTENT: הטקסט שרוצים לתרגם להטמעה וקטורית.
דוגמאות ליצירת הטמעות
בקטע הזה מופיעות כמה דוגמאות ליצירת הטמעות באמצעות נקודת קצה של מודל רשום.
מודלים של הטמעה ב-Gemini
כדי ליצור הטמעות לנקודת קצה רשומה של מודל gemini-embedding-001, מריצים את ההצהרה הבאה:
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
אם אשכול AlloyDB ונקודת הקצה של Gemini Enterprise Agent Platform נמצאים בפרויקטים שונים, צריך לבצע את השלבים הבאים:
מריצים את ההצהרה הבאה של
CALL.CALL google_ml.create_model( model_id => 'gemini-embedding-001', model_request_url => 'https://REGION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001:predict', model_provider => 'google', model_type => 'text_embedding', model_auth_type => 'alloydb_service_agent_iam', model_in_transform_fn => 'google_ml.vertexai_text_embedding_input_transform', model_out_transform_fn => 'google_ml.vertexai_text_embedding_output_transform' );כדי ליצור הטמעות לנקודת קצה רשומה של מודל
gemini-embedding-001, מריצים את ההצהרה הבאה:SELECT google_ml.embedding( model_id => 'gemini-embedding-001', content => 'AlloyDB is a managed, cloud-hosted SQL database service');
מודל הטמעה של OpenAI
כדי ליצור הטמעות לנקודת קצה של מודל text-embedding-ada-002 רשום של OpenAI, מריצים את ההצהרה הבאה:
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
כדי ליצור הטמעות לנקודות קצה רשומות של מודל text-embedding-3-small או text-embedding-3-large של OpenAI, מריצים את ההצהרה הבאה:
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
המאמרים הבאים
- הרצת חיפושים של דמיון וקטורי.
- איך יוצרים עוזר חכם לשופינג באמצעות AlloyDB, pgvector וניהול של נקודות קצה של מודלים
- יצירת אינדקסים ושאילתות של וקטורים.
- דוגמה לתהליך הטמעה
- מידע נוסף על ניהול נקודות קצה של מודלים