你可以更新支援結構定義的結構化資料和含中繼資料的非結構化資料。
您可以在 Google Cloud 控制台中更新結構定義,或使用 schemas.patch
API 方法。
如要更新結構定義,請新增欄位、變更欄位的可建立索引、可供搜尋和可擷取註解,或是將欄位標示為主要屬性,例如 title
、uri
和 description
。
更新結構定義
您可以在 Google Cloud 控制台或使用 API 更新結構定義。
控制台
如要在 Google Cloud 控制台中更新結構定義,請按照下列步驟操作:
請參閱「需求條件和限制」一節,確認結構定義更新是否有效。
如要更新欄位註解 (將欄位設為可建立索引、可擷取、動態可切面、可搜尋或可完成),請參閱「設定欄位設定」,瞭解各註解類型的限制和規定。
確認您已完成資料匯入。否則可能還無法編輯結構定義。
前往 Google Cloud 控制台的「Gemini Enterprise」頁面。
點按導覽選單中的「Data Stores」(資料儲存庫)。
在「Name」(名稱) 欄中,按一下要更新架構的資料儲存庫。
按一下「結構定義」分頁標籤,查看資料的結構定義。
如果您是第一次編輯欄位,這個分頁可能不會顯示任何內容。
按一下 [Edit] (編輯) 按鈕。
更新結構定義:
對應主要屬性:在結構定義的「主要屬性」欄中,選取要對應欄位的主要屬性。舉例來說,如果名為
details
的欄位一律包含文件說明,請將該欄位對應至 Description 鍵屬性。更新維度數量 (進階):如果您搭配 Gemini Enterprise 使用自訂向量嵌入,可以更新這項設定。請參閱「進階:使用自訂嵌入」。
更新欄位註解:如要更新欄位的註解,請選取或取消選取欄位的註解設定。可用的註解包括「可擷取」、「可建立索引」、「可做為動態 facet」、「可供搜尋」和「可完成」。部分欄位設定有其限制。如要瞭解各註解類型的說明和規定,請參閱「設定欄位設定」。
新增欄位:在匯入含有這些欄位的新文件前,先將新欄位新增至結構定義,可縮短 Gemini Enterprise 在匯入後重新編製資料索引的時間。
按一下「新增欄位」展開該部分。
按一下「add_box」add_box「新增節點」,然後指定新欄位的設定。
如要指出陣列,請將「陣列」設為「是」。舉例來說,如要新增字串陣列,請將 type 設為
string
,並將 Array 設為Yes
。
按一下「儲存」,套用結構定義變更。
變更結構定義會觸發重新建立索引。以大型資料儲存庫來說,重新建立索引的作業可能需要數小時才能完成。
REST
如要使用 API 更新結構定義,請按照下列步驟操作:
請參閱「需求和限制」和「限制範例 (僅限 REST)」部分,確認結構定義變更有效。
如要更新含中繼資料的非結構化資料的資料儲存庫結構定義,請跳至步驟 5,呼叫
schema.patch
方法。如要更新欄位註解 (將欄位設為可建立索引、可擷取、動態可切面或可搜尋),請參閱「設定欄位設定」一文,瞭解各註解類型的限制和規定。
如要編輯自動偵測到的結構定義,請務必先完成資料擷取作業。否則,您可能還無法編輯結構定義。
找出資料儲存庫 ID。如果已有資料商店 ID,請跳到下一個步驟。
前往 Google Cloud 控制台的「Gemini Enterprise」頁面,然後點按導覽選單中的「Data Stores」(資料儲存庫)。
點按資料儲存庫的名稱。
在資料儲存庫的「資料」頁面中,取得資料儲存庫 ID。
使用 schemas.patch API 方法,以 JSON 物件形式提供新的 JSON 結構定義。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'
更改下列內容:
PROJECT_ID
:專案 ID。DATA_STORE_ID
:資料儲存庫的 ID。JSON_SCHEMA_OBJECT
:新的 JSON 結構定義,以 JSON 物件形式呈現。例如:{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
選用:按照「查看結構定義」一節的程序,檢查結構定義。
C#
在試用這個範例之前,請先按照C#使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Gemini Enterprise C# API 參考說明文件。
如要驗證 Gemini Enterprise,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
在試用這個範例之前,請先按照Go使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Gemini Enterprise Go API 參考說明文件。
如要驗證 Gemini Enterprise,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
在試用這個範例之前,請先按照Java使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Gemini Enterprise Java API 參考說明文件。
如要驗證 Gemini Enterprise,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Gemini Enterprise Python API 參考說明文件。
如要驗證 Gemini Enterprise,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
在試用這個範例之前,請先按照Ruby使用用戶端程式庫的 Gemini Enterprise 快速入門導覽課程中的操作說明進行設定。詳情請參閱 Gemini Enterprise Ruby API 參考說明文件。
如要驗證 Gemini Enterprise,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
需求條件和限制
更新結構定義時,請務必確認新結構定義與要更新的結構定義回溯相容。如要使用不回溯相容的新結構定義更新結構定義,您必須刪除資料儲存庫中的所有文件、刪除結構定義,然後建立新的結構定義。
更新結構定義會觸發所有文件的重新建立索引作業。 重新建立大型資料儲存庫的索引可能需要數小時或數天。
結構定義更新不支援下列項目:
- 變更欄位類型。結構定義更新不支援變更欄位類型。舉例來說,如果欄位已對應至
integer
,就無法變更為string
。 - 移除欄位。定義欄位後就無法移除,您可以繼續新增欄位,但無法移除現有欄位。
限制示例 (僅限 REST)
本節將提供有效和無效的結構化資料更新類型範例。這些範例使用下列 JSON 結構定義:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string",
"keyPropertyMapping": "description"
},
"categories": {
"type": "array",
"items": {
"type": "string",
"keyPropertyMapping": "category"
}
}
}
}
支援的更新範例
系統支援對範例結構定義進行下列更新。
新增欄位。在本例中,欄位
properties.uri
已新增至結構定義。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string", "keyPropertyMapping": "description" }, "uri": { // Added field. This is supported. "type": "string", "keyPropertyMapping": "uri" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }
為
title
、description
或uri
新增或移除重要屬性註解。在這個範例中,keyPropertyMapping
已新增至title
欄位。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" // Added "keyPropertyMapping". This is supported. }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }
無效的結構定義更新範例
系統不支援對範例結構定義進行下列更新。
變更欄位類型。在本例中,
title
欄位的類型已從字串變更為數字。系統不支援這項操作。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "number" // Changed from string. Not allowed. }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }
移除欄位。在本例中,
title
欄位已移除。 系統不支援這項操作。{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { // "title" is removed. Not allowed. "description": { "type": "string", "keyPropertyMapping": "description" }, "uri": { "type": "string", "keyPropertyMapping": "uri" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } } } }