במדריך הזה נסביר איך להשתמש בשאילתות SQL, בפונקציה AI.GENERATE, בפונקציה AI.EMBED וב-BigQuery DataFrames כדי לנתח נתונים מולטימודליים ממערך הנתונים הציבורי של חנות חיות המחמד Cymbal.
הפונקציה AI.GENERATE מאפשרת לנתח כל שילוב של נתונים מובְנים ולא מובְנים, והפונקציה AI.EMBED מאפשרת ליצור הטמעות מנתוני טקסט או תמונה ב-BigQuery.
אפשר למצוא תמונות דומות באמצעות הפונקציה VECTOR_SEARCH. הפונקציה VECTOR_SEARCH מאפשרת לבצע חיפוש סמנטי או חיפוש היברידי בהטמעות כדי למצוא ישויות דומות.
במדריך הזה נעשה שימוש בטבלת אובייקטים מתמשכת שמאחסנת ערכים של ObjectRef.
מטרות
- אפשר להשתמש בערכים
ObjectRefכדי לאחסן נתוני תמונות לצד נתונים מובְנים בטבלה ב-BigQuery. - אפשר להשתמש בפונקציה
AI.GENERATEכדי להעשיר את הנתונים. - אפשר להשתמש בפונקציה
AI.EMBEDכדי ליצור הטמעות על סמך נתוני תמונות. - אפשר להשתמש בפונקציה
VECTOR_SEARCHכדי למצוא תמונות דומות. - אפשר להשתמש במערכים של ערכי
ObjectRefכדי לסכם מדריכים למשתמש.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
- BigQuery: you incur costs for the data that you process in BigQuery.
- Cloud Storage: you incur costs for reading the objects stored in Cloud Storage.
- Gemini Enterprise Agent Platform: you incur costs for calls to Agent Platform models.
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
למידע נוסף על עלויות, אפשר לעיין בדפי התמחור הבאים:
לפני שמתחילים
-
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
מפעילים את ממשקי ה-API של BigQuery, BigQuery Connection, Cloud Storage ו-Agent Platform.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
יצירת מערכי נתונים וטבלאות:
בעלי נתונים ב-BigQuery (
roles/bigquery.dataOwner) -
הפעלת משימות BigQuery:
BigQuery Job User (
roles/bigquery.jobUser) -
יצירת חיבורים:
אדמין של חיבורים ל-BigQuery (
roles/bigquery.connectionAdmin) -
כדי לתת הרשאות לחשבון השירות של חיבור:
אדמין IAM של פרויקט (
roles/resourcemanager.projectIamAdmin) -
יצירת כתובות URL שמאפשרות לקרוא ולשנות אובייקטים ב-Cloud Storage:
BigQuery ObjectRef Admin (
roles/bigquery.objectRefAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת מערך הנתונים, הטבלאות, המודלים והחיבור
בקטע הזה יוצרים את מערך הנתונים, הקישור, הטבלאות והמודלים שמשמשים במדריך הזה.
יצירת מערך נתונים
כדי ליצור מערך נתונים ב-BigQuery שיכיל את האובייקטים שיוצרים במדריך הזה, בוחרים באחת מהאפשרויות הבאות:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בסייר, מרחיבים את הפרויקט ואז לוחצים על מערכי נתונים.
בדף Datasets (מערכי נתונים), לוחצים על Create dataset (יצירת מערך נתונים).
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה קבוצת נתונים), מזינים
cymbal_pets.בקטע Data location, בוחרים באפשרות US.
משאירים את הגדרות ברירת המחדל שנותרו כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).
SQL
משתמשים בהנחיה CREATE SCHEMA.
במסוף Google Cloud , עוברים לדף BigQuery.
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');מחליפים את
PROJECT_IDבמזהה הפרויקט.לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
תקבלו הודעת אישור שדומה להודעה הבאה: The dataset
named cymbal_pets was created.
יצירת חיבור
יוצרים חיבור למשאב בענן ומקבלים את חשבון השירות של החיבור. BigQuery משתמש בחיבור כדי לגשת לאובייקטים ב-Cloud Storage.
בחלונית הימנית, לוחצים על כלי הניתוחים:

