特徴ビュー インスタンスを作成する

既存のオンライン ショップ インスタンス内に特徴ビューを作成できます。特徴ビューの作成中に、次の方法で特徴と特徴ビューを関連付けることができます。

  • 特徴レジストリから特徴グループと特徴を追加する: 特徴レジストリにある特徴グループと特徴に特徴ビューを関連付けます。特徴グループは、BigQuery データソースのロケーションを示しています。特徴グループ内の特徴は、そのデータソース内の特定の特徴列を指しています。1 つの特徴ビューを複数の特徴グループに関連付けることができます。

  • BigQuery ソースから特徴を追加する: BigQuery データソース(BigQuery テーブルやビューなど)を直接関連付けて、エンティティ ID 列を指定します。

特徴ビューを作成すると、Vertex AI Feature Store は BigQuery データソースから最新の特徴値を同期します。クエリ パラメータ run_sync_immediately=true を設定すると、特徴ビューの作成時に Vertex AI Feature Store によって特徴値が同期されます。それ以外の場合は、特徴ビューに指定された同期スケジュールに従って特徴値が同期されます。

特徴ビューで特徴データを同期する

Vertex AI Feature Store は、オンライン ストアに保存されている特徴値を BigQuery から定期的に更新(同期)します。特徴ビューを作成するときに FeatureView.sync_config パラメータを使用すると、データ同期のスケジュールまたは頻度を指定できます。

特徴ビューのデータ同期を手動でトリガーすることもできます。特徴ビューのデータを手動で同期する方法については、特徴データをオンライン ストアに同期するをご覧ください。

特徴ビューで同時にアクティブにできるデータ同期オペレーションは 1 つのみです。特徴ビューのデータ同期が進行中の場合、同期が完了するまで、その特徴ビューにスケジュールされたデータ同期はすべてスキップされます。

同期中の費用を最適化する

データ同期オペレーションで、BigQuery リソースの使用料金が発生する場合があります。データ同期中にかかる費用を最適化し、パフォーマンスを向上させるには、次のガイドラインに従ってください。

  • BigQuery ソースで想定される変更頻度を上回らないように同期スケジュールの頻度を構成します。

  • BigQuery の特徴データソースのサイズを最適化します。特徴ビューを作成するときに、オンライン サービングに必要なデータのみを含めます。

  • BigQuery では複雑な集計を実行しないようにします。テーブルまたはビューに SELECT * クエリを実行して、データ処理の量と所要時間を見積もります。

  • オンライン ストアのスケーリング オプションを設定するときに、データの同期中に発生する負荷に対応できる十分な値を max_node_count に設定します。

  • 同じオンライン ショップ内の異なる特徴ビューでタイミングが重ならないように同期をスケジュールします。

  • BigQuery テーブルにかなり古いデータが含まれている場合は、タイムスタンプを使用してテーブルをパーティショニングし、特徴データを取得する期間を指定します。これにより、同期中に古い特徴データの取得を最小限に抑えることができます。

  • データ同期中に Bigtable の使用率が増加します。オンライン ストア内で Bigtable オンライン サービング用に作成された特徴ビューの場合は、最適なパフォーマンスを得るために、同期ジョブをオフピーク時にスケジュールします。

特徴ビューにサービス アカウントを構成する

特徴ビューは、同期中にサービス アカウントを使用して BigQuery のソースデータにアクセスします。Vertex AI Feature Store は、このサービス アカウントに BigQuery データ閲覧者の Identity and Access Management(IAM)ロールを割り当てます。

デフォルトでは、特徴ビューはプロジェクトに構成されたサービス アカウントを使用します。この構成では、プロジェクトで特徴ビューの作成権限を持つユーザーは BigQuery の特徴データにアクセスできます。

また、独自のサービス アカウントを使用するように機能ビューを構成することもできます。Vertex AI Feature Store は特徴ビュー専用のサービス アカウントを設定します。この構成では、BigQuery の特徴データへのアクセスを制限したり、追加のユーザーにアクセス権を付与できます。サービス アカウントの構成は、FeatureView.service_agent_type パラメータに指定できます。

特徴ビューにベクトル取得を構成する

関連するデータソースに embedding 列が含まれ、オンライン ストアがエンベディング管理をサポートするように構成されているかどうかに基づいて、作成された特徴ビューのベクトル取得を構成できます。ベクトル取得の構成を指定するには、FeatureView.vector_search_config パラメータを使用します。

