本頁面提供媒體相關文件和資料存放區的資訊。如果您使用媒體建議或媒體搜尋,請先查看本頁面上的文件和資料儲存庫結構定義需求,再上傳資料。
總覽
文件是指您上傳至 AI 應用程式資料儲存庫的任何項目。就媒體而言,文件通常包含媒體內容的中繼資料資訊,例如影片、新聞報導、音樂檔案或 Podcast。API 中的 Document
物件會擷取這項中繼資料資訊。
資料儲存庫包含您上傳的文件集合。建立資料儲存庫時,請指定儲存庫包含媒體文件。媒體資料儲存庫只能附加至媒體應用程式,不能附加至其他應用程式類型,例如自訂搜尋和建議。資料儲存庫在 API 中會以 DataStore
資源表示。
上傳資料的品質會直接影響媒體應用程式提供的結果品質。一般來說,提供的資訊越準確具體,結果品質就越高。
上傳至資料存放區的資料必須採用特定 JSON 結構定義格式。以該結構定義排列的資料必須位於 BigQuery 資料表、Cloud Storage 中的檔案或一組檔案,或是可使用 Google Cloud 控制台直接上傳的 JSON 物件。
Google 預先定義的結構定義與自訂結構定義
媒體資料結構定義有兩種選項:
Google 預先定義的結構定義。如果尚未設計媒體資料的結構定義,建議使用 Google 預先定義的結構定義。
您自有的結構定義。如果資料已採用結構定義格式,則可使用自己的結構定義。詳情請參閱下方的「自訂架構」。
無論選擇哪種方式,您都可以在初始資料匯入後,將欄位新增至結構定義。不過,使用 Google 預先定義的結構時,初始匯入的資料欄位名稱和類型必須與「文件欄位」表格中的名稱和類型完全一致。
主要屬性
屬性可用於訓練搜尋和建議模型。屬性欄位代表結構定義中的所有欄位。
重要屬性是 Google 結構定義中一組固定的特殊屬性。主要屬性會識別重要資訊,用於瞭解資料的語意。
如果使用自訂結構定義,請務必盡可能將欄位對應至重要屬性。匯入資料後,您可以在 Google Cloud 控制台中進行對應;請參閱「建立媒體資料儲存庫」。
Google 預先定義的 Document
JSON 結構定義
使用媒體時,文件可以採用 Google 預先定義的媒體 JSON 結構定義。
上傳文件時,可使用 JSON 或 Struct 資料表示法。請確認文件 JSON 或 Struct 符合下列 JSON 結構定義。JSON 結構定義使用 JSON 結構定義 2020-12 進行驗證。如要進一步瞭解 JSON 結構定義,請參閱 json-schema.org 的 JSON 結構定義規格說明文件。
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", }, "description": { "type": "string", }, "media_type": { "type": "string", }, "language_code": { "type": "string", }, "categories": { "type": "array", "items": { "type": "string", } }, "uri": { "type": "string", }, "images": { "type": "array", "items": { "type": "object", "properties": { "uri": { "type": "string", }, "name": { "type": "string", } }, } }, "in_languages": { "type": "array", "items": { "type": "string", } }, "country_of_origin": { "type": "string", }, "transcript": { "type": "string", }, "content_index": { "type": "integer", }, "persons": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", }, "role": { "type": "string", }, "custom_role": { "type": "string", }, "rank": { "type": "integer", }, "uri": { "type": "string", } }, "required": ["name", "role"], } }, "organizations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", }, "role": { "type": "string", }, "custom_role": { "type": "string", }, "rank": { "type": "integer", }, "uri": { "type": "string", } }, "required": ["name", "role"], } }, "hash_tags": { "type": "array", "items": { "type": "string", } }, "filter_tags": { "type": "array", "items": { "type": "string", } }, "duration": { "type": "string", }, "content_rating": { "type": "array", "items": { "type": "string", } }, "aggregate_ratings": { "type": "array", "items": { "type": "object", "properties": { "rating_source": { "type": "string", }, "rating_score": { "type": "number", }, "rating_count": { "type": "integer", } }, "required": ["rating_source"], } }, "available_time": { "type": "datetime", }, "expire_time": { "type": "datetime", }, "live_event_start_time": { "type": "datetime", }, "live_event_end_time": { "type": "datetime", }, "production_year": { "type": "integer", } }, "required": ["title", "categories", "uri", "available_time"], }
JSON Document
物件範例
以下範例顯示 JSON Document
物件的範例。
{ "title": "Test document title", "description": "Test document description", "media_type": "sports-game", "in_languages": [ "en-US" ], "language_code": "en-US", "categories": [ "sports > clip", "sports > highlight" ], "uri": "http://www.example.com", "images": [ { "uri": "http://example.com/img1", "name": "image_1" } ], "country_of_origin": "US", "content_index": 0, "transcript": "Test document transcript", "persons": [ { "name": "sports person", "role": "player", "rank": 0, "uri": "http://example.com/person" }, ], "organizations": [ { "name": "sports team", "role": "team", "rank": 0, "uri": "http://example.com/team" }, ], "hash_tags": [ "tag1" ], "filter_tags": [ "filter_tag" ], "duration": "100s", "production_year": 1900, "content_rating": [ "PG-13" ], "aggregate_ratings": [ { "rating_source": "imdb", "rating_score": 4.5, "rating_count": 1250 } ], "available_time": "2022-08-26T23:00:17Z" }
文件欄位
本節列出為資料存放區建立文件時提供的欄位值。這些值應與內部文件資料庫中使用的值相符,並準確反映所代表的項目。
Document
個物件欄位
下列欄位是 Document
物件的頂層欄位。另請參閱Document
參考頁面上的這些欄位。
欄位名稱 | 附註 |
---|---|
name
|
文件的完整專屬資源名稱。除了 create 和 import 以外,所有 Document 方法都必須使用這項屬性。匯入時,系統會自動產生名稱,不需要手動提供。
|
id
|
內部資料庫使用的文件 ID。ID 欄位在整個資料存放區中不得重複。記錄使用者事件時會使用相同的值,recommend 和 search 方法也會傳回這個值。
|
schemaId
|
這是必要旗標,位於相同資料存放區的結構定義 ID。 應設為「default_schema」,這是建立預設資料存放區時自動建立的項目。 |
parentDocumentId
|
父項文件的 ID。對於頂層 (根) 文件,parent_document_id 可以是空白或指向自身。如果是子項文件,parent_document_id 應指向有效的根文件。 |
資源屬性欄位
下列欄位是使用媒體的預先定義 JSON 結構定義格式定義。
如要進一步瞭解 JSON 屬性,請參閱 json-schema.org 的「瞭解 JSON 結構定義」說明文件,瞭解屬性。
下表定義了扁平欄位
欄位名稱 | 附註 |
---|---|
title
|
字串 - 必填 資料庫中的文件標題。採用 UTF-8 編碼的字串。最多 1000 個半形字元。 |
categories
|
字串 - 必填 文件類別。如要支援屬於多個平行類別的文件,請重複使用這個屬性。使用完整類別路徑,獲得更高品質的結果。
如要表示類別的完整路徑,請使用 例如:
文件最多可包含 250 個類別。每個類別都是 UTF-8 編碼的字串,長度上限為 5000 個字元。 |
uri
|
字串 - 必填 文件的 URI。長度上限為 5000 個半形字元。 |
description
|
字串 - 強烈建議使用 文件說明。長度上限為 5000 個半形字元。 |
media_type
|
字串 - 電影和節目必須填寫這個欄位 頂層類別。
支援的類型:
|
language_code
|
字串 - 選用 標題/說明和其他字串屬性的語言。請使用 BCP 47 定義的語言標記。 如果是文件建議,系統會忽略這個欄位,並自動偵測文字語言。文件可以包含不同語言的文字,但複製文件以提供多種語言的文字可能會導致效能降低。
這個欄位用於搜尋文件。如未設定,預設值為「en-US」。
例如: |
duration
|
字串 - 媒體推薦應用程式的必要欄位,業務目標為點閱率 (CVR) 或單次工作階段觀看時間。
媒體內容的長度。時間長度應編碼為字串。
編碼應與 |
available_time
|
日期時間 - 必填 內容可供使用者觀看的時間。這個欄位會指出內容對使用者的實用程度。時間戳記應符合 RFC 3339 標準。 例如:
|
expire_time
|
日期時間 - 選填 內容對使用者失效的時間。這個欄位會指出內容對使用者的實用程度。時間戳記應符合 RFC 3339 標準。 例如:
|
live_event_start_time
|
日期時間 - 選填 直播活動的開始時間。時間戳記應符合 RFC 3339 標準。 例如:
|
live_event_end_time
|
日期時間 - 選填 直播活動結束的時間。時間戳記應符合 RFC 3339 標準。 例如:
|
in_languages
|
字串 - 選用 - 重複 媒體內容的語言。使用 BCP 47 定義的語言標記。
例如: |
country_of_origin
|
字串 - 選用 媒體文件原產地。長度上限為 128 個半形字元。
例如: |
transcript
|
字串 - 選用 媒體文件的轉錄稿。 |
content_index
|
整數 - 選用 媒體文件的內容索引。內容索引欄位可用於排序文件。舉例來說,集數可做為內容索引。 內容索引應為非負整數。
例如: |
filter_tags
|
字串 - 選用 - 重複 篩選文件的標記。每個文件最多可有 250 個值,長度上限為 1000 個字元。否則,系統會傳回 INVALID_ARGUMENT 錯誤。
你可以使用這些標記篩選搜尋結果和推薦內容。如要篩選建議結果,請將標記做為
例如: |
hash_tags
|
字串 - 選用 - 重複 文件的 Hashtag。每個文件最多可有 100 個值,長度上限為 5,000 個字元。
例如: |
production_year
|
整數 - 選用 媒體的製作年份。 |
content_rating
|
字串 - 選用 - 重複 內容分級,用於內容諮詢系統,以及根據觀眾篩選內容。每個文件最多可有 100 個值,長度上限為 128 個字元。
您可以將這個標記做為
例如: |
下表定義了階層式欄位。
欄位名稱 | 附註 |
---|---|
images
|
物件 - 選用 - 重複 封裝圖片相關屬性的根鍵屬性。 |
images.uri
|
字串 - 選用 圖片的 URI。長度上限為 5,000 個半形字元。 |
images.name
|
字串 - 選用 圖片名稱。長度上限為 128 個半形字元。 |
persons
|
物件 - 選用 - 重複 封裝與人員相關屬性的根鍵屬性。
例如:
|
persons.name
|
字串 - 必填 人員姓名。 |
persons.role
|
字串 - 必填 媒體項目中人物的角色。 支援的值:導演、演員、球員、團隊、聯盟、編輯、作者、角色、貢獻者、創作者、編輯、出資者、製作人、供應商、發布者、贊助者、譯者、音樂提供者、頻道、自訂角色
如果 |
persons.custom_role
|
字串 - 選用
只有在 |
persons.rank
|
整數 - 選用
用於角色排名。舉例來說,如果是第一個演員,
|
persons.uri
|
字串 - 選用 人員的 URI。 |
organizations
|
物件 - 選用 - 重複
封裝
例如:
|
organizations.name
|
字串 - 必填 機構名稱。 |
organizations.role
|
字串 - 必填 機構在媒體項目中扮演的角色。 支援的值:導演、演員、球員、團隊、聯盟、編輯、作者、角色、貢獻者、創作者、編輯、出資者、製作人、供應商、發布者、贊助者、譯者、音樂提供者、頻道、自訂角色
如果 |
organizations.custom_role
|
字串 - 選用
只有在 |
organizations.rank
|
字串 - 選用
用於角色排名。舉例來說,第一個發布者:
|
organizations.uri
|
字串 - 選用 機構的 URI。 |
aggregate_ratings
|
物件 - 選用 - 重複
封裝 |
aggregate_ratings.rating_source
|
字串 - 必填
評分來源。例如 |
aggregate_ratings.rating_score
|
Double - required 匯總評分。評分應正規化至 [1, 5] 範圍。 |
aggregate_ratings.rating_count
|
整數 - 選用 個別評論數量。應為非負值。 |
文件層級
文件層級會決定資料儲存庫的階層結構。通常您應該會有單層或雙層資料儲存庫。系統僅支援兩層。
舉例來說,您可以建立單層資料存放區,其中每個文件都是個別項目。或者,您也可以選擇包含項目群組和個別項目的兩層資料存放區。
文件層級類型
文件層級類型分為兩種:
家長。父項文件是 Vertex AI Search
建議和搜尋結果中。父項可以是個別文件或類似文件群組。建議使用這個層級類型。
下層。子文件是群組上層文件的版本。 子女只能是個別文件。舉例來說,如果父項文件是「Example TV Show」,子項文件可以是「Episode 1」和「Episode 2」。這個層級類型難以設定及維護,因此不建議使用。
關於資料儲存庫階層
規劃資料存放區階層時,請決定資料存放區是否只應包含父項,或是父項和子項都應包含。請務必記得,建議和搜尋只會傳回父項文件。
舉例來說,如果資料存放區只包含父項,可能就適合有聲書,因為建議面板會傳回個別有聲書的選取項目。另一方面,如果將電視劇集上傳為僅限父項的資料存放區的父項文件,則同一個面板中可能會推薦多集順序錯誤的集數。
電視節目資料存放區可同時處理父項和子項,其中每個父項文件代表一個電視節目,子項文件則代表該電視節目的集數。這個雙層資料儲存庫可讓建議面板顯示一系列類似的電視節目。使用者可以點選特定節目,然後選取要觀看的集數。
由於父項/子項階層可能難以設定及維護,因此建議使用僅限父項的資料存放區。
舉例來說,電視節目資料存放區可以做為僅限父項的資料存放區,其中每個父項文件代表可推薦的電視節目,且不包含個別集數 (因此不會推薦)。
如果您判斷資料存放區需要同時包含父項和子項 (即群組和單一項目),但目前只有單一項目,則需要為群組建立父項。您至少需要提供家長的 id
、title
和 categories
。詳情請參閱「文件欄位」一節。
媒體的 BigQuery 結構定義
如果您打算從 BigQuery 匯入文件,請使用預先定義的 BigQuery 結構定義建立格式正確的 BigQuery 表格,並載入文件資料,然後匯入文件。
[ { "name": "id", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "schemaId", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "parentDocumentId", "mode": "NULLABLE", "type": "STRING", "fields": [] }, { "name": "jsonData", "mode": "NULLABLE", "type": "STRING", "fields": [] } ]
自訂結構定義
如果資料已採用結構定義格式,您可能決定不使用上述 Google 預先定義的結構定義。您可以改用自己的結構定義,並將結構定義中的欄位對應至媒體重要屬性。如要在建立資料媒體商店時對應結構定義,請使用Google Cloud 控制台。
如果您使用自己的結構定義,結構定義中必須有可對應至下列五項媒體重要屬性的欄位:
必要的重要屬性名稱 | 附註 |
---|---|
title
|
字串 - 必填 資料庫中的文件標題。採用 UTF-8 編碼的字串。最多 1000 個半形字元。 |
uri
|
字串 - 必填 文件的 URI。長度上限為 5000 個半形字元。 |
category
|
字串 - 必填 文件類別。如要支援屬於多個平行類別的文件,請重複使用這個屬性。使用完整類別路徑,獲得更高品質的結果。
如要表示類別的完整路徑,請使用 例如:
文件最多可包含 250 個類別。每個類別都是 UTF-8 編碼的字串,長度上限為 5000 個字元。 |
media_available_time
|
日期時間 - 必填 內容可供使用者觀看的時間。這個欄位會指出內容對使用者的實用程度。時間戳記應符合 RFC 3339 標準。 例如:
|
media_duration
|
字串 - 媒體推薦應用程式的必要欄位,業務目標為點閱率 (CVR) 或單次工作階段觀看時間。
媒體內容的長度。時間長度應編碼為字串。
編碼應與 如果業務目標是盡量提高轉換率 (CVR) 或每位訪客的觀看時間,這個欄位對媒體建議應用程式就非常重要。 |
此外,還有一些重要屬性並非必要,但為了取得品質結果,請盡可能將這些屬性對應至結構定義。
這些重要屬性如下:
金鑰屬性名稱 | 附註 |
---|---|
description
|
字串 - 強烈建議使用 文件說明。長度上限為 5000 個半形字元。 |
image
|
物件 - 選用 - 重複 封裝圖片相關屬性的根鍵屬性。 |
image_name
|
字串 - 選用 圖片名稱。長度上限為 128 個半形字元。 |
image_uri
|
字串 - 選用 圖片的 URI。長度上限為 5,000 個半形字元。 |
language-code
|
字串 - 選用 標題/說明和其他字串屬性的語言。請使用 BCP 47 定義的語言標記。 如果是文件建議,系統會忽略這個欄位,並自動偵測文字語言。文件可以包含不同語言的文字,但複製文件以提供多種語言的文字可能會導致效能降低。
這個欄位用於搜尋文件。如未設定,預設值為「en-US」。
例如: |
media_aggregated_rating
|
物件 - 選用 - 重複
封裝 |
media_aggregated_rating_count
|
整數 - 選用 個別評論數量。應為非負值。 |
media_aggregated_rating_score
|
Double - required 匯總評分。評分應正規化至 [1, 5] 範圍。 |
media_aggregated_rating_source
|
字串 - 必填
評分來源。例如 |
media_content_index
|
整數 - 選用 媒體文件的內容索引。內容索引欄位可用於排序文件。舉例來說,集數可做為內容索引。 內容索引應為非負整數。
例如: |
media_content_rating
|
字串 - 選用 - 重複 內容分級,用於內容諮詢系統,以及根據觀眾篩選內容。每個文件最多可有 100 個值,長度上限為 128 個字元。
您可以將這個標記做為
例如: |
media_country_of_origin
|
字串 - 選用 媒體文件原產地。長度上限為 128 個半形字元。
例如: |
media_expire_time
|
日期時間 - 選填 內容對使用者失效的時間。這個欄位會指出內容對使用者的實用程度。時間戳記應符合 RFC 3339 標準。 例如:
|
live_event_start_time
|
日期時間 - 選填 直播活動的開始時間。時間戳記應符合 RFC 3339 標準。 例如:
|
live_event_end_time
|
日期時間 - 選填 直播活動結束的時間。時間戳記應符合 RFC 3339 標準。 例如:
|
media_filter_tag
|
字串 - 選用 - 重複 篩選文件的標記。每個文件最多可有 250 個值,長度上限為 1000 個字元。否則,系統會傳回 INVALID_ARGUMENT 錯誤。
您可以將這個標記做為
例如: |
media_hash_tag
|
字串 - 選用 - 重複 文件的 Hashtag。每個文件最多可有 100 個值,長度上限為 5,000 個字元。
例如: |
media_in_language
|
字串 - 選用 - 重複 媒體內容的語言。使用 BCP 47 定義的語言標記。
例如: |
media_organization
|
物件 - 選用 - 重複
封裝
例如:
|
media_organization_custom_role
|
字串 - 選用
只有在 |
media_organization_name
|
字串 - 必填 機構名稱。 |
media_organization_rank
|
字串 - 選用
用於角色排名。舉例來說,如果是第一位發布者:
|
media_organization_role
|
字串 - 必填 機構在媒體項目中扮演的角色。 支援的值:導演、演員、球員、團隊、聯盟、編輯、作者、角色、貢獻者、創作者、編輯、出資者、製作人、供應商、發布者、贊助者、譯者、音樂提供者、頻道、自訂角色
如果 |
media_organization_uri
|
字串 - 選用 機構的 URI。 |
media_person
|
物件 - 選用 - 重複 封裝與人員相關屬性的根鍵屬性。
例如:
|
media_person_custom_role
|
字串 - 選用
只有在 |
media_person_name
|
字串 - 必填 人員姓名。 |
media_person_rank
|
整數 - 選用
用於角色排名。舉例來說,如果是第一個演員,
|
media_person_role
|
字串 - 必填 媒體項目中人物的角色。 支援的值:導演、演員、球員、團隊、聯盟、編輯、作者、角色、貢獻者、創作者、編輯、出資者、製作人、供應商、發布者、贊助者、譯者、音樂提供者、頻道、自訂角色
如果 |
media_person_uri
|
字串 - 選用 人員的 URI。 |
media_production_year
|
整數 - 選用 媒體的製作年份。 |
media_transcript
|
字串 - 選用 媒體文件的轉錄稿。 |
media_type
|
字串 - 電影和節目必須填寫這個欄位 頂層類別。
支援的類型:
|
如果您使用自己的結構定義,而非 Google 預先定義的結構定義,請參閱「提供或自動偵測結構定義」,瞭解如何格式化及匯入自己的結構定義。