准备数据源

开始使用 Vertex AI Feature Store 在线传送特征之前,您必须先在 BigQuery 中设置特征数据源,如下所示:

  1. 使用特征数据创建 BigQuery 表或视图。如需将特征数据加载到 BigQuery 表或视图中,您可以使用数据创建 BigQuery 数据集,创建 BigQuery 表,然后将数据集中的特征数据加载到表中。

  2. 将特征数据加载到 BigQuery 表或视图后,您需要将此数据源提供给 Vertex AI Feature Store 以进行在线传送。您可以通过以下两种方式将数据源连接到在线传送资源,例如在线存储区和特征视图实例:

    • 通过创建特征组和特征来注册数据源:您可以将特征组和特征与在线存储区中的特征视图实例相关联。在这种情况中,您可以通过添加 feature_timestamp 列将数据格式化为时序格式。Vertex AI Feature Store 根据特征时间戳为每个唯一实体 ID 仅传送最新的非 null 值。如需了解如何创建特征组,请参阅创建特征组。如需了解如何在特征组中创建特征,请参阅创建特征

    • 不创建特征组和特征,直接从数据源传送特征:您可以在特征视图中指定数据源的 URI。请注意,在这种情况下,您无法将数据格式化为时序,也无法在 BigQuery 来源中包含历史数据。每行必须包含与唯一 ID 对应的最新特征值。不支持同一实体 ID 在不同行中多次出现。

由于 Vertex AI Feature Store 允许您在 BigQuery 中维护特征数据并从 BigQuery 数据源传送特征数据,因此无需将特征导入或复制到离线存储区。

数据源准备准则

在 BigQuery 中准备数据源时,请遵循以下准则以了解架构和限制条件:

  1. 数据源必须包含以下列:

    • 至少有一个实体 ID 列具有 string 值。此列中的每个值的大小必须小于 4 KB。

    • 如果使用特征组和特征注册数据源,请添加 feature_timestamp 列并将数据格式化为时序格式。feature_timestamp 列包含 timestamp 类型的值。在在线传送期间,Vertex AI Feature Store 会根据此时间戳传送特征的最新非 null 值。

    如果您直接将 BigQuery 数据源与特征视图相关联,则不需要 feature_timestamp 列。在这种情况下,您必须在数据源中仅添加最新的特征值,并且 Vertex AI Feature Store 不会查找时间戳。

    • 如果您想在为优化在线传送而创建的在线存储区中使用嵌入管理,数据源必须包含以下列:

      • 包含 float 类型数组的 embedding 列。

      • 可选:一个或多个 stringstring 类型数组的过滤列。

      • 可选:int 类型的数量上限列。

  2. 数据源中的每一行都是与实体 ID 关联的特征值的完整记录。如果其中一列缺少特征值,则将其视为 null 值。根据您定义特征视图的方式,Vertex AI Feature Store 有两种方式选择其传送的特征值:

    • 如果特征视图是根据特征组和特征定义的,则 Vertex AI Feature Store 会使用特征时间戳传送最新的非 null 特征值。例如,如果与最新时间戳对应的特定特征的值为 null,则 Vertex AI Feature Store 会根据该特征的历史值传送最新的非 null 值。

    • 如果特征视图通过直接指定 BigQuery 数据源来定义,则每行都必须包含实体 ID 列的唯一值。在这种情况下,Vertex AI Feature Store 会从关联的数据源中传送所有特征值。

  3. BigQuery 表或视图的每一列表示一个特征。在单独的列中提供每个特征的值。如果您将数据源与特征组和特征相关联,请将每一列与单独的特征关联。

  4. 特征值支持的数据类型包括 boolintfloatstringtimestamp、这些数据类型的数组和字节。请注意,在数据同步期间,类型为 timestamp 的特征值将转换为 int64

  5. 数据源必须与在线存储区实例位于同一区域,或者其所在的多区域包含在线存储区所在区域或与该区域重叠。例如,如果在线存储区位于 us-central,则 BigQuery 来源可能位于 us-centralUS 中。

  6. 在在线传送之前同步特征视图中的数据可确保您只传送最新的特征值。

后续步骤