從網路商店提供功能

有了 Vertex AI 特徵儲存庫,就能透過線上儲存庫,即時線上提供特徵 view 內的特徵值。舉例來說,您可以從特徵檢視中提供特徵值,以便執行線上預測作業。您必須至少同步處理一次特徵檢視表,才能透過該特徵線上提供特徵。

如果特徵檢視畫面是根據特徵群組和特徵定義,Vertex AI 特徵儲存庫會擷取與特定實體 ID 相對應的最新特徵值。如果 ID 欄中有多筆值相同的記錄,Vertex AI 特徵儲存庫會根據 feature_timestamp 欄,擷取最新的非空值特徵值。

如果特徵檢視表直接與 BigQuery 資料來源建立關聯,但未建立特徵群組和特徵關聯,Vertex AI 特徵儲存庫會從資料來源擷取所有特徵值。在這種情況下,資料來源中的每個資料列都必須包含專屬 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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  5. 詳情請參閱 Set up authentication for a local development environment

REST

如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

    After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

詳情請參閱 Google Cloud 驗證說明文件中的「驗證以使用 REST」。

使用 Bigtable 線上服務擷取特徵值

您可以使用 Bigtable 線上服務執行下列作業:

擷取單一實體的特徵值

如果地圖檢視畫面只有一個實體 ID 欄,您可以指定該欄中的值,以便提供地圖檢視畫面。不過,如果地圖資料檢視包含多個實體 ID 欄,您可以指定這些欄中的值,以構成實體記錄專屬的實體 ID,藉此找出地圖記錄。

從僅包含一個實體 ID 欄的特徵檢視表擷取特徵值

請使用下列範例,擷取特定實體 ID 的功能值,其中功能檢視只有一個實體 ID 資料欄。

REST

如要從 FeatureView 例項擷取特定實體 ID 的所有最新特徵值,請使用 featureViews.fetchFeatureValues 方法傳送 POST 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID。
  • FEATUREONLINESTORE_NAME:包含功能檢視畫面的線上商店名稱。
  • FEATUREVIEW_NAME:您要提供地圖項目值的地圖項目檢視畫面名稱。
  • ENTITY_ID:特徵記錄中 ID 欄的值,您可以透過該值取得最新的特徵值。
  • FORMAT:選用:您要擷取特徵值的格式。支援的格式如下:
    • KEY_VALUE
    • PROTO_STRUCT

HTTP 方法和網址:

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

使用下列範例,根據特定實體 ID 使用 Bigtable 線上服務擷取地圖項目值。

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read("ENTITY_ID")

更改下列內容:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1

  • PROJECT_ID:您的專案 ID。

  • FEATUREONLINESTORE_NAME:包含功能檢視畫面的線上商店名稱。

  • FEATUREVIEW_NAME:您要提供地圖項目值的地圖項目檢視畫面名稱。

  • ENTITY_ID:您要為其提供最新特徵值的 ID 欄值。

  • FORMAT:選用:您要擷取特徵值的格式。支援的格式包括 JSON KEY_VALUE 組合和 proto PROTO_STRUCT 格式。

從具有多個實體 ID 欄的特徵檢視中擷取特徵值

請使用以下範例,擷取特定實體 ID 的特色值,其中特色檢視畫面含有多個實體 ID 資料欄。

REST

如要從 FeatureView 例項擷取特定實體 ID 的所有最新特徵值,請使用 featureViews.fetchFeatureValues 方法傳送 POST 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID。
  • FEATUREONLINESTORE_NAME:包含功能檢視畫面的線上商店名稱。
  • FEATUREVIEW_NAME:您要提供地圖項目值的地圖項目檢視畫面名稱。
  • ENTITY_ID_PART_1ENTITY_ID_PART_2ENTITY_ID_PART_3:為功能檢視畫面設定的實體 ID 欄中的實體 ID 部分。這些部分構成地圖項目記錄的專屬實體 ID。
  • FORMAT:選用:您要擷取特徵值的格式。支援的格式如下:
    • KEY_VALUE
    • PROTO_STRUCT

HTTP 方法和網址:

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

JSON 要求主體:

