开始使用 Vertex AI Feature Store 在线传送特征之前,您必须先在 BigQuery 中设置特征数据源,如下所示:
使用特征数据创建 BigQuery 表或视图。如需将特征数据加载到 BigQuery 表或视图中,您可以使用数据创建 BigQuery 数据集,创建 BigQuery 表,然后将数据集中的特征数据加载到表中。
将特征数据加载到 BigQuery 表或视图后,您需要将此数据源提供给 Vertex AI Feature Store 以进行在线传送。您可以通过以下两种方式将数据源连接到在线传送资源,例如在线存储区和特征视图实例:
通过创建特征组和特征来注册数据源:您可以将特征组和特征与在线存储区中的特征视图实例相关联。您可以采用以下任一方式设置数据格式:
通过添加特征时间戳列,将数据格式化为时序格式。Vertex AI Feature Store 根据此列中的特征时间戳,仅传送每个唯一实体 ID 的最新特征值。
格式化数据,但不包含特征时间戳列。 Vertex AI Feature Store 会管理时间戳,并仅传送每个唯一实体 ID 的最新特征值。
不创建特征组和特征,直接从数据源传送特征:您可以在特征视图中指定数据源的 URI。请注意,在这种情况下,您无法将数据格式化为时序,也无法在 BigQuery 来源中包含历史数据。每行必须包含与唯一 ID 对应的最新特征值。不支持同一实体 ID 在不同行中多次出现。
由于 Vertex AI Feature Store 允许您在 BigQuery 中维护特征数据并从 BigQuery 数据源传送特征数据,因此无需将特征导入或复制到离线存储区。
数据源准备准则
在 BigQuery 中准备数据源时,请遵循以下准则以了解架构和限制条件:
在数据源中添加以下列:
实体 ID 列:数据源必须至少包含一个具有
string
或int
值的实体 ID 列。此列的默认名称为entity_id
。您可以选择为此列使用其他名称。此列中的每个值的大小必须小于 4 KB。请注意,您还可以使用多个列中的特征构建实体 ID,从而指定特征记录。在这种情况下,您可以在数据源中添加多个实体 ID 列。每个实体 ID 列的名称都必须是唯一的。如果您是通过创建特征组来注册数据源,请为每个特征组设置实体 ID 列。否则,如果您直接将数据源与特征视图相关联,请配置特征视图以指定实体 ID 列。
请注意,您可以在一个数据源中添加多个 ID 列。在这种情况下,每个实体 ID 列的名称都必须是唯一的。您可以配置特征组或特征视图,以使用特征记录中每个列的值来构建实体 ID。
特征时间戳列:可选。如果您使用特征组和特征注册数据源,并且需要将数据格式化为时序格式,请添加特征时间戳列。时间戳列包含
timestamp
类型的值。时间戳列的默认名称为feature_timestamp
。如果您想使用其他列名称,请使用time_series
参数为特征组设置时间戳列。如果您未指定时间戳列来将数据格式化为时序,Vertex AI Feature Store 会管理特征的时间戳并传送最新的特征值。
如果您直接将 BigQuery 数据源与特征视图相关联,则不需要
feature_timestamp
列。在这种情况下,您必须在数据源中仅添加最新的特征值,并且 Vertex AI Feature Store 不会查找时间戳。嵌入和过滤列:可选。如果您想在为优化在线传送而创建的在线存储区中使用嵌入管理,数据源必须包含以下列:
包含
float
类型数组的embedding
列。可选:一个或多个
string
或string
类型数组的过滤列。可选:
int
类型的数量上限列。
数据源中的每一行都是与实体 ID 关联的特征值的完整记录。如果其中一列缺少特征值,则将其视为 null 值。
BigQuery 表或视图的每一列表示一个特征。在单独的列中提供每个特征的值。如果您将数据源与特征组和特征相关联,请将每一列与单独的特征关联。
特征值支持的数据类型包括
bool
、int
、float
、string
、timestamp
、这些数据类型的数组和字节。请注意,在数据同步期间,类型为timestamp
的特征值将转换为int64
。数据源必须与在线存储区实例位于同一区域,或者其所在的多区域包含在线存储区所在区域或与该区域重叠。例如,如果在线存储区位于
us-central
,则 BigQuery 来源可能位于us-central
或US
中。在在线传送之前同步特征视图中的数据可确保您只传送最新的特征值。如果您使用的是预定数据同步,可能需要手动同步特征视图中的数据。不过,如果您将持续数据同步与优化后的在线传送搭配使用,则无需手动同步数据。