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