{
  data_key: { composite_key: { parts: ["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"] } },
  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

使用下列範例,根據特定實體 ID 使用 Bigtable 線上服務擷取地圖項目值。

from google.cloud import aiplatform
from vertexai.resources.preview.feature_store import FeatureOnlineStore, FeatureView

aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
fos = FeatureOnlineStore("FEATUREONLINESTORE_NAME")
fv = FeatureView("FEATUREVIEW_NAME", feature_online_store_id=fos.name)
fv.read(["ENTITY_ID_PART_1", "ENTITY_ID_PART_2", "ENTITY_ID_PART_3"])

更改下列內容:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1

  • PROJECT_ID:您的專案 ID。

  • FEATUREONLINESTORE_NAME:包含功能檢視畫面的線上商店名稱。

  • FEATUREVIEW_NAME:您要提供地圖項目值的地圖項目檢視畫面名稱。

  • ENTITY_ID_PART_1ENTITY_ID_PART_2ENTITY_ID_PART_3:為功能檢視畫面設定的實體 ID 資料欄中的實體 ID 部分。這些部分構成地圖項目記錄的專屬實體 ID。

  • FORMAT:選用:您要擷取特徵值的格式。支援的格式包括 JSON KEY_VALUE 組合和 proto PROTO_STRUCT 格式。

擷取一組實體的特徵值

使用下列範例,透過 Bigtable 線上服務,從多個實體 ID 欄指定一組 ID,擷取特徵值。

REST

如要從 FeatureView 執行個體擷取特定實體 ID 的所有最新特徵值,請使用 featureViews.streamingFetchFeatureValues 方法傳送 POST 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID。
  • FEATUREONLINESTORE_NAME:包含功能檢視畫面的線上商店名稱。
  • FEATUREVIEW_NAME:您要提供地圖項目值的地圖項目檢視畫面名稱。
  • ENTITY_ID_1ENTITY_ID_2ENTITY_ID_3ENTITY_ID_4:您要提供最新地圖項目值的地圖項目記錄中 ID 欄的值組合。請注意,在要求中將實體 ID 分組為多個巢狀清單,有助於縮短延遲時間,因為 Vertex AI 特徵儲存庫會針對每個巢狀 ID 清單執行個別的讀取作業。

HTTP 方法和網址:

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。請注意,在要求中將實體 ID 分組為多個巢狀清單,有助於縮短延遲時間,因為 Vertex AI 特徵儲存庫會為每個巢狀 ID 清單執行個別的讀取作業。

使用公開端點的最佳化線上服務擷取特徵值

如果您已將網路商店執行個體設為使用來自公開端點的最佳化線上服務來提供特徵值,則需要執行下列步驟,才能從網路商店中的特徵檢視擷取特徵值:

  1. 擷取 FeatureOnlineStore 執行個體的公開端點網域名稱。

  2. 使用公開端點網域名稱,從實體 ID 擷取特徵值。

擷取線上商店的公開端點網域名稱

當您建立及設定線上商店執行個體,以便透過公開端點提供最佳化線上服務時,Vertex AI 特徵儲存庫會為線上商店產生公開端點網域名稱。您必須先從網路商店詳細資料中擷取公開端點網域名稱,才能開始透過網路商店中的特徵檢視畫面提供特徵值。

請使用下列範例,擷取網路商店執行個體的詳細資料。

REST

如要擷取專案中 FeatureOnlineStore 資源的詳細資料,請使用 featureOnlineStores.get 方法傳送 GET 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID。
  • FEATUREONLINESTORE_NAME:線上商店執行個體的名稱。

HTTP 方法和網址:

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

如要從 FeatureView 例項擷取特定實體 ID 的所有最新特徵值,請使用 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 方法和網址:

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",
    data_key=feature_online_store_service_pb2.FeatureViewDataKey(key=f"ENTITY_ID"),
    data_format=feature_online_store_service_pb2.FeatureViewDataFormat.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 特徵商店會產生服務附件字串,供您用來設定 Private Service Connect 端點。您可以從線上商店詳細資料中擷取服務附件字串。

請使用下列範例,擷取網路商店執行個體的詳細資料。

REST

如要擷取專案中 FeatureOnlineStore 資源的詳細資料,請使用 featureOnlineStores.get 方法傳送 GET 要求。

使用任何要求資料之前,請先替換以下項目:

  • LOCATION_ID:線上商店所在的區域,例如 us-central1
  • PROJECT_ID:您的專案 ID。
  • FEATUREONLINESTORE_NAME:線上商店執行個體的名稱。

HTTP 方法和網址:

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 addresses」欄中。

前往「已連結的端點」分頁

您必須使用這個 IP 位址,在下一個步驟中透過 gRPC 連線至線上商店執行個體的 Private Service Connect 端點。

透過 gRPC 連線至 Private Service Connect 端點

使用下列程式碼範例,透過 gRPC 連線至為網路商店建立的 Private Service Connect 端點。

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_IPPrivate 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 鍵/值組合和 proto Struct 格式。請注意,proto Struct 格式不支援位元組功能值類型。如果您想擷取以位元組格式編碼的特徵值,請使用 JSON 做為回應格式。

後續步驟