オンライン ストアから特徴をサービングする

Vertex AI Feature Store を使用すると、オンライン ストア内の特徴ビューから特徴値をリアルタイムでオンライン サービングできます。たとえば、オンライン予測の特徴ビューから特徴値をサービングできます。この機能で特徴をオンラインでサービングする前に、特徴ビューを少なくとも 1 回同期する必要があります。

特徴ビューが特徴グループと特徴に基づいて定義されている場合、Vertex AI Feature Store は特定のエンティティ ID に対応する最新の特徴値を取得します。ID 列に同じ値を持つ複数のレコードがある場合、Vertex AI Feature Store は feature_timestamp 列に基づいて、null 以外の最新の特徴値を取得します。

特徴グループと特徴を関連付けずに特徴ビューが BigQuery データソースに直接関連付けられている場合、Vertex AI Feature Store はデータソースからすべての特徴値を取得します。この場合、データソース内のすべての行に一意の ID が設定されている必要があります。

オンライン ストアに構成されたオンライン サービングのタイプに応じて、次のいずれかの方法で特徴値をサービングできます。

始める前に

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

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

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 を使用して認証するをご覧ください。

Bigtable オンライン サービングを使用して特徴値を取得する

Bigtable オンライン サービングを使用すると、次のことができます。

単一エンティティの特徴値を取得する

次のサンプルでは、Bigtable オンライン サービングを使用して特定のエンティティ ID に基づいて特徴値を取得します。

REST

特定のエンティティ ID の最新の特徴値を FeatureView インスタンスから取得するには、featureViews.fetchFeatureValues メソッドを使用して POST リクエストを送信します。

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

  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。
  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。
  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。
  • FORMAT: 省略可。特徴値を取得する形式。次の形式がサポートされています。
    • KEY_VALUE
    • PROTO_STRUCT

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

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

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

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

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/FEATUREVIEW_NAME:fetchFeatureValues"

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/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

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

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

次のサンプルでは、Bigtable オンライン サービングを使用して特定のエンティティ ID に基づいて特徴値を取得します。

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"LOCATION_ID-aiplatform.googleapis.com"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    data_key=feature_online_store_service_pb2.FeatureViewDataKey(key="ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.FORMAT,
  )
)

次のように置き換えます。

  • LOCATION_ID: オンライン ショップがあるリージョン(us-central1 など)。

  • PROJECT_ID: プロジェクト ID。

  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。

  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。

  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。

  • FORMAT: 省略可。特徴値を取得する形式。サポートされている形式には、JSON KEY_VALUE ペアと proto の PROTO_STRUCT 形式があります。

一連のエンティティの特徴値を取得する

次のサンプルでは、Bigtable オンライン サービングを使用して、複数のエンティティ ID 列から ID のセットを指定して特徴値を取得します。

REST

特定のエンティティ ID の最新の特徴値を FeatureView インスタンスから取得するには、featureViews.streamingFetchFeatureValues メソッドを使用して POST リクエストを送信します。

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

  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。
  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。
  • ENTITY_ID_1ENTITY_ID_2ENTITY_ID_3ENTITY_ID_4: 最新の特徴値を提供する特徴レコードの ID 列の値のセット。Vertex AI Feature Store は、ID のネストされたリストごとに個別の読み取りオペレーションを実行するため、リクエストでエンティティ ID を複数のネストされたリストとしてグループ化すると、レイテンシを短縮できます。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:streamingFetchFeatureValues

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

[
  {
    data_keys: [{key: "ENTITY_ID_1"}, {key: "ENTITY_ID_2"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"
  },
  {
    data_keys: [{key: "ENTITY_ID_3"}, {key: "ENTITY_ID_4"}],
    feature_view: "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"
  }
]

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

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/FEATUREVIEW_NAME:streamingFetchFeatureValues"

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/FEATUREVIEW_NAME:streamingFetchFeatureValues" | Select-Object -Expand Content

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

[data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_04"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "eve"
  }
}
, data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_03"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631612115000000
      }
    }
  }
  data_key {
    key: "alice"
  }
}
data {
  key_values {
    features {
      name: "movies"
      value {
        string_value: "movie_02"
      }
    }
    features {
      name: "feature_timestamp"
      value {
        int64_value: 1631694494000000
      }
    }
  }
  data_key {
    key: "bob"
  }
}
]

