本教學課程說明如何使用 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.
如要根據預測用量估算費用,請使用 Pricing Calculator。
如要進一步瞭解費用,請參閱下列定價頁面:
事前準備
-
在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您需要專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
-
如果尚未啟用 BigQuery、BigQuery Connection、Cloud Storage 和 Agent Platform API,請啟用這些 API。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
必要的角色
如要取得完成本教學課程所需的權限,請要求管理員授予您下列 IAM 角色:
-
建立資料集和資料表:
BigQuery 資料擁有者 (
roles/bigquery.dataOwner) -
執行 BigQuery 工作:
BigQuery 工作使用者 (
roles/bigquery.jobUser) -
建立連線:
BigQuery 連線管理員 (
roles/bigquery.connectionAdmin) -
將權限授予連線的服務帳戶:
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) -
建立可讀取及修改 Cloud Storage 物件的網址:
BigQuery ObjectRef 管理員 (
roles/bigquery.objectRefAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立資料集、資料表、模型和連線
在本節中,您將建立本教學課程中使用的資料集、連線、資料表和模型。
建立資料集
建立 BigQuery 資料集,內含您在本教學課程中建立的物件,方法如下:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」中展開專案,然後按一下「Datasets」。
在「資料集」頁面,按一下 「建立資料集」。
在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
cymbal_pets。選取「資料位置」的「美國」。
其餘設定請保留預設狀態,然後按一下「建立資料集」。
SQL
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');將
PROJECT_ID替換為您的專案 ID。按一下「執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
你會收到類似以下的確認訊息:The dataset
named cymbal_pets was created.
建立連線
建立Cloud 資源連線,並取得連線的服務帳戶。BigQuery 會使用連線存取 Cloud Storage 中的物件。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中,點選「Connections」。
在「Connections」(連線) 頁面中,按一下「Create connection」(建立連線)。
在「外部資料來源」頁面中,執行下列操作:
在「連線類型」中,選擇「Vertex AI 遠端模型、遠端函式、Lakehouse 和 Spanner (Cloud 資源)」。
在「連線 ID」欄位中輸入
cymbal_conn。其他設定維持不變,然後點按「建立連線」。
在「Connections」(連線) 頁面中,按一下
cymbal_conn。在「連線資訊」窗格,複製「服務帳戶 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 與管理」頁面。
按一下 「授予存取權」。
在「授予存取權」對話方塊中,執行下列操作:
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「選取角色」欄位中,選擇或搜尋「Agent Platform 使用者」。
按一下 [儲存]。
建立 products 資料表
如要建立包含 Cymbal 寵物產品資訊的標準資料表,請按照下列步驟從 Cloud Storage 載入資料:
前往 Google Cloud 控制台的「Studio」頁面。
如要建立
products表格,請選擇下列任一選項:SQL
將這個指令貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
建立 product_images 資料表
如要建立包含 Cymbal 寵物產品圖片的物件表格 (product_images),請選取下列其中一個選項:
SQL
將這個指令貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
可建立模型
本教學課程中的 SQL 指令會說明如何呼叫不需要建立模型的 AI 函式。如果您是按照 BigQuery DataFrames 指示操作,請選取該選項來建立遠端模型,代表 Gemini 模型和多模態嵌入模型。
SQL
你可以略過這個步驟。
BigQuery DataFrames
在試用這個範例之前,請先按照「使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程」中的 BigQuery DataFrames 設定操作說明進行操作。詳情請參閱 BigQuery DataFrames 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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
將這個指令貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要查看
image欄資料,請選擇下列任一選項:SQL
將這個指令貼到查詢編輯器,然後點選「執行」:
SELECT product_name, image FROM cymbal_pets.products_mm
BigQuery DataFrames
在試用這個範例之前,請先按照「使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程」中的 BigQuery DataFrames 設定操作說明進行操作。詳情請參閱 BigQuery DataFrames 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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 函式,為寵物商店產品產生下列資料:
- 在
products_mm表格中新增image_description欄。 - 填入
products_mm資料表的animal_type、search_keywords和subcategory欄。 - 執行查詢,傳回每個產品品牌的說明,以及該品牌的產品數量。系統會分析該品牌所有產品的產品資訊 (包括產品圖片),然後生成品牌說明。
使用 AI.GENERATE 函式時,您可以選擇根據指定的自訂結構定義,生成文字或結構化輸出。這項函式會向 Gemini 模型傳送要求,並傳回包含生成資料、完整模型回應和狀態的結構體。
如要產生產品資料,請按照下列步驟操作:
如要使用
AI.GENERATE生成產品資訊,請選擇下列任一選項:SQL
如要建立及填入
image_description欄,請將下列內容貼到查詢編輯器,然後按一下 「執行」:-- 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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要查看
image_description欄的內容,請將下列內容貼到查詢編輯器,然後按一下 「執行」: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
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要查看產生的資料,請選擇下列其中一個選項:
SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要執行向量搜尋,傳回與指定輸入圖片相似的產品圖片,請選擇下列任一選項:
SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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表格,其中包含Crittercuisine Pro 5000產品手冊的 PDF 檔案,以及該手冊每一頁的 PDF 檔案。建立表格,將手冊對應至各個區塊。完整手冊和手冊頁面分別儲存在
ObjectRef欄中。一起分析
ObjectRef值陣列,傳回單一生成值。分別分析
ObjectRef值陣列,並為每個陣列值傳回產生的值。
如要使用 ObjectRef 值處理排序的多模態資料,請按照下列步驟操作:
如要建立
product_manuals表格,請選擇下列任一選項:SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要將 PDF 資料寫入
map_manual_to_chunks表格,請選擇下列任一選項:SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
-- 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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
如要在「
map_manual_to_chunks」表格中查看 PDF 資料,請選擇下列其中一個選項:SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
SELECT * FROM cymbal_pets.map_manual_to_chunks;
BigQuery DataFrames
在試用這個範例之前,請先按照「使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程」中的 BigQuery DataFrames 設定操作說明進行操作。詳情請參閱 BigQuery DataFrames 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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}} | | | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+ | | | | | ... | ... | ... | ... | +-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+如要根據
ObjectRef值陣列的分析結果,從 Gemini 模型生成單一回覆,請選擇下列其中一個選項:SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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. | +---------------------------------------------------------------------------+
如要根據陣列的
ObjectRef值分析結果,從 Gemini 模型生成多個回覆,請選擇下列其中一個選項:SQL
將下列內容貼到查詢編輯器,然後點選「執行」:
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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 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」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
如要保留專案,但刪除本教學課程中使用的資源,請按照下列步驟操作:
前往「BigQuery」頁面
在左側窗格中展開專案,然後按一下「資料集」。
針對
bqml_tutorial資料集,依序點按 「Open actions」(開啟動作) >「Delete」(刪除)。在「Delete dataset」(刪除資料集) 對話方塊中,按一下「Delete」(刪除) 確認。
按一下左側窗格中的「連線」。
如要刪除
cymbal_conn連結,請依序點選 「開啟動作」> 刪除。在「刪除連結」對話方塊中輸入
delete,然後按一下「刪除」確認。
後續步驟
- 如要進一步瞭解如何處理多模態資料,請參閱「在 BigQuery 中分析多模態資料」。
- 如要進一步瞭解
ObjectRef值,請參閱「使用 ObjectRef 值」。