מידע על Codelab זה
1. מבוא
בשיעור Lab הזה תלמדו איך להשתמש ב-BigQuery Machine Learning להסקה באמצעות מודלים מרוחקים ( מודלים של Gemini) כדי לנתח תמונות של פוסטרים של סרטים וליצור סיכומים של הסרטים על סמך הפוסטרים ישירות במחסן הנתונים של BigQuery.
בתמונה שלמעלה: דוגמה לתמונות של פוסטר הסרט שתנתחו.
BigQuery היא פלטפורמה מנוהלת לניתוח נתונים, שתוכננה לשימוש עם AI ומתאימה לשימוש במספר מנועים, פורמטים ועננים. היא עוזרת לכם להפיק את המקסימום מהנתונים שלכם. אחת מהתכונות העיקריות שלו היא BigQuery Machine Learning לצורך הסקת מסקנות, שמאפשרת ליצור ולהריץ מודלים של למידת מכונה (ML) באמצעות שאילתות GoogleSQL.
Gemini הוא משפחה של מודלים של AI גנרטיבי שפותחו על ידי Google, והם מיועדים לשימוש במגוון מודלים.
הרצת מודלים של למידת מכונה באמצעות שאילתות GoogleSQL
בדרך כלל, כדי לבצע למידת מכונה או בינה מלאכותית (AI) במערכי נתונים גדולים, נדרשת תכנות נרחבת וידע במסגרות של למידת מכונה. כך, פיתוח הפתרונות מוגבל לקבוצה קטנה של מומחים בכל חברה. בעזרת BigQuery Machine Learning for inference, משתמשי SQL יכולים להשתמש בכלים הקיימים ובמיומנויות של SQL שהם רכשו כדי ליצור מודלים וליצור תוצאות מ-LLM ומממשקי Cloud AI API.
דרישות מוקדמות
- הבנה בסיסית של מסוף Google Cloud
- ניסיון ב-BigQuery הוא יתרון
מה תלמדו
- איך מגדירים את הסביבה והחשבון לשימוש בממשקי API
- איך יוצרים חיבור למשאב ב-Cloud ב-BigQuery
- איך יוצרים מערך נתונים וטבלת אובייקטים ב-BigQuery לתמונות של פוסטרים של סרטים
- איך יוצרים את המודלים המרוחקים של Gemini ב-BigQuery
- איך מבקשים ממודל Gemini לספק סיכומי סרטים לכל פוסטר
- איך יוצרים הטמעות טקסט לסרט שמוצג בכל פוסטר
- איך משתמשים ב-BigQuery
VECTOR_SEARCH
כדי להתאים תמונות של פוסטרים של סרטים לסרטים קשורים מאוד במערך הנתונים
מה צריך להכין
- חשבון Google Cloud ופרויקט ב-Google Cloud עם חיוב מופעל
- דפדפן אינטרנט כמו Chrome
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
תהליך ההקצאה והחיבור לסביבת העבודה אמור להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.
3. לפני שמתחילים
יש כמה שלבי הגדרה לעבודה עם מודלים של Gemini ב-BigQuery, כולל הפעלת ממשקי API, יצירת חיבור למשאב ב-Cloud והענקת הרשאות מסוימות לחשבון השירות של החיבור למשאב ב-Cloud. השלבים האלה מתבצעים פעם אחת לכל פרויקט, והם מוסברים בסעיפים הבאים.
הפעלת ממשקי API
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר:
gcloud config set project [YOUR-PROJECT-ID]
מגדירים את משתנה הסביבה PROJECT_ID
:
PROJECT_ID=$(gcloud config get-value project)
מגדירים את אזור ברירת המחדל לשימוש במודלים של Vertex AI. מידע נוסף על המיקומים הזמינים ל-Vertex AI בדוגמה הזו אנחנו משתמשים באזור us-central1
.
gcloud config set compute/region us-central1
מגדירים את משתנה הסביבה REGION
:
REGION=$(gcloud config get-value compute/region)
מפעילים את כל השירותים הנדרשים:
gcloud services enable bigqueryconnection.googleapis.com \
aiplatform.googleapis.com
הפלט הצפוי אחרי הרצת כל הפקודות שלמעלה:
student@cloudshell:~ (test-project-001-402417)$ gcloud config set project test-project-001-402417 Updated property [core/project]. student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-14650] student@cloudshell:~ (test-project-001-402417)$ student@cloudshell:~ (test-project-001-402417)$ gcloud services enable bigqueryconnection.googleapis.com \ aiplatform.googleapis.com Operation "operations/acat.p2-4470404856-1f44ebd8-894e-4356-bea7-b84165a57442" finished successfully.
4. יצירת חיבור למשאב ב-Cloud
במשימה הזו תיצורו חיבור למשאב ב-Cloud, שיאפשר ל-BigQuery לגשת לקובצי תמונות ב-Cloud Storage ולבצע קריאות ל-Vertex AI.
- במסוף Google Cloud, בתפריט הניווט (
), לוחצים על BigQuery.
- כדי ליצור קישור, לוחצים על + הוספה ואז על קישורים למקורות נתונים חיצוניים.
- ברשימת סוגי החיבורים, בוחרים באפשרות Vertex AI remote models, remote functions and BigLake (Cloud Resource).
- בשדה Connection ID (מזהה החיבור), מזינים gemini_conn עבור החיבור.
- בשדה Location type, בוחרים באפשרות Multi-region ואז בתפריט הנפתח בוחרים באפשרות US multi-region.
- משתמשים בהגדרות ברירת המחדל לשאר ההגדרות.
- לוחצים על Create connection.
- לוחצים על כניסה לחשבון.
- בחלונית Connection info, מעתיקים את מזהה חשבון השירות לקובץ טקסט לשימוש במשימה הבאה. בנוסף, החיבור יתווסף לקטע 'חיבורים חיצוניים' בפרויקט ב-BigQuery Explorer.
5. מתן הרשאות IAM לחשבון השירות של החיבור
במשימה הזו נותנים לחשבון השירות של הקישור למשאב ב-Cloud הרשאות IAM, באמצעות תפקיד, כדי לאפשר לו לגשת לשירותי Vertex AI.
- במסוף Google Cloud, בתפריט הניווט, לוחצים על IAM & Admin.
- לוחצים על Grant Access.
- בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם מקודם.
- בשדה Select a role (בחירת תפקיד), מזינים Vertex AI ובוחרים בתפקיד Vertex AI User.
- לוחצים על שמירה. כתוצאה מכך, מזהה חשבון השירות כולל עכשיו את התפקיד 'משתמש ב-Vertex AI'.
6. יצירת מערך הנתונים וטבלת האובייקטים ב-BigQuery לתמונות של פוסטרים של סרטים
במשימה הזו תיצורו מערך נתונים לפרויקט וטבלת אובייקטים בתוכו כדי לאחסן את תמונות הפוסטרים.
מערך הנתונים של תמונות של פוסטרים של סרטים שנעשה בהם שימוש במדריך הזה מאוחסן בקטגוריה ציבורית של Google Cloud Storage: gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters
יצירת מערך נתונים
תיצרו מערך נתונים כדי לאחסן אובייקטים של מסד נתונים, כולל טבלאות ומודלים, שנעשה בהם שימוש במדריך הזה.
- במסוף Google Cloud, בוחרים בתפריט הניווט (
) ואז בוחרים ב-BigQuery.
- בחלונית Explorer, לצד שם הפרויקט, בוחרים באפשרות View actions (
) ואז באפשרות Create dataset.
- בחלונית Create dataset, מזינים את הפרטים הבאים:
- מזהה מערך הנתונים: gemini_demo
- סוג המיקום: בוחרים באפשרות Multi-region
- במספר אזורים: בוחרים באפשרות US
- משאירים את ערכי ברירת המחדל בשאר השדות.
- לוחצים על Create Dataset.
כתוצאה מכך, מערך הנתונים gemini_demo
נוצר ומופיע מתחת לפרויקט שלכם ב-BigQuery Explorer.
יצירת טבלת האובייקטים
BigQuery לא מכיל רק נתונים מובְנים, אלא גם יכול לגשת לנתונים לא מובְנים (כמו תמונות של פוסטרים) דרך טבלאות אובייקטים.
כדי ליצור טבלת אובייקטים, מציינים קטגוריה של Cloud Storage. טבלת האובייקטים שנוצרת כוללת שורה לכל אובייקט מהקטגוריה, עם נתיב האחסון והמטא-נתונים שלו.
כדי ליצור את טבלת האובייקטים, משתמשים בשאילתת SQL.
- לוחצים על + כדי ליצור שאילתת SQL חדשה.
- בעורך השאילתות, מדביקים את השאילתה הבאה.
CREATE OR REPLACE EXTERNAL TABLE
`gemini_demo.movie_posters`
WITH CONNECTION `us.gemini_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']
);
- מריצים את השאילתה. התוצאה היא טבלת אובייקטים מסוג
movie_posters
שנוספה למערך הנתוניםgemini_demo
ומאוגרת עם הערךURI
(המיקום ב-Cloud Storage) של כל תמונה של פוסטרים של סרטים. - ב-Explorer, לוחצים על
movie_posters
ובודקים את הסכימה והפרטים. אפשר להריץ שאילתה בטבלה כדי לבדוק רשומות ספציפיות.
7. יצירת המודל המרוחק של Gemini ב-BigQuery
עכשיו, אחרי שיצרתם את טבלת האובייקטים, אתם יכולים להתחיל לעבוד איתה. במשימה הזו תלמדו ליצור מודל מרוחק של Gemini 1.5 Flash כדי שיהיה זמין ב-BigQuery.
יצירת מודל השלט הרחוק של Gemini 1.5 Flash
- לוחצים על + כדי ליצור שאילתת SQL חדשה.
- בעורך השאילתות, מדביקים את השאילתה הבאה ומריצים אותה.
CREATE OR REPLACE MODEL `gemini_demo.gemini_1_5_flash`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-1.5-flash')
כתוצאה מכך, מודל gemini_1_5_flash
נוצר והוא מתווסף למערך הנתונים gemini_demo
בקטע 'מודלים'.
- בכלי הניתוחים, לוחצים על המודל
gemini_1_5_flash
ובודקים את הפרטים.
8. איך מבקשים ממודל Gemini לספק סיכומי סרטים לכל פוסטר
במשימה הזו תשתמשו במודל המרוחק של Gemini שיצרתם זה עתה כדי לנתח את התמונות של כרזות הסרטים וליצור סיכומים לכל סרט.
אפשר לשלוח בקשות למודל באמצעות הפונקציה ML.GENERATE_TEXT
, תוך ציון המודל בפרמטרים.
ניתוח התמונות באמצעות המודל Gemini 1.5 Flash
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results` AS (
SELECT
uri,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
TABLE `gemini_demo.movie_posters`,
STRUCT( 0.2 AS temperature,
'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer. Do not use JSON decorators.' AS PROMPT,
TRUE AS FLATTEN_JSON_OUTPUT)));
כשהשאילתה פועלת, BigQuery מפעיל את מודל Gemini לכל שורה בטבלת האובייקטים, ומשלב את התמונה עם ההנחיה הסטטית שצוינה. התוצאה היא יצירת הטבלה movie_posters_results
.
- עכשיו נציג את התוצאות. יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
SELECT * FROM `gemini_demo.movie_posters_results`
התוצאה היא שורות לכל פוסטר של סרט עם הערך URI
(המיקום ב-Cloud Storage של תמונת הפוסטר של הסרט) ותוצאת JSON שכוללת את שם הסרט ואת השנה שבה הסרט יצא מהדגם Gemini 1.5 Flash.
אפשר לאחזר את התוצאות האלה בצורה שקל יותר לקרוא אותה על ידי שימוש בשאילתה הבאה. בשאילתה הזו נעשה שימוש ב-SQL כדי לחלץ את שם הסרט ושנת ההשקה מהתשובות האלה ולהעביר אותן לעמודות חדשות.
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_formatted` AS (
SELECT
uri,
JSON_VALUE(ml_generate_text_llm_result, "$.title") AS title,
JSON_VALUE(ml_generate_text_llm_result, "$.year") AS year
FROM
`gemini_demo.movie_posters_results` results )
התוצאה היא יצירת הטבלה movie_posters_result_formatted
.
- כדי לראות את השורות שנוצרו, אפשר להריץ את השאילתה הבאה בטבלה.
SELECT * FROM `gemini_demo.movie_posters_results_formatted`
שימו לב שהתוצאות בעמודה URI
לא השתנו, אבל ה-JSON הומר עכשיו לעמודות title
ו-year
בכל שורה.
איך מבקשים מהמודל Gemini 1.5 Flash לספק סיכומי סרטים
רוצה לקבל עוד קצת מידע על כל אחד מהסרטים האלה, למשל סיכום טקסט של כל אחד מהם? תרחיש השימוש הזה ליצירת תוכן מתאים במיוחד למודל LLM, כמו מודל Gemini 1.5 Flash.
- אתם יכולים להשתמש ב-Gemini 1.5 Flash כדי לספק סיכומי סרטים לכל פוסטרים. לשם כך, מריצים את השאילתה הבאה:
SELECT
uri,
title,
year,
prompt,
ml_generate_text_llm_result
FROM
ML.GENERATE_TEXT( MODEL `gemini_demo.gemini_1_5_flash`,
(
SELECT
CONCAT('Provide a short summary of movie titled ',title, ' from the year ',year,'.') AS prompt,
uri,
title,
year
FROM
`gemini_demo.movie_posters_results_formatted`
LIMIT
20 ),
STRUCT(0.2 AS temperature,
TRUE AS FLATTEN_JSON_OUTPUT));
שימו לב לשדה ml_generate_text_llm_result
בתוצאות. השדה הזה כולל סיכום קצר של הסרט.
9. יצירת הטמעות טקסט באמצעות מודל מרוחק
עכשיו אפשר לצרף את הנתונים המובְנים שיצרתם לנתונים מובְנים אחרים במחסן. מערך הנתונים הציבורי של IMDB שזמין ב-BigQuery מכיל כמות גדולה של מידע על סרטים, כולל דירוגים של צופים וגם כמה ביקורות לדוגמה של משתמשים בפורמט חופשי. הנתונים האלה יכולים לעזור לכם להעמיק את הניתוח של פוסטרים של סרטים ולהבין איך הסרטים האלה התקבלו.
כדי לצרף נתונים, תצטרכו מפתח. במקרה כזה, ייתכן שכותרות הסרטים שנוצרו על ידי מודל Gemini לא יהיו זהות לחלוטין לכותרות במערך הנתונים של IMDB.
במשימה הזו תייצרו הטמעות טקסט של שמות הסרטים והשנים משני מערכי הנתונים, ולאחר מכן תשתמשו במרחק בין ההטמעות האלה כדי לאחד את השם הקרוב ביותר ב-IMDB עם שמות הפוסטרים של הסרטים ממערך הנתונים החדש שיצרתם.
יצירת המודל המרוחק
כדי ליצור את הטמעות הטקסט, צריך ליצור מודל מרוחק חדש שמצביע על נקודת הקצה text-multilingual-embedding-002.
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE MODEL `gemini_demo.text_embedding`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'text-multilingual-embedding-002')
כתוצאה מכך, המודל text_embedding
נוצר ומופיע בכלי הניתוחים מתחת למערך הנתונים gemini_demo
.
יצירת הטמעות טקסט לכותרת ולשנה שמשויכים לפוסטרים
עכשיו תשתמשו במודל המרוחק הזה עם הפונקציה ML.GENERATE_EMBEDDING
כדי ליצור הטמעה לכל שם שנה של פוסטרים של סרטים.
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE TABLE
`gemini_demo.movie_posters_results_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING(
MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
uri
FROM
`gemini_demo.movie_posters_results_formatted` ),
STRUCT(TRUE AS flatten_json_output)));
התוצאה היא יצירת הטבלה movie_poster_results_embeddings
שמכילה את הטמעות הטקסט של תוכן הטקסט שמקושר לכל שורה בטבלה gemini_demo.movie_posters_results_formatted
.
- אפשר להציג את תוצאות השאילתה באמצעות השאילתה החדשה שבהמשך:
SELECT * FROM `gemini_demo.movie_posters_results_embeddings`
כאן מוצגים הטמעות הנתונים (ווקטורים שמיוצגים במספרים) של כל סרט שנוצר על ידי המודל.
יצירת הטמעות טקסט לקבוצת משנה של מערך הנתונים של IMDB
תיצורו תצוגה חדשה של נתונים מקבוצת נתונים ציבורית של IMDB, שמכילה רק את הסרטים שיצאו לפני 1935 (התקופה הידועה של הסרטים מתמונות הפוסטרים).
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE VIEW
`gemini_demo.imdb_movies` AS (
WITH
reviews AS (
SELECT
reviews.movie_id AS movie_id,
title.primary_title AS title,
title.start_year AS year,
reviews.review AS review
FROM
`bigquery-public-data.imdb.reviews` reviews
LEFT JOIN
`bigquery-public-data.imdb.title_basics` title
ON
reviews.movie_id = title.tconst)
SELECT
DISTINCT(movie_id),
title,
year
FROM
reviews
WHERE
year < 1935)
התוצאה היא תצוגה חדשה שמכילה רשימה של מזהי סרטים, שמות סרטים ושנת הפקה ייחודיים מטבלה bigquery-public-data.imdb.reviews
לכל הסרטים במערך הנתונים שיצאו לפני 1935.
- עכשיו ניצור הטמעות (embeddings) לקבוצת המשנה של הסרטים מ-IMDB, בתהליך דומה לזה שמתואר בקטע הקודם. יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
CREATE OR REPLACE TABLE
`gemini_demo.imdb_movies_embeddings` AS (
SELECT
*
FROM
ML.GENERATE_EMBEDDING( MODEL `gemini_demo.text_embedding`,
(
SELECT
CONCAT('The movie titled ', title, ' from the year ', year,'.') AS content,
title,
year,
movie_id
FROM
`gemini_demo.imdb_movies` ),
STRUCT(TRUE AS flatten_json_output) )
WHERE
ml_generate_embedding_status = '' );
תוצאת השאילתה היא טבלה שמכילה את הטמעות הטקסט של טבלה gemini_demo.imdb_movies
.
התאמת התמונות של פוסטרים של סרטים ל-IMDB movie_id
באמצעות BigQuery VECTOR_SEARCH
עכשיו אפשר למזג את שתי הטבלאות באמצעות הפונקציה VECTOR_SEARCH
.
- יוצרים שאילתה חדשה ומריצים אותה באמצעות משפט ה-SQL הבא:
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE');
בשאילתה נעשה שימוש בפונקציה VECTOR_SEARCH
כדי למצוא את השכן הקרוב ביותר בטבלה gemini_demo.imdb_movies_embeddings
לכל שורה בטבלה gemini_demo.movie_posters_results_embeddings
. השכן הקרוב ביותר נמצא באמצעות מדד המרחק הקוסינוס, שמציין את מידת הדמיון בין שני הטמעות.
אפשר להשתמש בשאילתה הזו כדי למצוא את הסרט הדומה ביותר במערך הנתונים של IMDB לכל אחד מהסרטים שזוהו על ידי Gemini 1.5 Flash בפוסטרים של הסרטים. לדוגמה, אפשר להשתמש בשאילתה הזו כדי למצוא את ההתאמה הקרובה ביותר לסרט 'Au Secours!' במערך הנתונים הציבורי של IMDB, שמתייחס לסרט הזה לפי השם שלו באנגלית, 'Help!'.
- יוצרים ומפעילים שאילתה חדשה כדי לצרף מידע נוסף על דירוגים של סרטים שזמינים במערך הנתונים הציבורי של IMDB:
SELECT
query.uri AS poster_uri,
query.title AS poster_title,
query.year AS poster_year,
base.title AS imdb_title,
base.year AS imdb_year,
base.movie_id AS imdb_movie_id,
distance,
imdb.average_rating,
imdb.num_votes
FROM
VECTOR_SEARCH( TABLE `gemini_demo.imdb_movies_embeddings`,
'ml_generate_embedding_result',
TABLE `gemini_demo.movie_posters_results_embeddings`,
'ml_generate_embedding_result',
top_k => 1,
distance_type => 'COSINE') DATA
LEFT JOIN
`bigquery-public-data.imdb.title_ratings` imdb
ON
base.movie_id = imdb.tconst
ORDER BY
imdb.average_rating DESC
השאילתה הזו דומה לשאילתה הקודמת. המערכת עדיין משתמשת בייצוגים מספריים מיוחדים שנקראים הטמעות וקטורים כדי למצוא סרטים דומים לפוסטר של סרט נתון. עם זאת, הוא גם מצטרף לדירוג הממוצע ולמספר ההצבעות של כל סרט שכנוב ליד סרט מסוים, מטבלה נפרדת ממערך הנתונים הציבורי של IMDB.
10. מזל טוב
כל הכבוד על השלמת ה-Codelab. יצרתם טבלת אובייקטים לתמונות הפוסטרים ב-BigQuery, יצרתם מודל Gemini מרוחק, השתמשתם במודל כדי לבקש מ-Gemini לנתח תמונות וסיפקתם סיכומי סרטים, יצרתם הטמעות טקסט של שמות סרטים והשתמשתם בהטמעות האלה כדי להתאים בין תמונות של פוסטרים של סרטים לשם הסרט הרלוונטי במערך הנתונים של IMDB.
מה עסקנו בו
- איך מגדירים את הסביבה והחשבון לשימוש בממשקי API
- איך יוצרים חיבור למשאב ב-Cloud ב-BigQuery
- איך יוצרים מערך נתונים וטבלת אובייקטים ב-BigQuery לתמונות של פוסטרים של סרטים
- איך יוצרים את המודלים המרוחקים של Gemini ב-BigQuery
- איך מבקשים ממודל Gemini לספק סיכומי סרטים לכל פוסטר
- איך יוצרים הטמעות טקסט לסרט שמוצג בכל פוסטר
- איך משתמשים ב-BigQuery
VECTOR_SEARCH
כדי להתאים תמונות של פוסטרים של סרטים לסרטים קשורים מאוד במערך הנתונים
השלבים הבאים / מידע נוסף