Python

次のサンプルでは、Bigtable オンライン サービングを使用して複数のエンティティ ID 列から特徴値を取得します。

from google.cloud.aiplatform_v1beta1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1beta1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"LOCATION_ID-aiplatform.googleapis.com"}
)

feature_view = "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME"

keys_list=[
    ["ENTITY_ID_1","ENTITY_ID_2"],
    ["ENTITY_ID_3","ENTITY_ID_4"]
  ]

requests = []

for keys in keys_list:
  requests.append(
    feature_online_store_service_pb2.StreamingFetchFeatureValuesRequest(
      feature_view=feature_view,
      data_keys=[
          feature_online_store_service_pb2.FeatureViewDataKey(key=key)
          for key in keys
      ]    
    )
  )

responses = data_client.streaming_fetch_feature_values(
    requests=iter(requests)
)
responses = [response for response in responses]

次のように置き換えます。

  • LOCATION_ID: オンライン ショップがあるリージョン(us-central1 など)。

  • PROJECT_ID: プロジェクト ID。

  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。

  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。

  • ENTITY_ID_1ENTITY_ID_2ENTITY_ID_3ENTITY_ID_4: 最新の特徴値を提供するエンティティ ID。Vertex AI Feature Store は、ID のネストされたリストごとに個別の読み取りオペレーションを実行するため、リクエストでエンティティ ID を複数のネストされたリストとしてグループ化すると、レイテンシを短縮できます。

最適化されたオンライン サービングを使用してパブリック エンドポイントから特徴値を取得する

最適化されたオンライン サービングを使用してパブリック エンドポイントから特徴値を処理するようにオンライン ストア インスタンスを構成した場合、次の手順で、オンライン ストアの特徴ビューから特徴値を取得する必要があります。

  1. FeatureOnlineStore インスタンスのパブリック エンドポイント ドメイン名を取得します。

  2. パブリック エンドポイントのドメイン名を使用して、エンティティ ID から特徴値を取得します。

オンライン ストアのパブリック エンドポイント ドメイン名を取得する

パブリック エンドポイントを使用した最適化されたオンライン サービング用にオンライン ストア インスタンスを作成して構成すると、Vertex AI Feature Store はオンライン ストアにパブリック エンドポイント ドメイン名を生成します。オンライン ストアの特徴ビューから特徴値の提供を開始する前に、オンライン ストアの詳細からパブリック エンドポイントのドメイン名を取得する必要があります。

次のサンプルを使用して、オンライン ストア インスタンスの詳細を取得します。

REST

プロジェクト内の FeatureOnlineStore リソースの詳細を取得するには、featureOnlineStores.get メソッドを使用して GET リクエストを送信します。

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

  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: オンライン ストア インスタンスの名前。

HTTP メソッドと URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

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

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

次のコマンドを実行します。

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "publicEndpointDomainName": "PUBLIC_ENDPOINT_DOMAIN_NAME"
  },
  "optimized": {}
}

次のステップで特徴値を取得するには、レスポンスの PUBLIC_ENDPOINT_DOMAIN_NAME が必要です。

エンティティ ID から特徴値を取得する

オンライン ストア インスタンスのパブリック エンドポイント ドメイン名を取得した後、次のサンプルを使用して、最適化されたオンライン サービングから特定のエンティティ ID の特徴値を取得します。

REST

