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

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

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

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

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

始める前に

まだ行っていない場合は、Vertex AI に対する認証を行います。

Select the tab for how you plan to use the samples on this page:

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

Python

ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

詳細については Set up authentication for a local development environment をご覧ください。

REST

このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

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

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 パラメータに指定できます。

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

最適化されたオンライン サービング用に作成されたオンライン ショップ内の特徴ビューにベクトル取得を構成するには、FeatureView.index_config パラメータを使用します。embedding 列を追加してエンベディングをサポートするように BigQuery データソースを準備または更新する方法については、データソース準備ガイドラインをご覧ください。

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

Vertex AI Feature Store でエンベディングを使用して近似最近傍を検索する方法については、エンベディングを使用した検索をご覧ください。

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

特徴グループと特徴を使用して登録された特徴データに基づいて特徴ビューを作成できます。複数の 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 https://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 \
"https://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 "https://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 https://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 \
"https://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 "https://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 データソースを直接関連付けて、エンベディングをサポートしない特徴ビューを作成します。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_view_from_bq_source(
    project: str,
    location: str,
    existing_feature_online_store_id: str,
    feature_view_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
):
    aiplatform.init(project=project, location=location)
    fos = feature_store.FeatureOnlineStore(existing_feature_online_store_id)
    fv = fos.create_feature_view(
        name=feature_view_id,
        source=feature_store.utils.FeatureViewBigQuerySource(
            uri=bq_table_uri, entity_id_columns=entity_id_columns
        ),
    )
    return fv
  • project: プロジェクト ID。
  • location: 特徴ビューを作成するリージョン(us-central1 など)。
  • existing_feature_online_store_id: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • feature_view_id: 作成する新しい特徴ビュー インスタンスの名前。
  • bq_table_uri: BigQuery ソーステーブルまたはビューの URI。
  • entity_id_columns: エンティティ ID を含む列の名前。1 つまたは複数の列を指定できます。
    • エンティティ ID 列を 1 つだけ指定するには、列名を次の形式で指定します。
      "entity_id_column_name"
    • 複数のエンティティ ID 列を指定するには、列名を次の形式で指定します。
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]

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 をご覧ください。

HTTP メソッドと URL:

POST https://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_COLUMNS"
  },
  "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 \
"https://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 "https://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 データソースを直接関連付けて、エンベディングをサポートする特徴ビューを作成します。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_view_from_bq_source_with_embedding_management(
    project: str,
    location: str,
    existing_feature_online_store_id: str,
    feature_view_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
    embedding_column: str,
    embedding_dimensions: int,
):
    aiplatform.init(project=project, location=location)

    fos = feature_store.FeatureOnlineStore(existing_feature_online_store_id)

    bigquery_source = feature_store.utils.FeatureViewBigQuerySource(
        uri=bq_table_uri,
        entity_id_columns=entity_id_columns,
    )
    index_config = feature_store.utils.IndexConfig(
        embedding_column=embedding_column,
        dimensions=embedding_dimensions,
        algorithm_config=feature_store.utils.TreeAhConfig(),
    )
    fv = fos.create_feature_view(
        name=feature_view_id,
        source=bigquery_source,
        index_config=index_config,
    )
    return fv
  • project: プロジェクト ID。
  • location: 特徴ビューを作成するリージョン(us-central1 など)。
  • existing_feature_online_store_id: 特徴ビューを作成するオンライン ショップ インスタンスの名前。
  • feature_view_id: 作成する新しい特徴ビュー インスタンスの名前。
  • bq_table_uri: BigQuery ソーステーブルまたはビューの URI。
  • entity_id_columns: エンティティ ID を含む列の名前。1 つまたは複数の列を指定できます。
    • エンティティ ID 列を 1 つだけ指定するには、列名を次の形式で指定します。
      "entity_id_column_name"
    • 複数のエンティティ ID 列を指定するには、列名を次の形式で指定します。
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • embedding_column: ベクトル検索用のインデックスを作成するソースデータを含む列の名前。これは、特徴ビューでエンベディングを管理する場合にのみ必要です。
  • embedding_dimensions: 省略可。エンベディング列内のエンベディングのサイズ。ディメンション数で表します。

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 をご覧ください。
  • EMBEDDING_COLUMN: ベクトル検索用のインデックスを作成するソースデータを含む列の名前。これは、特徴ビューでエンベディングを管理する場合にのみ必要です。
  • FILTER_COLUMN_1FILTER_COLUMN_2: 省略可。ベクトル検索の結果のフィルタリングに使用する列の名前。
  • CROWDING_COLUMN: 省略可。クラウディング属性を含む列の名前。
  • EMBEDDING_DIMENSION: 省略可。エンベディング列内のエンベディングのサイズ。ディメンション数で表します。

HTTP メソッドと URL:

POST https://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_COLUMNS"
  },
  "sync_config": {
    "cron": "CRON"
  },
  "index_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 \
"https://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 "https://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 リソースを作成するには、FeatureView.index_config パラメータを指定して 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 https://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",
  "index_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 \
"https://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 "https://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"
    }
  }
}

次のステップ