有了 Vertex AI 特徵儲存庫,就能透過線上儲存庫,即時線上提供特徵 view 內的特徵值。舉例來說,您可以從特徵檢視區塊提供特徵值,用於線上預測。特徵檢視表必須至少同步一次,才能從該特徵線上提供特徵。
如果特徵檢視區塊是根據特徵群組和特徵定義,Vertex AI 特徵儲存庫會擷取對應特定實體 ID 的最新特徵值。如果 ID 資料欄中有多筆記錄的值相同,Vertex AI 特徵儲存庫會根據 feature_timestamp 資料欄,擷取最新的非空值特徵值。
如果特徵檢視畫面直接與 BigQuery 資料來源建立關聯,而未建立特徵群組和特徵的關聯,Vertex AI 特徵儲存庫就會從資料來源擷取所有特徵值。在本例中,資料來源中的每一列都必須包含專屬 ID。
視為網路商店設定的線上提供類型而定,您可以透過下列其中一種方式提供特徵值:
使用 Bigtable 線上服務擷取特徵值:只有在線上商店已設定為 Bigtable 線上服務時,才選擇這個選項。
使用公開端點,透過最佳化線上放送 (已淘汰) 擷取特徵值: 只有在線上商店已透過公開端點設定最佳化線上放送 (已淘汰) 時,才選擇這個選項。
使用 Private Service Connect 端點,透過最佳化線上服務 (已淘汰) 擷取特徵值: 只有在線上商店透過 Private Service Connect,從專用服務端點設定最佳化線上服務 (已淘汰) 時,才選擇這個選項。
事前準備
向 Gemini Enterprise Agent Platform 進行驗證 (如果尚未驗證)。
選取這個頁面上您打算如何使用範例的分頁:
Python
如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用您的使用者憑證設定應用程式預設憑證。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
詳情請參閱 這篇文章,瞭解如何設定本機開發環境的驗證機制。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 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_VALUEPROTO_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
使用下列範例,透過 Bigtable 線上提供,根據特定實體 ID 擷取特徵值。
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配對和 protoPROTO_STRUCT格式。
從具有多個實體 ID 資料欄的特徵檢視區塊擷取特徵值
使用下列範例擷取特定實體 ID 的特徵值,其中特徵檢視畫面有多個實體 ID 資料欄。
REST
如要從 FeatureView 執行個體擷取特定實體 ID 的所有最新特徵值,請使用 featureViews.fetchFeatureValues 方法傳送 POST 要求。
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION_ID:網路商店所在的區域,例如
us-central1。 - PROJECT_ID:專案 ID。
- FEATUREONLINESTORE_NAME:包含特徵檢視區塊的網路商店名稱。
- FEATUREVIEW_NAME:要提供特徵值的特徵檢視區塊名稱。
- ENTITY_ID_PART_1、ENTITY_ID_PART_2 和 ENTITY_ID_PART_3:實體 ID 欄位中為特徵檢視畫面設定的實體 ID 部分。這些部分構成特徵記錄的專屬實體 ID。
- FORMAT:選用:要擷取特徵值的格式。
支援的格式如下:
KEY_VALUEPROTO_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
使用下列範例,透過 Bigtable 線上提供,根據特定實體 ID 擷取特徵值。
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_1、ENTITY_ID_PART_2 和 ENTITY_ID_PART_3:實體 ID 欄位中為特徵檢視畫面設定的實體 ID 部分。這些部分構成特徵記錄的專屬實體 ID。
FORMAT:選用:要擷取特徵值的格式。支援的格式包括 JSON
KEY_VALUE配對和 protoPROTO_STRUCT格式。
擷取一組實體的特徵值
使用下列範例,透過 Bigtable 線上提供,從多個實體 ID 欄指定一組 ID,藉此擷取特徵值。
REST
如要從 FeatureView 執行個體擷取特定實體 ID 的所有最新特徵值,請使用 featureViews.streamingFetchFeatureValues 方法傳送 POST 要求。
使用任何要求資料之前,請先修改下列項目的值:
- LOCATION_ID:網路商店所在的區域,例如
us-central1。 - PROJECT_ID:專案 ID。
- FEATUREONLINESTORE_NAME:包含特徵檢視區塊的網路商店名稱。
- FEATUREVIEW_NAME:要提供特徵值的特徵檢視區塊名稱。
- ENTITY_ID_1、ENTITY_ID_2、ENTITY_ID_3 和 ENTITY_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_1、ENTITY_ID_2、ENTITY_ID_3 和 ENTITY_ID_4:您要提供最新特徵值的實體 ID。請注意,在要求中將實體 ID 分組為多個巢狀清單,有助於減少延遲,因為 Vertex AI 特徵商店會針對每個巢狀 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_VALUEPROTO_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配對和 protoPROTO_STRUCT格式。
透過 Private Service Connect 端點,使用最佳化線上提供擷取特徵值
如果您已設定網路商店執行個體,透過 Private Service Connect 端點的「最佳化線上提供」功能提供特徵值,則必須執行下列步驟,從網路商店的特徵檢視畫面擷取特徵值:
擷取網路商店的服務附件字串
建立及設定網路商店執行個體,以便透過 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 端點新增至網路設定,請完成下列步驟:
在 Google Cloud 控制台選取包含網路商店例項的專案。
指定 SERVICE_ATTACHMENT_STRING 做為目標服務,建立 Private Service Connect 的端點。如要瞭解如何建立 Private Service Connect 的端點,請參閱「建立端點」。
建立端點後,該端點會顯示在「Private Service Connect」頁面的「Connected endpoints」分頁中。端點的 IP 位址會顯示在「IP addresses」(IP 位址) 欄中。
您必須使用這個 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_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 鍵/值組合和 proto
Struct格式。請注意,protoStruct格式不支援位元組特徵值類型。如要擷取以位元組格式設定的特徵值,請使用 JSON 做為回應格式。
後續步驟
瞭解如何同步處理特徵檢視的資料。
瞭解如何更新網路商店。