特定のエンティティ ID の最新の特徴値を FeatureView インスタンスから取得するには、featureViews.fetchFeatureValues メソッドを使用して POST リクエストを送信します。

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

  • PUBLIC_ENDPOINT_DOMAIN_NAME: featureOnlineStores.get メソッドを使用して取得したオンライン ストア インスタンスのパブリック エンドポイント ドメイン名。
  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。
  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。
  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。
  • FORMAT: 省略可。特徴値の取得に使用される形式。次の形式がサポートされています。
    • KEY_VALUE
    • PROTO_STRUCT

HTTP メソッドと URL:

POST https://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues

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

{
  data_key: { key: "ENTITY_ID" },
  data_format: "FORMAT"
}

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

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://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues"

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://PUBLIC_ENDPOINT_DOMAIN_NAME/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:fetchFeatureValues" | Select-Object -Expand Content

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

key_values {
  features {
    value {
      int64_value: 258348
    }
    name: "feature_0"
  }
  features {
    value {
      double_value: 0.96300036744534068
    }
    name: "feature_1"
  }
  features {
    value {
      double_value: 0.42787383695351083
    }
    name: "feature_2"
  }
  features {
    value {
      double_value: 0.12219888824743128
    }
    name: "feature_3"
  }
  features {
    value {
      double_value: 0.037523154697944622
    }
    name: "feature_4"
  }
  features {
    value {
      double_value: 0.1766952509448767
    }
    name: "feature_5"
  }
}

Python

次のサンプルでは、最適化されたオンライン サービングを使用して特定のエンティティ ID に基づいて特徴値を取得します。

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.types import feature_online_store_service as feature_online_store_service_pb2

data_client = FeatureOnlineStoreServiceClient(
  client_options={"api_endpoint": f"PUBLIC_ENDPOINT_DOMAIN_NAME"}
)
data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
    feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
    id=f"ENTITY_ID",
    format=feature_online_store_service_pb2.FetchFeatureValuesRequest.Format.FORMAT,
  )
)

次のように置き換えます。

  • PUBLIC_ENDPOINT_DOMAIN_NAME: featureOnlineStores.get メソッドを使用して取得したオンライン ストア インスタンスのパブリック エンドポイント ドメイン名。

  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。

  • PROJECT_ID: プロジェクト ID。

  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。

  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。

  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。

  • FORMAT: 省略可。特徴値を取得する形式。サポートされている形式には、JSON KEY_VALUE ペアと proto の PROTO_STRUCT 形式があります。

最適化されたオンライン サービングを使用して Private Service Connect エンドポイントから特徴値を取得する

最適化されたオンライン サービングを使用して Private Service Connect エンドポイントから特徴値を提供するようにオンライン ストア インスタンスを構成した場合、次の手順で、オンライン ストアの特徴ビューから特徴値を取得する必要があります。

  1. FeatureOnlineStore インスタンスの Private Service Connect 構成を取得します。

  2. Private Service Connect のエンドポイントをネットワーク構成に追加します。

  3. gRPC 経由で Private Service Connect エンドポイントに接続します。

  4. エンティティ ID から特徴値を取得します。

オンライン ストアのサービス アタッチメント文字列を取得する

Private Service Connect エンドポイントを使用する最適化されたオンライン サービング用にオンライン ストア インスタンスを作成して構成すると、Vertex AI Feature Store は Private Service Connect エンドポイントの設定に使用できるサービス アタッチメント文字列を生成します。サービス アタッチメント文字列は、オンライン ストアの詳細から取得できます。

次のサンプルを使用して、オンライン ストア インスタンスの詳細を取得します。

REST

プロジェクト内の FeatureOnlineStore リソースの詳細を取得するには、featureOnlineStores.get メソッドを使用して GET リクエストを送信します。

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

  • LOCATION_ID: オンライン ストアがあるリージョン(us-central1 など)。
  • PROJECT_ID: プロジェクト ID。
  • FEATUREONLINESTORE_NAME: オンライン ストア インスタンスの名前。

HTTP メソッドと URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME

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

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME"

PowerShell

