במדריך הזה נסביר איך להשתמש בשאילתות 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 או יוצרים אותו.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
מפעילים את ממשקי ה-API הבאים, אם הם עדיין לא מופעלים: BigQuery, BigQuery Connection, Cloud Storage ו-Agent Platform API.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (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 (
roles/bigquery.objectRefAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת מערך הנתונים, הטבלאות, המודלים והחיבור
בקטע הזה יוצרים את מערך הנתונים, החיבור, הטבלאות והמודלים שמשמשים במדריך הזה.
יצירת מערך נתונים
כדי ליצור מערך נתונים ב-BigQuery שיכיל את האובייקטים שתיצרו במדריך הזה, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על Explorer:

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

בחלונית Explorer, לוחצים על Connections.
בדף Connections, לוחצים על Create connection.
בדף External data source, מבצעים את הפעולות הבאות:
בשדה Connection type, בוחרים באפשרות Vertex AI remote models, remote functions, Lakehouse and Spanner (Cloud Resource).
בשדה Connection ID, מקלידים
cymbal_conn.משאירים את שאר ההגדרות כמו שהן ולוחצים על Create connection.
בדף Connections, לוחצים על
cymbal_conn.בחלונית Connection info, מעתיקים את הערך של Service account ID. הוא נדרש בשלבים הבאים.
מתן הרשאות לשימוש במודלים של Agent Platform
כדי לגשת למודלים מרוחקים ב-Agent Platform, צריך לתת לחשבון השירות של החיבור את התפקיד "משתמש ב-Agent Platform". אתם צריכים להקצות את התפקיד הזה באותו פרויקט שיצרתם או בחרתם קודם. אם תקצו את התפקידים בפרויקט אחר, תופיע השגיאה bqcx-1234567890-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com
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 Pets, בוחרים אחת מהאפשרויות הבאות:
SQL
מדביקים את הפקודה הזו בעורך השאילתות ולוחצים על Run:
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);
תופיע הודעת אישור שדומה לזו: This
statement created a new table named product_images.
BigQuery DataFrames
לפני שתנסו את הדוגמה הזו, בצעו את הוראות ההגדרה של BigQuery DataFrames שמפורטות במאמר התחלה מהירה של BigQuery באמצעות BigQuery DataFrames. מידע נוסף זמין במאמרי העזרה של BigQuery DataFrames.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת ADC לסביבת פיתוח מקומית.
יצירת מודלים
הוראות ה-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, אתם יכולים לבחור אם ליצור טקסט דינמי מבוסס-AI או פלט מובנה בהתאם לסכימה מותאמת אישית שאתם מציינים. הפונקציה שולחת בקשות למודל Gemini ומחזירה struct שמכיל את הנתונים שנוצרו, את התשובה המלאה של המודל ואת הסטטוס.
כדי ליצור את נתוני המוצרים:
כדי ליצור את פרטי המוצר באמצעות
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.. | | +--------------+-------------------------------------+-----+ | ... | ... |... | +--------------+-------------------------------------+-----+
יצירת הטמעות וביצוע חיפוש וקטורי
יוצרים הטמעות מנתוני תמונות, ואז משתמשים בהטמעות כדי להחזיר תמונות דומות באמצעות חיפוש וקטורי.
בתרחיש ייצור, מומלץ ליצור אינדקס וקטורי לפני שמריצים חיפוש וקטורי. אינדקס וקטורי מאפשר לבצע את החיפוש הווקטורי מהר יותר, והוא מחזיר תוצאות משוערות יותר, אבל ה-recall מצטמצם.
כדי ליצור את ההטמעות ולבצע חיפוש וקטורי:
כדי ליצור את הטבלה
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 בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים הנפרדים.
- נכנסים לדף Manage resources במסוף Google Cloud .
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
לחלופין, כדי לשמור את הפרויקט ולמחוק את המשאבים שבהם השתמשתם במדריך, מבצעים את הפעולות הבאות:
נכנסים לדף BigQuery.
בחלונית הימנית, מרחיבים את הפרויקט ולוחצים על Datasets.
במערך הנתונים
bqml_tutorial, לוחצים על פתיחת הפעולות > מחיקה.בתיבת הדו-שיח Delete dataset, לוחצים על Delete כדי לאשר.
בחלונית הימנית, לוחצים על חיבורים.
בחיבור
cymbal_conn, לוחצים על פתיחת הפעולות > מחיקה.בתיבת הדו-שיח Delete connection, מזינים את הערך
deleteולוחצים על Delete כדי לאשר.
המאמרים הבאים
- מידע נוסף על עבודה עם נתונים ממספר מקורות זמין במאמר ניתוח נתונים ממספר מקורות ב-BigQuery.
- למידע נוסף על ערכי
ObjectRef, ראו עבודה עם ערכי ObjectRef.