ベクトル取得を構成し、エンベディングを管理できるのは、特徴ビューが特徴レジストリの特徴グループと特徴からではなく、BigQuery ソース URI を指定して作成された場合のみです。

embedding 列を追加してエンベディングをサポートするように BigQuery データソースを設定する方法については、データソースの準備のガイドラインをご覧ください。

特徴グループから特徴ビューを作成する

特徴グループと特徴を使用して登録された特徴データに基づいて特徴ビューを作成できます。複数の BigQuery データソースを同じ特徴ビューに関連付けるには、複数の特徴グループを指定します。

特徴グループと特徴を指定して特徴ビューを作成する場合:

  • データソースに feature_timestamp 列が必要です。また、データソースには過去のデータが含まれていても構いません。

  • Vertex AI Feature Store は、特徴のタイムスタンプに基づいて最新の特徴値のみを提供します。

  • 特徴ビューのエンベディング管理は構成できません。

デフォルトのサービス アカウント構成で特徴ビューを作成する

次のサンプルでは、サービス アカウントの構成を指定せずに複数の特徴グループを関連付けて特徴ビューを作成します。

REST

FeatureView リソースを作成するには、featureViews.create メソッドを使用して POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 特徴ビューを作成するリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • FEATUREVIEW_NAME: 作成する新しい特徴ビュー インスタンスの名前。
  • FEATUREGROUP_NAME_AFEATUREGROUP_NAME_B: 特徴ビューに特徴を追加する特徴グループの名前。
  • FEATURE_ID_A1FEATURE_ID_A2: 特徴ビューに追加する特徴グループ FEATUREGROUP_NAME_A の特徴 ID。
  • FEATURE_ID_B1FEATURE_ID_B2: 特徴ビューに追加する特徴グループ FEATUREGROUP_NAME_B の特徴 ID。
  • CRON: データを特徴ビューに同期する頻度を表す cron スケジュール式。詳細については、cron をご覧ください。

HTTP メソッドと URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

リクエストの本文(JSON):

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    "cron": "CRON"
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

サービス アカウントの構成を指定して特徴ビューを作成する

次のサンプルでは、サービス アカウント構成を指定して特徴グループから特徴ビューを作成します。

REST

FeatureView リソースを作成するには、featureViews.create メソッドを使用して POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 特徴ビューを作成するリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • FEATUREVIEW_NAME: 作成する新しい特徴ビュー インスタンスの名前。
  • FEATUREGROUP_NAME_AFEATUREGROUP_NAME_B: 特徴ビューに特徴を追加する特徴グループの名前。
  • FEATURE_ID_A1FEATURE_ID_A2: 特徴ビューに追加する特徴グループ FEATUREGROUP_NAME_A の特徴 ID。
  • FEATURE_ID_B1FEATURE_ID_B2: 特徴ビューに追加する特徴グループ FEATUREGROUP_NAME_B の特徴 ID。
  • CRON: データを特徴ビューに同期する頻度を表す cron スケジュール式。詳細については、cron をご覧ください。
  • SERVICE_AGENT_TYPE:(省略可)特徴ビューのサービス アカウント構成。サポートされているサービス エージェントのタイプは次のとおりです。
    • SERVICE_AGENT_TYPE_PROJECT: 特徴ビューにプロジェクト レベルのサービス アカウントを使用します。これがデフォルトの構成です。
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: 特徴ビュー専用のサービス アカウントを設定して使用します。

HTTP メソッドと URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

リクエストの本文(JSON):

