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