您可以在现有在线存储区实例中创建特征视图。创建特征视图时,您可以通过以下方式关联特征:
通过 Feature Registry 添加特征组和特征:与 Feature Registry 中的现有特征组和特征关联。特征组指定 BigQuery 数据源的位置。特征组中的特征指向该数据源中的特定特征列。您可以将一个特征视图与多个特征组相关联。
通过 BigQuery 源添加特征:直接关联 BigQuery 数据源(例如 BigQuery 表或视图),并指定实体 ID 列。
创建特征视图后,Vertex AI Feature Store 会同步 BigQuery 数据源中的最新特征值。如果您设置了查询参数 run_sync_immediately=true
,则 Vertex AI Feature Store 会在您创建特征视图时同步特征值。否则,Vertex AI Feature Store 会根据为特征视图指定的同步时间表来同步特征值。
同步特征视图中的特征数据
Vertex AI Feature Store 会定期从 BigQuery 刷新或同步在线存储区中存储的特征值。创建特征视图时,您可以使用 FeatureView.sync_config
参数指定数据同步时间表或频率。
您还可以选择为特征视图手动触发数据同步。如需详细了解如何手动同步特征视图的数据,请参阅将特征数据同步到在线存储区。
请注意,对于一个特征视图,一次只能执行一项数据同步操作。如果正在为特征视图同步数据,则会跳过针对该特征视图的所有已计划的数据同步,直到同步完成为止。
优化同步期间的费用
数据同步操作可能会产生 BigQuery 资源使用费。请遵循以下准则来优化这些费用并提高数据同步期间的性能:
请勿将同步时间表的运行频率配置为比 BigQuery 源中数据的预期更改频率更频繁。
优化 BigQuery 中特征数据源的大小。创建特征视图时,请仅包含在线传送所需的数据。
避免在 BigQuery 中运行复杂的聚合。对表或视图运行
SELECT *
查询以估算数据处理量和处理时长。为在线存储区设置扩缩选项时,请将
max_node_count
的值设置得足够高,以便容纳数据同步期间的高负载。在同一在线存储区中,将不同特征视图的同步安排在不同的时间。
如果您的 BigQuery 表包含大量历史数据,请考虑使用时间戳对表进行分区,并指定检索特征数据的时间范围。这样可最大程度地减少在同步期间对过时的特征数据进行检索。
Bigtable 利用率会在数据同步期间增加。对于在在线存储区内为 Bigtable 在线服务中创建的特征视图,请在非高峰时段安排同步作业,以获得最佳性能。
为特征视图配置服务账号
每个特征视图在同步期间使用服务账号访问 BigQuery 中的源数据。Vertex AI Feature Store 将 BigQuery Data Viewer Identity and Access Management (IAM) 角色分配给此服务账号。
默认情况下,特征视图使用为项目配置的服务账号。使用此配置时,任何有权在项目中创建特征视图的用户都可以访问 BigQuery 中的特征数据。
或者,您也可以将特征视图配置为使用其自己的服务账号。然后,Vertex AI Feature Store 会为特征视图设置专用服务账号。使用此配置,您可以限制对 BigQuery 中特征数据的访问权限,或向其他用户授予访问权限。您可以使用 FeatureView.service_agent_type
参数指定服务账号配置。
为特征视图配置向量检索
您可以为基于关联的数据源创建的特征视图配置向量检索,前提是该数据源包含 embedding
列并且在线存储区配置为支持嵌入管理。您可以使用 FeatureView.vector_search_config
参数指定向量检索配置。
请注意,只有通过指定 BigQuery 源 URI (而不是来自特征组的特征和来自 Feature Registry 的特征)创建特征视图时,才能配置向量检索和管理嵌入。
如需了解如何通过添加 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_A 和 FEATUREGROUP_NAME_B:要从中向特征视图添加特征的特征组的名称。
- FEATURE_ID_A1 和 FEATURE_ID_A2:要添加到特征视图的特征组 FEATUREGROUP_NAME_A 的特征 ID。
- FEATURE_ID_B1 和 FEATURE_ID_B2:要添加到特征视图的特征组 FEATUREGROUP_NAME_B 的特征 ID。
- CRON:Cron 时间表表达式,表示将数据同步到特征视图的频率。如需了解详情,请参阅 cron。
HTTP 方法和网址:
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_A 和 FEATUREGROUP_NAME_B:要从中向特征视图添加特征的特征组的名称。
- FEATURE_ID_A1 和 FEATURE_ID_A2:要添加到特征视图的特征组 FEATUREGROUP_NAME_A 的特征 ID。
- FEATURE_ID_B1 和 FEATURE_ID_B2:要添加到特征视图的特征组 FEATUREGROUP_NAME_B 的特征 ID。
- CRON:Cron 时间表表达式,表示将数据同步到特征视图的频率。如需了解详情,请参阅 cron。
- SERVICE_AGENT_TYPE:(可选)特征视图的服务账号配置。受支持的服务代理类型包括:
SERVICE_AGENT_TYPE_PROJECT
:将项目级层服务账号用于特征视图。这是默认配置。SERVICE_AGENT_TYPE_FEATURE_VIEW
:为特征视图设置和使用专用服务账号。
HTTP 方法和网址:
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。
- EMBEDDING_COLUMN:包含源数据(用于创建向量搜索的索引)的列的名称。仅当您希望使用特征视图管理嵌入时,才需要该名称。
- FILTER_COLUMN_1 和 FILTER_COLUMN_2(可选):用于过滤向量搜索结果的列的名称。
- CROWDING_COLUMN(可选):包含数量上限属性的列的名称。
- EMBEDDING_DIMENSION(可选):嵌入列中嵌入的大小(以维度数量表示)。
HTTP 方法和网址:
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" }, "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/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 的列的名称。您可以指定一列或多列。
- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
"entity_id_column_name"
。 - 如需指定多个实体 ID 列,请按以下格式指定列名称:
["entity_id_column_1_name", "entity_id_column_2_name", ...]
。
- 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
- CRON:Cron 时间表表达式,表示将数据同步到特征视图的频率。如需了解详情,请参阅 cron。
- SERVICE_AGENT_TYPE:特征视图的服务账号配置。受支持的服务代理类型包括:
SERVICE_AGENT_TYPE_PROJECT
:将项目级层服务账号用于特征视图。这是默认配置。SERVICE_AGENT_TYPE_FEATURE_VIEW
:为特征视图设置和使用专用服务账号。
- EMBEDDING_COLUMN:包含源数据(用于创建向量搜索的索引)的列的名称。仅当您希望使用特征视图管理嵌入时,才需要该名称。
- FILTER_COLUMN_1 和 FILTER_COLUMN_2(可选):用于过滤向量搜索结果的列的名称。
- CROWDING_COLUMN(可选):包含数量上限属性的列的名称。
- EMBEDDING_DIMENSION(可选):嵌入列中嵌入的大小(以维度数量表示)。
HTTP 方法和网址:
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" } } }