{
  "feature_registry_source": {
    "feature_groups": [
      {
        "feature_group_id": "FEATUREGROUP_NAME_A",
        "feature_ids": [ "FEATURE_ID_A1", "FEATURE_ID_A2" ]
      },
      {
        "feature_group_id": "FEATUREGROUP_NAME_B",
        "feature_ids": [ "FEATURE_ID_B1", "FEATURE_ID_B2" ]
      }
    ]
  },
  "sync_config": {
    "cron": "CRON"
  },
  "service_agent_type": "SERVICE_AGENT_TYPE"
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

BigQuery ソースから特徴ビューを作成する

特徴グループと特徴を使用して、BigQuery データソースを登録せずに特徴をオンラインで提供する場合は、BigQuery データソースの URI を指定して特徴ビューを作成します。

データソースを指定して特徴ビューを作成する場合:

  • BigQuery テーブルまたはビューに feature_timestamp 列を含めることはできません。

  • データソースに過去の特徴値を含めることはできません。すべての行に一意のエンティティ ID が含まれている必要があります。

デフォルトのサービス アカウント構成を使用して、エンベディング管理なしで特徴ビューを作成する

次のサンプルを使用して、エンベディング管理をサポートせず、プロジェクトのデフォルトのサービス アカウントを使用し、BigQuery データソースに直接関連付けられている特徴ビューを作成します。

REST

FeatureView リソースを作成するには、featureViews.create メソッドを使用して POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 特徴ビューを作成するリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • FEATUREVIEW_NAME: 作成する新しい特徴ビューの名前。
  • PROJECT_NAME: 実際のプロジェクト名。
  • DATASET_NAME: BigQuery データセット名。
  • TABLE_NAME: BigQuery データセットのテーブルの名前。
  • ENTITY_ID_COLUMN: エンティティ ID を含む列の名前。
  • CRON: データを特徴ビューに同期する頻度を表す cron スケジュール式。詳細については、cron をご覧ください。

HTTP メソッドと URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

リクエストの本文(JSON):

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMN"
  },
  "sync_config": {
    "cron": "CRON"
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

サービス アカウント構成を指定して、エンベディング管理を使用して特徴ビューを作成する

次のサンプルを使用して、エンベディングをサポートし、サービス アカウントの構成を含み、BigQuery データソースに直接関連付けられた特徴ビューを作成します。

REST

エンベディングのサポートを使用して FeatureView リソースを作成するには、featureViews.create メソッドを使用してベクトル検索構成を指定し、POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 特徴ビューを作成するリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • FEATUREVIEW_NAME: 作成する新しい特徴ビューの名前。
  • PROJECT_NAME: 実際のプロジェクト名。
  • DATASET_NAME: BigQuery データセット名。
  • TABLE_NAME: BigQuery データセットのテーブルの名前。
  • ENTITY_ID_COLUMNS: エンティティ ID を含む列の名前。1 つまたは複数の列を指定できます。
    • エンティティ ID 列を 1 つだけ指定するには、列名を次の形式で指定します。
      "entity_id_column_name"
    • 複数のエンティティ ID 列を指定するには、列名を次の形式で指定します。
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • CRON: データを特徴ビューに同期する頻度を表す cron スケジュール式。詳細については、cron をご覧ください。
  • SERVICE_AGENT_TYPE: 特徴ビューのサービス アカウントの構成。サポートされているサービス エージェントのタイプは次のとおりです。
    • SERVICE_AGENT_TYPE_PROJECT: 特徴ビューにプロジェクト レベルのサービス アカウントを使用します。これがデフォルトの構成です。
    • SERVICE_AGENT_TYPE_FEATURE_VIEW: 特徴ビュー専用のサービス アカウントを設定して使用します。
  • EMBEDDING_COLUMN: ベクトル検索用のインデックスを作成するソースデータを含む列の名前。これは、特徴ビューでエンベディングを管理する場合にのみ必要です。
  • FILTER_COLUMN_1FILTER_COLUMN_2: 省略可。ベクトル検索の結果のフィルタリングに使用する列の名前。
  • CROWDING_COLUMN: 省略可。クラウディング属性を含む列の名前。
  • EMBEDDING_DIMENSION: 省略可。エンベディング列内のエンベディングのサイズ。ディメンション数で表します。

HTTP メソッドと URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME

リクエストの本文(JSON):

{
  "big_query_source": {
    "uri": "bq://PROJECT_NAME.DATASET_NAME.TABLE_NAME",
    "entity_id_columns": "ENTITY_ID_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "service_agent_type": "SERVICE_AGENT_TYPE",
  "vector_search_config": {
    "embedding_column": "EMBEDDING_COLUMN",
    "filter_columns": ["FILTER_COLUMN_1", "FILTER_COLUMN_2"],
    "crowding_column": "CROWDING_COLUMN",
    "embedding_dimension": EMBEDDING_DIMENSION
    "tree_ah_config": {}
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews?feature_view_id=FEATUREVIEW_NAME" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-15T02:11:29.458820Z",
      "updateTime": "2023-09-15T02:11:29.458820Z"
    }
  }
}

次のステップ