次のコマンドを実行します。

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME_1",
  "createTime": "2023-09-06T23:25:04.256314Z",
  "updateTime": "2023-09-06T23:25:04.256314Z",
  "etag": "AMEw9yMgoV0bAsYuKwVxz4Y7lOmxV7riNVHg217KaQAKORqvdqGCrQ1DIt8yHgoGXf8=",
  "state": "STABLE",
  "dedicatedServingEndpoint": {
    "privateServiceConnectConfig": {
      "enablePrivateServiceConnect": "true",
      "projectAllowlist": [
        "PROJECT_NAME"
      ]
    },
    serviceAttachment: "SERVICE_ATTACHMENT_STRING"
  },
  "optimized": {}
}

次のステップで特徴値を取得するには、レスポンスの SERVICE_ATTACHMENT_STRING が必要です。

Private Service Connect のエンドポイントを追加する

最適化されたオンライン サービングに使用する Private Service Connect のエンドポイントをネットワーク構成に追加するには、次の操作を行います。

  1. Google Cloud コンソールで、オンライン ストア インスタンスを含むプロジェクトを選択します。

  2. SERVICE_ATTACHMENT_STRINGターゲット サービスとして指定して、Private Service Connect のエンドポイントを作成します。Private Service Connect のエンドポイントを作成する方法については、エンドポイントを作成するをご覧ください。

エンドポイントを作成すると、[Private Service Connect] ページの [接続エンドポイント] タブに表示されます。エンドポイントの IP アドレスが [IP アドレス] 列に表示されます。

[接続エンドポイント] タブに移動

次の手順では、この IP アドレスを使用して、gRPC を介してオンライン ストア インスタンスのエンドポイントを Private Service Connect エンドポイントに接続する必要があります。

gRPC 経由で Private Service Connect エンドポイントに接続する

次のコードサンプルを使用して、オンライン ストア用に作成された Private Service Connect エンドポイントに gRPC 経由で接続します。

Python

from google.cloud.aiplatform_v1 import FeatureOnlineStoreServiceClient
from google.cloud.aiplatform_v1.services.feature_online_store_service.transports.grpc import FeatureOnlineStoreServiceGrpcTransport
import grpc

data_client = FeatureOnlineStoreServiceClient(
  transport = FeatureOnlineStoreServiceGrpcTransport(
    # Add the IP address of the Endpoint you just created.
    channel = grpc.insecure_channel("ENDPOINT_IP:10002")
  )
)

次のように置き換えます。

  • ENDPOINT_IP: [Private Service Connect] ページの [IP アドレス] 列にあるエンドポイントの IP アドレス。

エンティティ ID から特徴値を取得する

gRPC 経由で Private Service Connect エンドポイントに接続したら、次のサンプルを使用して、最適化されたオンライン サービングから特定のエンティティ ID の特徴値を取得します。

Python

data_client.fetch_feature_values(
  request=feature_online_store_service_pb2.FetchFeatureValuesRequest(
  feature_view=f"projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME",
  data_key=feature_online_store_service_pb2.FeatureViewDataKey(ENTITY_ID),
  data_format=feature_online_store_service_pb2.FeatureViewDataFormat.PROTO_STRUCT,
  )
)

次のように置き換えます。

  • LOCATION_ID: オンライン ショップがあるリージョン(us-central1 など)。

  • PROJECT_ID: プロジェクト ID。

  • FEATUREONLINESTORE_NAME: 特徴ビューを含むオンライン ショップの名前。

  • FEATUREVIEW_NAME: 特徴値を処理する特徴ビューの名前。

  • ENTITY_ID: 最新の特徴値を処理する特徴レコードの ID 列の値。

  • FORMAT: 省略可。特徴値を取得する形式。サポートされている形式には、JSON Key-Value ペアと proto の Struct 形式があります。proto Struct 形式は、バイト型の特徴値をサポートしていません。バイト形式の特徴量値を取得する場合は、レスポンス形式として JSON を使用します。

次のステップ