在 BigQuery 中分析多模态数据

本文档介绍了可用于分析多模态数据的 BigQuery 功能。有些功能可在Google Cloud 控制台和 bq 命令行工具中使用,有些功能则需要在 Python 中使用 BigQuery DataFrames 才能使用。您可以将这些功能中的许多功能搭配使用,以便更轻松地针对多模态数据实现分析和转换工作流。

借助 BigQuery 的多模态数据功能,您可以执行以下任务:

如需查看使用 Google Cloud 控制台的分步教程,请参阅使用 SQL 分析多模态数据。如需了解有关如何在 Python 中使用 BigQuery DataFrames 的分步教程,请参阅使用 BigQuery DataFrames 在 Python 中分析多模态数据

优势

BigQuery 的多模态数据功能具有以下优势:

  • 可组合性:您可以使用 ObjectRef 值在同一标准表行中存储和管理结构化数据和非结构化数据。例如,您可以将商品的图片存储在与商品的其他信息在同一行中。您可以使用标准 SQL 函数创建和更新包含 ObjectRef 值的列,还可以创建 ObjectRef 值作为对对象执行转换操作的输出。
  • 在生成式 AI 问题中使用对象数据:将 ObjectRefRuntime 值用作生成式 AI 函数的输入。例如,您可以针对同一表中的图片和文本数据生成嵌入。对于文本和标量值生成,您还可以在发送给模型的提示中引用多个对象。例如,您可以创建一个提示,要求模型比较两张动物图片,然后返回文本,指明这两张图片是否显示了同一类动物。
  • 保留分块顺序:您可以将对象分块,然后将分块作为 ObjectRef 值数组存储在标准表列中,以保留其顺序。例如,您可以解析视频中的图片,然后将这些图片存储为 ObjectRef 值的数组,以便图片保持与原始视频中显示的顺序相同。

ObjectRef 个值

ObjectRef 值是使用 ObjectRef ���式STRUCT 值。您可以创建使用此格式的 STRUCTARRAY<STRUCT> 列,以便在 BigQuery 标准表中存储 Cloud Storage 对象元数据和关联的授权者。授权者值用于标识 BigQuery 用于访问 Cloud Storage 对象的 Cloud 资源连接

当您需要将非结构化数据集成到标准表中时,请使用 ObjectRef 值。例如,在产品表中,您可以通过添加包含 ObjectRef 值的列,将产品图片存储在与其他产品信息在同一行中。

使用以下 GoogleSQL 函数创建和更新 ObjectRef 值:

  • OBJ.MAKE_REF:创建一个包含 Cloud Storage 对象元数据的 ObjectRef 值。
  • OBJ.FETCH_METADATA:提取部分填充了 uriauthorizer 值的 ObjectRef 值的 Cloud Storage 元数据。

如需了解详情,请参阅在表架构中指定 ObjectRef

ObjectRefRuntime 个值

ObjectRefRuntime 值是使用 ObjectRefRuntime 架构JSON 值。ObjectRefRuntime 值包含用于创建对象的 ObjectRef 值中的 Cloud Storage 对象元数据、关联的授权者和访问网址。您可以使用访问网址在 Cloud Storage 中读取或修改对象。

使用 ObjectRefRuntime 值在分析和转换工作流中处理对象数据。ObjectRefRuntime 值中的访问网址最长会在 6 小时后过期,但您可以配置更短的过期时间。如果您在工作流程中将 ObjectRefRuntime 值保留在任何位置,则应定期刷新这些数据。如需保留对象元数据,请改为存储 ObjectRef 值,然后在需要时使用这些值生成 ObjectRefRuntime 值。除非修改 Cloud Storage 中的底层对象,否则无需刷新 ObjectRef 值。

使用 OBJ.GET_ACCESS_URL 函数创建 ObjectRefRuntime 值。

生成式 AI 函数

将以下生成式 AI 函数与 Gemini 模型结合使用,根据 ObjectRefRuntime 输入生成文本、嵌入和标量值:

对于除 ML.GENERATE_EMBEDDING 以外的所有函数,您可以将 ObjectRefRuntime 值作为单个值或数组提供。ML.GENERATE_EMBEDDING 仅接受单个值。

在 Python 中处理多模态数据

您可以使用 BigQuery DataFrames 类和方法在 Python 中分析多模态数据。

���模态 DataFrame

使用以下 Session 方法创建一个可集成结构化数据和非结构化数据的多模态 DataFrame:

对象转换方法

使用以下 Series.BlobAccessor 方法转换对象数据:

生成式 AI 方法

您可以使用以下方法对多模态数据执行生成式 AI 任务:

对象表

如果您已列入多模态数据预览的许可名单,则您创建的任何新对象表都会有一个 ref 列,其中包含给定对象的 ObjectRef 值。用于创建对象表的连接用于在 ref 列中填充 authorizer 值。您可以使用 ref 列在标准表中填充和刷新 ObjectRef 值。

限制

BigQuery 多模态数据地图项存在以下限制:

  • 您必须在包含 ObjectRef 值的表所在的项目中运行引用 ObjectRef 值的任何查询。
  • 在运行引用 ObjectRefObjectRefRuntime 值的查询的项目和区域中,连接数量不得超过 20 个。例如,如果您在 myproject 中的 asia-east1 中运行查询,则 myproject 中的 asia-east1 中的连接数不得超过 20 个。

费用

使用多模态数据时,需要支付以下费用:

  • 将对象元数据作为 ObjectRef 值存储在标准表中会增加该表的 BigQuery 存储费用。
  • ObjectRef 值运行的查询会产生 BigQuery 计算费用。
  • 您通过对象转换创建的新对象会产生 Cloud Storage 费用。
  • 您在 BigQuery 中创建并保留的新数据会产生 BigQuery 存储费用。
  • 使用生成式 AI 函数会产生 Vertex AI 费用。
  • 在 BigQuery DataFrames 中使用 BigQuery Python UDF 以及多模态 DataFrame 和对象转换方法会产生 Python UDF 费用。

如需了解详情,请参阅以下价格页面:

后续步骤