创建特征视图实例

您可以在现有在线存储区实例中创建特征视图。创建特征视图时,您可以通过以下方式关联特征:

  • 通过 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 进行身份验证,除非您已完成此操作。

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 参数指定数据同步时间表或频率。

您还可以选择为特征视图手动触发数据同步。如需详细了解如何手动同步特征视图的数据,请参阅将特征数据同步到在线存储区

请注意,对于一个特征视图,一次只能执行一项数据同步操作。如果正在为特征视图同步数据,则会跳过针对该特征视图的所有已计划的数据同步,直到同步完成为止。

优化同步期间的费用

数据同步操作可能会产生 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 参数指定服务账号配置。

为特征视图配置向量检索

您可以使用 FeatureView.index_config 参数,为针对优化在线传送而创建的在线存储区中的特征视图配置矢量检索。如需了解如何通过添加 embedding 列来准备或更新 BigQuery 数据源以支持嵌入,请参阅数据源准备准则

请注意,只有通过指定 BigQuery 源 URI (而不是来自特征组的特征和来自 Feature Registry 的特征)创建特征视图时,才能配置向量检索和管理嵌入。

如需详细了解如何在 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 方法和网址:

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 方法和网址:

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 的列的名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "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 的列名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "entity_id_column_name"
    • 如需指定多个实体 ID 列,请按以下格式指定列名称:
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • CRON:Cron 时间表表达式,表示将数据同步到特征视图的频率。如需了解详情,请参阅 cron

HTTP 方法和网址:

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 的列的名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "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 的列名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "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 方法和网址:

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 资源,请通过使用 featureViews.create 方法并指定 FeatureView.index_config 参数来发送 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", ...]
  • 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 方法和网址:

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"
    }
  }
}

后续步骤