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