בחלונית Explorer, לוחצים על Connections.
בדף Connections (חיבורים), לוחצים על Create connection (יצירת חיבור).
בדף External data source, מבצעים את הפעולות הבאות:
בשדה Connection type (סוג החיבור), בוחרים באפשרות Vertex AI remote models, remote functions, Lakehouse and Spanner (Cloud Resource) (מודלים מרוחקים של Vertex AI, פונקציות מרוחקות, Lakehouse ו-Spanner (משאב בענן)).
בשדה מזהה החיבור, מקלידים
cymbal_conn.משאירים את שאר ההגדרות כמו שהן ולוחצים על יצירת חיבור.
בדף Connections (חיבורים), לוחצים על
cymbal_conn.בחלונית פרטי החיבור, מעתיקים את הערך של מזהה חשבון השירות. הוא נדרש בשלבים הבאים.
מתן הרשאות לשימוש במודלים של Agent Platform
נותנים לחשבון השירות של החיבור את התפקיד Agent Platform User כדי לגשת למודלים מרוחקים ב-Agent Platform. צריך להקצות את התפקיד הזה באותו פרויקט שיצרתם או בחרתם קודם. הענקת התפקידים בפרויקט אחר מובילה לשגיאה bqcx-1234567890-abcd@gcp-sa-bigquery-condel.
does not have the permission to access resource.
כדי להעניק לחשבון השירות גישה לשימוש במודלים של Agent Platform:
עוברים לדף IAM & Admin.
לוחצים על Grant access.
בתיבת הדו-שיח Grant access (הענקת גישה):
בשדה New principals, מזינים את מזהה חשבון השירות שהעתקתם קודם.
בשדה Select a role (בחירת תפקיד), בוחרים באפשרות Agent Platform User (משתמש בפלטפורמת הסוכנים) או מחפשים אותה.
לוחצים על Save.
יצירת טבלת products
כדי ליצור טבלה רגילה שמכילה את פרטי המוצרים של חברת Cymbal pets, צריך לפעול לפי השלבים הבאים כדי לטעון את הנתונים מ-Cloud Storage:
נכנסים לדף Studio במסוף Google Cloud .
כדי ליצור את הטבלה
products, בוחרים באחת מהאפשרויות הבאות:SQL
מדביקים את הפקודה הזו בעורך השאילתות ולוחצים על Run:
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
תקבלו הודעת אישור שדומה להודעה הבאה:
Data was successfully loaded into managed table.BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames. מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירת טבלת product_images
כדי ליצור טבלת אובייקטים (product_images) שמכילה את תמונות המוצרים של חיות המחמד Cymbal, בוחרים אחת מהאפשרויות הבאות:
* { SQL }
Paste this command into the query editor, and then click
<span class="material-icons" aria-hidden="true">play_circle</span>
**Run**:
<pre class="lang-googlesql notranslate prettyprint devsite-click-to-copy">
CREATE OR REPLACE EXTERNAL TABLE cymbal_pets.product_images
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png'],
max_staleness = INTERVAL 30 MINUTE,
metadata_cache_mode = AUTOMATIC);
</pre>
You receive a confirmation message similar to the following: `This
statement created a new table named product_images.`
* { BigQuery DataFrames }
Before trying this sample, follow the BigQuery DataFrames
setup instructions in the BigQuery quickstart
using BigQuery DataFrames.
For more information, see the
BigQuery DataFrames reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see Set
up ADC for a local development environment.
יצירת מודלים
הוראות ה-SQL במדריך הזה מראות איך להפעיל פונקציות AI שלא דורשות יצירת מודל. אם אתם פועלים לפי ההוראות של BigQuery DataFrames, בוחרים באפשרות הזו כדי ליצור מודלים מרוחקים שמייצגים מודל Gemini ומודל הטמעה מולטי-מודאלי.
SQL
אפשר לדלג על השלב הזה.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירת טבלת products_mm עם נתונים מולטימודאליים
יוצרים טבלת products_mm עם עמודה image שמלאה בתמונות מוצרים מטבלת האובייקטים product_images. העמודה image שנוצרת היא עמודה מסוג STRUCT שמשתמשת בערכים ObjectRef כדי לאחסן נתוני תמונה לצד נתונים מובנים בטבלה רגילה ב-BigQuery.
ערך ObjectRef הוא סוג STRUCT עם סכימה מוגדרת מראש שמפנה לאובייקטים ב-Cloud Storage לצורך ניתוח מולטימודאלי.
אפשר לעבד ערכים של ObjectRef באמצעות פונקציות OBJ, פונקציות AI או פונקציות מוגדרות על ידי המשתמש ב-Python.
כדי ליצור את הטבלה products_mm ולאכלס אותה:
כדי ליצור טבלת products_mm, בוחרים אחת מהאפשרויות הבאות:
SQL
מדביקים את הפקודה הזו בעורך השאילתות ולוחצים על
Run:
CREATE OR REPLACE TABLE cymbal_pets.products_mm
AS
SELECT products.* EXCEPT (uri), ot.ref AS image FROM cymbal_pets.products
INNER JOIN cymbal_pets.product_images ot
ON ot.uri = products.uri;
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement created a new table named products_mm.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי לראות את נתוני העמודה image, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את הפקודה הזו בעורך השאילתות ולוחצים על
Run:
SELECT product_name, image
FROM cymbal_pets.products_mm
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| product_name | image.uri | image.version | image.authorizer | image.details |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium Background | gs://cloud-samples-data/bigquery/ | 1234567891011 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| | tutorials/cymbal-pets/images/ | | | "md5_hash":"494f63b9b137975ff3e7a11b060edb1d", |
| | aquaclear-aquarium-background.png | | | "size":1282805,"updated":1742492680017000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium | gs://cloud-samples-data/bigquery/ | 2345678910112 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| Gravel Vacuum | tutorials/cymbal-pets/images/ | | | "md5_hash":"b7bfc2e2641a77a402a1937bcf0003fd", |
| | aquaclear-aquarium-gravel-vacuum.png | | | "size":820254,"updated":1742492682411000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| ... | ... | ... | | ... |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
יצירת פרטי מוצר
משתמשים בפונקציה AI.GENERATE כדי ליצור את הנתונים הבאים למוצרים בחנות חיות המחמד:
- מוסיפים עמודה
image_description לטבלה products_mm.
- מאכלסים את העמודות
animal_type, search_keywords ו-subcategory בטבלה products_mm.
- מריצים שאילתה שמחזירה תיאור של כל מותג מוצר וגם ספירה של מספר המוצרים מהמותג הזה. תיאור המותג נוצר על ידי ניתוח פרטי המוצרים של כל המוצרים מהמותג הזה, כולל תמונות המוצרים.
בעזרת הפונקציה AI.GENERATE, אתם יכולים לבחור אם ליצור טקסט או פלט מובנה בהתאם לסכימה מותאמת אישית שאתם מציינים. הפונקציה פועלת על ידי שליחת בקשות למודל Gemini ומחזירה מבנה נתונים שמכיל את הנתונים שנוצרו, את התשובה המלאה של המודל ואת הסטטוס.
כדי ליצור את נתוני המוצרים:
כדי ליצור את פרטי המוצרים באמצעות AI.GENERATE, בוחרים באחת מהאפשרויות הבאות:
SQL
כדי ליצור את העמודה image_description ולאכלס אותה, מדביקים את הטקסט הבא בעורך השאילתות ולוחצים על ואז על Run:
-- Add the column to the existing table
ALTER TABLE bqml_tutorial.products_mm
ADD COLUMN IF NOT EXISTS image_description STRING;
-- Populate the new column using the AI.GENERATE function
UPDATE bqml_tutorial.products_mm
SET image_description = AI.GENERATE(
('Describe the following image: ', image),
endpoint => 'gemini-3.5-flash'
).result
WHERE image_description IS NULL;
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement altered the table named products_mm.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי לראות את התוכן של העמודה image_description, מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על Run:
SELECT product_name, image_description
FROM cymbal_pets.products_mm;
התוצאות אמורות להיראות כך:
+--------------------------------+-------------------------------------+
| product_name | image_description |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium Background | The image shows a colorful coral |
| | reef backdrop. The background is a |
| | blue ocean with a bright light... |
| | |
| | |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium | The image shows a long, clear |
| Gravel Vacuum | plastic tube with a green hose |
| | attached to one end. The tube... |
| | |
| | |
+--------------------------------+-------------------------------------+
| ... | ... |
+--------------------------------+-------------------------------------+
כדי לעדכן את העמודות animal_type, search_keywords ו-subcategory עם נתונים שנוצרו, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
UPDATE cymbal_pets.products_mm t
SET
animal_type = r.animal_type,
search_keywords = SPLIT(r.search_keywords, ','),
subcategory = r.subcategory
FROM (
SELECT
product_id,
g.* EXCEPT(full_response, status)
FROM bqml_tutorial.products_mm,
UNNEST([AI.GENERATE(
('For the image and description of a pet product, concisely generate the following metadata: 1) animal_type and 2) 5 SEO search keywords (comma separated), and 3) product subcategory. ', image, description),
endpoint => 'gemini-3.5-flash',
output_schema => 'animal_type STRING, search_keywords STRING, subcategory STRING'
)]) AS g
) r
WHERE t.product_id = r.product_id;
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement modified 205 rows in products_mm.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי לראות את הנתונים שנוצרו, בוחרים אחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
SELECT
product_name,
image_description,
animal_type,
search_keywords,
subcategory,
FROM cymbal_pets.products_mm;
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| product_name | image_description | animal_type | search_keywords | subcategory |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium Background | The image shows a colorful coral | fish | aquarium background | aquarium decor |
| | reef backdrop. The background is a | | fish tank backdrop | |
| | blue ocean with a bright light... | | coral reef decor | |
| | | | underwater scenery | |
| | | | aquarium decoration | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium | The image shows a long, clear | fish | aquarium gravel vacuum | aquarium |
| Gravel Vacuum | plastic tube with a green hose | | aquarium cleaning | cleaning |
| | attached to one end. The tube... | | aquarium maintenance | |
| | | | fish tank cleaning | |
| | | | gravel siphon | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| ... | ... | ... | ... | ... |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
כדי ליצור תיאור של כל מותג מוצר ומספר המוצרים מהמותג הזה, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
SELECT
brand,
COUNT(*) AS cnt,
AI.GENERATE(('Use the images and text to give one concise brand description ',
'for a website brand page. Return the description only.',
ARRAY_AGG(image LIMIT 10), ARRAY_AGG(description), ARRAY_AGG(category),
ARRAY_AGG(subcategory)),
endpoint => 'gemini-2.5-pro').result AS brand_description
FROM
cymbal_pets.products_mm
GROUP BY brand
ORDER BY cnt DESC;
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+--------------+-------------------------------------+-----+
| brand | brand_description | cnt |
+--------------+-------------------------------------+-----+
| AquaClear | AquaClear is a brand of aquarium | 33 |
| | and pond care products that offer | |
| | a wide range of solutions for... | |
+--------------+-------------------------------------+-----+
| Ocean | Ocean Bites is a brand of cat food | 28 |
| Bites | that offers a variety of recipes | |
| | and formulas to meet the specific.. | |
+--------------+-------------------------------------+-----+
| ... | ... |... |
+--------------+-------------------------------------+-----+
יצירת הטמעות וביצוע חיפוש וקטורי
ליצור הטבעות מנתוני תמונות, ואז להשתמש בהטבעות כדי להחזיר תמונות דומות באמצעות חיפוש וקטורי.
בתרחיש ייצור, מומלץ ליצור אינדקס וקטורי לפני שמריצים חיפוש וקטורי. אינדקס וקטורי מאפשר לבצע חיפוש וקטורי מהר יותר, והוא מחזיר תוצאות משוערות יותר, אבל ההחזרה מצטמצמת.
כדי ליצור את ההטמעות ולבצע חיפוש וקטורי, פועלים לפי השלבים הבאים:
כדי ליצור את הטבלה products_embeddings, בוחרים אחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
CREATE OR REPLACE TABLE cymbal_pets.products_embedding
AS (
SELECT
product_id,
AI.EMBED(image, endpoint => 'gemini-embedding-2').result AS embedding,
image
FROM cymbal_pets.products_mm
);
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement created a new table named products_embedding.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי לבצע חיפוש וקטורי שמחזיר תמונות מוצרים שדומות לתמונת הקלט שצוינה, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
SELECT *
FROM
VECTOR_SEARCH(
TABLE cymbal_pets.products_embedding,
'embedding',
query_value => AI.EMBED(
OBJ.MAKE_REF('gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/cozy-naps-cat-scratching-post-with-condo.png'),
endpoint => 'gemini-embedding-2').result);
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| query.embedding | base.product_id | base.embedding | base.image.uri | base.image.version | base.image.authorizer | base.image.details | distance |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 181 | -0.0112330541 | gs://cloud-samples-data/bigquery/ | 12345678910 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.0 |
| 0.0142525584 | | 0.0142525584 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"21234567hst16555w60j", | |
| 0.0135886827 | | 0.0135886827 | cozy-naps-cat-scratching-post-with-condo.png | | | "size":828318,"updated":1742492688982000}} | |
| 0.0149955815 | | 0.0149955815 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 187 | -0.0190353896 | gs://cloud-samples-data/bigquery/ | 23456789101 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.4216330832.. |
| 0.0142525584 | | 0.0116206668 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"7328728fhakd9937djo4", | |
| 0.0135886827 | | 0.0136198215 | cozy-naps-cat-scratching-post-with-bed.png | | | "size":860113,"updated":1742492688774000}} | |
| 0.0149955815 | | 0.0173457414 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| ... | ... | ... | ... | ... | ... | ... | ... |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
עיבוד נתונים מרובי-אופנים מסודרים באמצעות מערכים של ערכי ObjectRef
בקטע הזה מוסבר איך לסכם מדריכים למשתמשים באמצעות עיבוד של נתונים מולטימודאליים מסודרים באמצעות מערכים של ערכי ObjectRef. BigQuery יכול לנתח כמה קבצים לא מובְנים בו-זמנית באמצעות מערכים.
השלמתם את המשימות הבאות:
יוצרים את טבלת product_manuals כך שתכיל קובץ PDF של מדריך המוצר Crittercuisine Pro 5000 וקובצי PDF של כל דף במדריך.
צור טבלה שממפה את המדריך לחלקים שלו. המדריך המלא ודפי המדריך מאוחסנים כל אחד בעמודה ObjectRef.
מנתחת מערך של ערכי ObjectRef ביחד כדי להחזיר ערך יחיד שנוצר.
לנתח מערך של ערכי ObjectRef בנפרד ולהחזיר ערך שנוצר לכל ערך במערך.
כדי לעבד נתונים מרובי-אופנים מסודרים באמצעות ערכי ObjectRef, פועלים לפי השלבים הבאים:
כדי ליצור את הטבלה product_manuals, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
CREATE OR REPLACE EXTERNAL TABLE `cymbal_pets.product_manuals`
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = [
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/documents/*.pdf',
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/document_chunks/*.pdf']);
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement created a new table named product_manuals.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי לכתוב נתוני PDF לטבלה map_manual_to_chunks, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
-- Extract the file and chunks into a single table.
-- Store the chunks in the chunks column as array of ObjectRefs (ordered by page number)
CREATE OR REPLACE TABLE cymbal_pets.map_manual_to_chunks
AS
SELECT ARRAY_AGG(m1.ref)[0] manual, ARRAY_AGG(m2.ref ORDER BY m2.ref.uri) chunks
FROM cymbal_pets.product_manuals m1
JOIN cymbal_pets.product_manuals m2
ON
REGEXP_EXTRACT(m1.uri, r'.*/([^.]*).[^/]+')
= REGEXP_EXTRACT(m2.uri, r'.*/([^.]*)_page[0-9]+.[^/]+')
GROUP BY m1.uri;
תקבלו הודעת אישור שדומה להודעה הבאה: This
statement created a new table named map_manual_to_chunks.
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
כדי להציג את נתוני ה-PDF בטבלה map_manual_to_chunks, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
SELECT *
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| manual.uri | manual.version | manual.authorizer | manual.details | chunks.uri | chunks.version | chunks.authorizer | chunks.details |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| gs://cloud-samples-data/bigquery/ | 1742492785900455 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pef", | gs://cloud-samples-data/bigquery/ | 1745875761227129 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| tutorials/cymbal-pets/documents/ | | | "md5_hash":"c9032b037693d15a33210d638c763d0e", | tutorials/cymbal-pets/documents/ | | | "md5_hash":"5a1116cce4978ec1b094d8e8b49a1d7c", |
| crittercuisine_5000_user_manual.pdf | | | "size":566105,"updated":1742492785941000}} | crittercuisine_5000_user_manual_page1.pdf | | | "size":504583,"updated":1745875761266000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | crittercuisine_5000_user_manual_page1.pdf | 1745875760613874 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| | | | | tutorials/cymbal-pets/documents/ | | | "md5_hash":"94d03ec65d28b173bc87eac7e587b325", |
| | | | | crittercuisine_5000_user_manual_page2.pdf | | | "size":94622,"updated":1745875760649000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | ... | ... | ... | ... |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
כדי ליצור תשובה אחת ממודל Gemini על סמך ניתוח של מערך ערכים של ObjectRef, בוחרים באחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash').result AS Response,
FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+---------------------------------------------------------------------------+
| Response |
+---------------------------------------------------------------------------+
| Here is a one-line summary for each of the first 3 pages: |
| |
| Page 1 introduces the CritterCuisine Pro 5000 automatic pet feeder and |
| presents the initial part of the manual's Table of Contents. |
| Page 2 lists the items included with the feeder and details important |
| safety precautions for its use. |
| Page 3 describes the feeder's key features, provides assembly and initial |
| setup instructions, and begins the programming guide with clock setting. |
+---------------------------------------------------------------------------+
כדי ליצור כמה תשובות ממודל Gemini על סמך ניתוח של מערך ערכים של ObjectRef, בוחרים אחת מהאפשרויות הבאות:
SQL
מדביקים את השאילתה הבאה בעורך השאילתות ולוחצים על
Run:
WITH results AS (
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash',
output_schema => 'page1_summary STRING, page2_summary STRING, page3_summary STRING').*
FROM cymbal_pets.map_manual_to_chunks)
SELECT page1_summary, page2_summary, page3_summary
FROM results;
BigQuery DataFrames
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של BigQuery DataFrames במדריך לתחילת העבודה עם BigQuery באמצעות BigQuery DataFrames.
מידע נוסף מופיע במאמרי העזרה בנושא BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials.
מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
התוצאות אמורות להיראות כך:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| page1_summary | page2_summary | page3_summary |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| This manual provides an overview of the | This section explains how to program | This page covers connecting the feeder to Wi-Fi |
| CritterCuisine Pro 5000 automatic pet feeder, | the feeder's clock, set feeding | using the CritterCuisine Connect app, remote |
| including its features, safety precautions, | schedules, copy and delete meal settings, | feeding, managing feeding schedules, viewing |
| assembly instructions, and initial setup. | manually feed your pet, record | feeding logs, receiving low food alerts, |
| | a voice message, and understand | updating firmware, creating multiple pet profiles, |
| | the low food level indicator. | sharing access with other users, and cleaning |
| | | and maintaining the feeder. |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
לחלופין, כדי לשמור את הפרויקט ולמחוק את המשאבים שבהם השתמשתם במדריך הזה, פועלים לפי השלבים הבאים:
עוברים לדף BigQuery.
בחלונית הימנית, מרחיבים את הפרויקט ואז לוחצים על מערכי נתונים.
במערך הנתונים
bqml_tutorial, לוחצים על פתיחת הפעולות > מחיקה.בתיבת הדו-שיח מחיקת מערך נתונים, לוחצים על מחיקה כדי לאשר.
בחלונית הימנית, לוחצים על Connections.
בחיבור
cymbal_conn, לוחצים על פתיחת פעולות > מחיקה.בתיבת הדו-שיח מחיקת הקישור, מזינים
deleteולוחצים על מחיקה כדי לאשר.
המאמרים הבאים
- מידע נוסף על עבודה עם נתונים מרובי-אופנים זמין במאמר ניתוח נתונים מרובי-אופנים ב-BigQuery.
- מידע נוסף על ערכי
ObjectRefזמין במאמר עבודה עם ערכי ObjectRef. - כדי ללמוד איך לנתח נתונים מולטי-מודאליים באמצעות SQL והפונקציה
OBJ.LIST, אפשר לעיין במאמר ניתוח נתונים מולטי-מודאליים באמצעות SQL.
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-09-18 (שעון UTC).