ניתוח תמונות
במדריך הזה נסביר איך לקבל תובנות מנתוני תמונות לא מובְנים באמצעות שילוב של BigQuery ML עם Gemini. במדריך יוצרים מודל מרוחק שמבוסס על gemini-2.5-flash, ומשתמשים בפונקציה AI.GENERATE_TEXT כדי לחלץ באופן אוטומטי מטא-נתונים, כמו שמות ושנות הפצה, מאוסף של כרזות סרטים.
מטרות
- יוצרים טבלת אובייקטים ב-BigQuery על נתוני תמונות בקטגוריה של Cloud Storage.
- יוצרים מודל מרוחק של BigQuery ML שמטרגט את המודל
gemini-2.5-flashשל Gemini Enterprise Agent Platform. - משתמשים במודל המרוחק עם הפונקציה
AI.GENERATE_TEXTכדי לזהות את הסרטים שמשויכים לקבוצה של כרזות סרטים.
עלויות
המדריך הזה משתמש ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את העלויות בהתאם לשימוש הצפוי, אתם יכולים להשתמש במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
-
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
מפעילים את ממשקי ה-API הבאים, אם הם עדיין לא מופעלים: BigQuery, BigQuery Connection ו-Agent Platform API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?
התפקידים הנדרשים
כדי להריץ את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM):
- יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery:
אדמין ב-BigQuery (
roles/bigquery.admin). - נותנים הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin).
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לבצע את המשימות שמפורטות במאמר הזה. כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required Permissions:
ההרשאות הנדרשות
- יוצרים מערך נתונים:
bigquery.datasets.create - יצירה, הקצאה ושימוש בחיבור:
bigquery.connections.* - מגדירים את חיבור ברירת המחדל:
bigquery.config.* - מגדירים את ההרשאות של חשבון השירות:
resourcemanager.projects.getIamPolicyוגםresourcemanager.projects.setIamPolicy - יוצרים טבלת אובייקטים:
bigquery.tables.createוגםbigquery.tables.update - יוצרים מודל ומריצים הסקה:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
הכנת הסביבה
כדי להריץ הסקת מסקנות ב-BigQuery ML על טבלאות אובייקטים באמצעות gemini-2.5-flash, צריך להקצות לפרויקט מקום שמור ב-BigQuery. אם כבר יש הקצאה של הזמנה לפרויקט, אתם יכולים לדלג על השלב הזה.
יצירת בקשה לשמירת מקום
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על Create reservation.
בדף Create reservation, מבצעים את הפעולות הבאות:
- בשדה Reservation name, מזינים
bqml-tutorial-reservation. - בשדה Location, בוחרים באפשרות us (multiple regions in United States).
- משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על שמירה.
- בשדה Reservation name, מזינים
הקצאת ההזמנה
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
בטבלה Slot reservations, מוצאים את ההזמנה שרוצים להקצות לפרויקט.
לוחצים על הצגת הפעולות > יצירת מטלה.
בקטע Create an assignment (יצירת מטלה), לוחצים על Browse (עיון) ובוחרים את הפרויקט.
בקטע סוג העבודה, בוחרים באפשרות QUERY. כך תבטיחו ששאילתות ה-SQL שלכם ישתמשו ב-slots של ההזמנה הזו.
לוחצים על יצירה.
יצירת קבוצת נתונים
כדי ליצור מערך נתונים ב-BigQuery, בוחרים אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.
ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.
בדף Datasets, לוחצים על Create dataset.
בחלונית Create dataset:
בשדה Dataset ID, מזינים
bqml_tutorial.בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).
משאירים את שאר הגדרות ברירת המחדל כמו שהן.
לוחצים על Create dataset.
BQ
כדי ליצור קבוצת נתונים חדשה, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialומגדירים את מיקום הנתונים ל-US:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
מוודאים שמערך הנתונים נוצר:
bq ls
API
מפעילים את השיטה datasets.insert עם משאב של מערך נתונים מוגדר:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
יצירת טבלת האובייקטים
יוצרים טבלת אובייקטים על התמונות של פוסטרים של סרטים בקטגוריה הציבורית של Cloud Storage. טבלת האובייקטים מאפשרת לנתח את התמונות בלי להעביר אותן מ-Cloud Storage.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את טבלת האובייקטים:
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters` WITH CONNECTION DEFAULT OPTIONS ( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);
יצירת המודל המרוחק
יוצרים מודל מרוחק שמייצג מודל של Agent Platform ב-gemini-2.5-flash:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את המודל המרוחק:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-flash');
יכול להיות שהשאילתה תימשך כמה דקות, ואחריה המודל
gemini-visionיופיע במערך הנתוניםbqml_tutorialבחלונית Explorer. מכיוון שהשאילתה משתמשת בהצהרהCREATE MODELכדי ליצור מודל, אין תוצאות לשאילתה.
ניתוח של כרזות הסרטים
משתמשים במודל המרוחק כדי לנתח את כרזות הסרטים ולקבוע איזה סרט כל כרזה מייצגת, ואז כותבים את הנתונים האלה בטבלה.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה כדי לנתח את התמונות של כרזות הסרטים:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results` AS ( SELECT uri, result FROM AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-vision`, TABLE `bqml_tutorial.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.' AS PROMPT)));
בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:
SELECT * FROM `bqml_tutorial.movie_posters_results`;
הפלט אמור להיראות כך:
+--------------------------------------------+----------------------------------+ | uri | result | +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |
json | | management/datasets/classic-movie- | { | | posters/little_annie_rooney.jpg | "title": "Little Annie Rooney", | | | "year": 1912 | | | } | | || +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |json | | management/datasets/classic-movie- | { | | posters/mighty_like_a_mouse.jpg | "title": "Mighty Like a Moose", | | | "year": 1926 | | | } | | || +--------------------------------------------+----------------------------------+ | gs://cloud-samples-data/vertex-ai/dataset- |json | | management/datasets/classic-movie- | { | | posters/brown_of_harvard.jpeg | "title": "Brown of Harvard", | | | "year": 1926 | | | } | | || +--------------------------------------------+----------------------------------+
עיצוב הפלט מהמודל
כדי שיהיה קל יותר לקרוא את הנתונים של שם הסרט והשנה, צריך לעצב את הנתונים שהמודל מחזיר.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מריצים את השאילתה הבאה כדי לשנות את הפורמט של הנתונים:
CREATE OR REPLACE TABLE `bqml_tutorial.movie_posters_results_formatted` AS ( SELECT uri, JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.title") AS title, JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.year") AS year FROM `bqml_tutorial.movie_posters_results` results );
בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:
SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;
הפלט אמור להיראות כך:
+--------------------------------------------+----------------------------+------+ | uri | title | year | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port" | 1895 | | management/datasets/classic-movie- | | | | posters/barque_sortant_du_port.jpeg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery" | 1903 | | management/datasets/classic-movie- | | | | posters/the_great_train_robbery.jpg | | | +--------------------------------------------+----------------------------+------+ | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney" | 1912 | | management/datasets/classic-movie- | | | | posters/little_annie_rooney.jpg | | | +--------------------------------------------+----------------------------+------+
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבים ספציפיים
אם אתם רוצים להשתמש בפרויקט שוב, אתם צריכים למחוק את המשאבים שיצרתם בשביל המדריך.
מחיקת מערך הנתונים
המסוף
מוחקים את כל מערך הנתונים bqml_tutorial ואת כל התוכן שלו באמצעות הפקודה הבאה ב-SQL:
DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;
BQ
מוחקים את כל מערך הנתונים bqml_tutorial ואת כל התוכן שלו:
bq rm -r bqml_tutorial
מחיקת ההזמנה
המסוף
אם יצרתם הזמנה ב-BigQuery כחלק מהמדריך הזה, כדאי להסיר אותה כדי להימנע מחיובים נוספים על משבצות.
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
בטבלה Slot reservations, מאתרים את
bqml-tutorial-reservation.לוחצים על הצגת פעולות > מחיקה.
BQ
אם יצרתם הקצאה ב-BigQuery בשם bqml-tutorial-reservation במיקום us, אתם יכולים להשתמש בפקודה הבאה כדי להסיר אותה:
bq rm --reservation --location=us bqml-tutorial-reservation
מחיקת החיבור
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer, מאתרים את הפרויקט ולוחצים על Connections.
מוצאים את החיבור בטבלה.
לוחצים על הצגת פעולות > מחיקה.
BQ
מחיקת החיבור:
bq rm --connection --location=us CONNECTION_ID
מחליפים את CONNECTION_ID במזהה האמיתי של החיבור.
המאמרים הבאים
- מידע נוסף על פונקציות AI גנרטיביות ב-BigQuery
- איך מכווננים ומעריכים מודל
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.