構造化データ、構造化データを含むウェブサイト データ、メタデータを含むその他の非構造化データなど、スキーマをサポートするデータを含むデータについて、スキーマを更新できます。
スキーマは、 Google Cloud コンソールまたは schemas.patch API メソッドを使用して更新できます。ウェブサイトのスキーマの更新は、REST API を介してのみサポートされています。
スキーマを更新するには、新しいフィールドを追加したり、フィールドのインデックス登録可能、検索可能、取得可能のアノテーションを変更したり、フィールドをキー プロパティ(title、uri、description など)としてマークしたりします。
スキーマを更新する
スキーマは、 Google Cloud コンソールまたは API を使用して更新できます。
コンソール
Google Cloud コンソールでスキーマを更新する手順は次のとおりです。
- 要件と制限事項のセクションを確認して、スキーマの更新が有効であることを確認します。 
- フィールド アノテーションを更新する場合(フィールドをインデックス登録可能、取得可能、動的ファセット可能、検索可能、補完可能として設定する場合)、フィールド設定を構成するで、各アノテーション タイプの制限と要件を確認してください。 
- データ取り込みが完了していることを確認します。それ以外の場合、スキーマはまだ編集に利用できない可能性があります。 
- Google Cloud コンソールで、[AI Applications] ページに移動します。 
- ナビゲーション メニューで [データストア] をクリックします。 
- [名前] 列で、更新するスキーマを含むデータストアをクリックします。 
- [スキーマ] タブをクリックして、データのスキーマを表示します。 - フィールドを初めて編集する場合は、このタブが空になっていることがあります。 
- [編集] ボタンをクリックします。 
- スキーマを更新します。 - キー プロパティをマッピングする: スキーマの [キー プロパティ] 列で、フィールドをマッピングするキー プロパティを選択します。たとえば、 - detailsというフィールドに常にドキュメントの説明が含まれている場合は、そのフィールドをキー プロパティ [Description] にマッピングします。
- 次元数を更新する(詳細設定): Vertex AI Search でカスタム ベクトル エンベディングを使用している場合は、この設定を更新できます。上級: カスタム エンベディングを使用するをご覧ください。 
- フィールドの注釈を更新する: フィールドの注釈を更新するには、フィールドの注釈設定を選択または選択解除します。使用可能なアノテーションは、[取得可能]、[インデックス登録可能]、[動的ファセット可能]、[検索可能]、[補完可能] です。一部のフィールド設定には制限があります。各アノテーション タイプの説明と要件については、フィールド設定を構成するをご覧ください。 
- 新しいフィールドを追加する: 新しいフィールドを含む新しいドキュメントをインポートする前に、スキーマに新しいフィールドを追加すると、インポート後に Vertex AI Search がデータを再インデックス登録する時間を短縮できます。 - [新しいフィールドを追加] をクリックして、セクションを開きます。 
- add_box [ノードを追加] をクリックして、新しいフィールドの設定を指定します。 - 配列を示すには、[Array] を [Yes] に設定します。たとえば、文字列の配列を追加するには、[タイプ] を - string、[配列] を- Yesに設定します。- ウェブサイト データストア インデックスの場合、追加するすべてのフィールドはデフォルトで配列になります。 
 
 
- [保存] をクリックして、スキーマの変更を適用します。 - スキーマを変更すると、インデックスが再作成されます。大規模なデータストアの場合、インデックスの再作成に数時間かかることがあります。 
REST
API を使用してスキーマを更新する手順は次のとおりです。
- 要件と制限事項と制限事項の例(REST のみ)のセクションを確認して、スキーマの変更が有効であることを確認します。 - ウェブサイトまたはメタデータを含む非構造化データを含むデータストアのスキーマを更新するには、ステップ 5 にスキップして - schema.patchメソッドを呼び出します。
- フィールド アノテーションを更新する場合(フィールドをインデックス登録可能、取得可能、動的ファセット可能、検索可能として設定する場合)、フィールド設定を構成するで、各アノテーション タイプの制限と要件を確認してください。 
- 自動検出されたスキーマを編集する場合は、データ取り込みが完了していることを確認してください。それ以外の場合、スキーマはまだ編集に利用できない可能性があります。 
- データストア ID を確認します。データストア ID がすでにある場合は、次のステップに進みます。 - Google Cloud コンソールで、[AI アプリケーション] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。 
- データストアの名前をクリックします。 
- データストアの [データ] ページで、データストア 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: 実際の Google Cloud プロジェクト ID。
- DATA_STORE_ID: Vertex AI Search データストアの 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#
詳細については、Vertex AI Search C# API のリファレンス ドキュメントをご覧ください。
Vertex AI Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Vertex AI Search Go API のリファレンス ドキュメントをご覧ください。
Vertex AI Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Vertex AI Search Java API のリファレンス ドキュメントをご覧ください。
Vertex AI Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Vertex AI Search Python API のリファレンス ドキュメントをご覧ください。
Vertex AI Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Vertex AI Search Ruby API のリファレンス ドキュメントをご覧ください。
Vertex AI Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
要件と制限事項
スキーマを更新するときは、新しいスキーマが更新対象のスキーマと下位互換性があることを確認してください。下位互換性のない新しいスキーマでスキーマを更新するには、データストア内のすべてのドキュメントを削除し、スキーマを削除して、新しいスキーマを作成する必要があります。
スキーマを更新すると、すべてのドキュメントのインデックスが再作成されます。これには時間がかかり、追加費用が発生する可能性があります。
- 時間。 大規模なデータストアのインデックスの再作成には、数時間から数日かかることがあります。 
- コスト。パーサーによっては、再インデックス登録に費用が発生する場合があります。たとえば、OCR パーサーまたはレイアウト パーサーを使用するデータストアのインデックスを再作成すると、両方で費用が発生します。詳細については、Document AI の機能の料金をご覧ください。 
スキーマの更新では、次の機能はサポートされていません。
- フィールドタイプの変更。 スキーマの更新では、フィールドのタイプを変更することはできません。たとえば、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" } } } }