生成式 AI 概览

本文档介绍了 BigQuery 支持的生成式人工智能 (AI) 函数。这些函数接受自然语言输入,并使用预训练的 Vertex AI 模型和内置的 BigQuery 模型。

概览

BigQuery 提供各种 AI 函数,可帮助您完成以下任务:

  • 生成广告素材内容。
  • 分析文本或非结构化数据(例如图片)、检测情感并回答相关问题。
  • 总结内容传达的主要想法或印象。
  • 从文本中提取结构化数据。
  • 将文本或非结构化数据分类到用户定义的类别中。
  • 生成嵌入,以搜索类似的文本、图片和视频。
  • 对输入内容进行评级,以便按质量、相似性或其他条件对其进行排名。

有两大类 AI 函数可帮助您完成这些任务:

  • 通用 AI 函数:借助这些函数,您可以完全控制和透明地选择要使用的模型、提示和参数。

    • 执行推理,例如回答有关数据的问题

      • AI.GENERATE 是最灵活的推理函数,可让您分析文本和非结构化数据的任意组合,并输出符合自定义架构的结构化数据。
      • 如果您需要特定类型的输出,请选择以下更专业的推理函数之一:

        • AI.GENERATE_BOOL
        • AI.GENERATE_DOUBLE
        • AI.GENERATE_INT
    • 生成结构化输出,例如从非结构化文本中提取姓名和地址

      • AI.GENERATE,当您指定 output_schema
      • AI.GENERATE_TABLE
    • 使用 AI.GENERATE 的表值函数版本生成文本

      • AI.GENERATE_TEXT
    • 为语义搜索和聚类生成嵌入

      • AI.EMBED
      • AI.GENERATE_EMBEDDING
      • AI.SIMILARITY
  • 受管理的 AI 函数:这些函数具有简化的语法,并针对成本和质量进行了优化。BigQuery 会为您选择模型。

    • 使用自然语言条件过滤数据

      • AI.IF
    • 对输入内容进行评分,例如按质量或情感色彩评分

      • AI.SCORE
    • 将输入内容分类到用户定义的类别中

      • AI.CLASSIFY

通用 AI 函数

借助通用 AI 功能,您可以完全控制并透明地了解所用模型、提示和参数的选择。其输出内容包括有关模型调用的详细信息,包括状态和完整的模型响应,其中可能包含有关安全评级或引用的信息。

生成结构化数据

结构化数据生成与文本生成非常相似,不同之处在于,您可以通过指定 SQL 架构来设置模型回答的格式。例如,您可以根据电话通话记录生成一个表格,其中包含客户的姓名、电话号码、地址、请求和报价。

您可以通过以下两种方式生成结构化数据:

按行生成特定类型的值

您可以将标量生成式 AI 函数与 Gemini 模型搭配使用,以分析 BigQuery 标准表中的数据。数据包括文本数据和来自包含 ObjectRef 值的列的非结构化数据。对于表中的每一行,这些函数都会生成包含特定类型的输出。例如,您可以分析家居用品的图片,为 design_type 列生成文本,以便家居用品 SKU 具有关联的说明,例如 mid-century modernfarmhouse

以下 AI 函数可供使用:

AI.GENERATE 函数与受支持的 Gemini 模型搭配使用时,您可以利用 Vertex AI 预配的吞吐量为请求提供稳定且较高的吞吐量。如需了解详情,请参阅使用 Vertex AI 预配吞吐量

使用 TVF 生成文本

您可以使用表值函数 GENERATE_TEXT 执行生成式 AI 任务,该函数使用 BigQuery ML 中的远程模型来引用部署到 Vertex AI 或在 Vertex AI 中托管的模型。您可以创建以下类型的远程模型

创建远程模型后,您可以使用 AI.GENERATE_TEXT 函数与该模型交互:

  • 对于基于 Gemini 模型的远程模型,您可以执行以下操作:

    • 使用 AI.GENERATE_TEXT 函数,根据您在查询中指定的提示或从标准表中的列中提取的提示生成文本。在查询中指定提示时,您可以在提示中引用以下类型的表列:

    • 使用 AI.GENERATE_TEXT 函数分析对象表中的文本、图片、音频、视频或 PDF 内容,并将您提供的提示用作函数参数。

  • 对于所有其他类型的远程模型,您可以将 AI.GENERATE_TEXT 函数与您在查询中提供的提示或标准表的某一列中的提示搭配使用。

使用以下主题尝试在 BigQuery ML 中生成文本:

当您将 Gemini 模型与 AI.GENERATE_TEXT 函数搭配使用时,可以使用接地安全属性,前提是您将标准表用于输入。通过接地功能,Gemini 模型可以使用互联网上的其他信息来生成更具体的真实回答。借助安全属性,Gemini 模型可以根据您指定的属性过滤其返回的回答。

对于某些模型,您可以选择配置监督式调优,以便使用自己的数据训练模型,使其更适合您的使用场景。所有推理都在 Vertex AI 中进行。 结果存储在 BigQuery 中。

对于受支持的 Gemini 模型,您可以使用 Vertex AI 预配吞吐量来为请求提供一致的高吞吐量。如需了解详情,请参阅使用 Vertex AI 预配吞吐量

生成嵌入

嵌入是一种表示给定实体(如一段文本或音频文件)的高维数值向量。通过生成嵌入,您可以捕获数据的语义,从而更轻松地推断和比较数据。

嵌入生成的一些常见应用场景如下:

  • 使用检索增强生成 (RAG) 通过引用来自可信来源的更多数据来增强模型对用户查询的回答。RAG 可提高事实准确率和回答一致性,还可让您访问比模型训练数据更新的数据。
  • 执行多模态搜索。例如,使用文本输入搜索图片。
  • 执行语义搜索,以便找到用于推荐、替换和记录去重的相似项。
  • 创建要与 k-means 模型搭配使用的嵌入以进行聚类。

支持的模型

支持以下型号:

对于较小的轻量级文本嵌入,请尝试使用预训练的 TensorFlow 模型,例如 NNLM、SWIVEL 或 BERT。

按行生成嵌入

您可以将 AI.EMBED 函数与 Vertex AI 嵌入模型搭配使用,以针对 BigQuery 标准表中的每一行生成嵌入。

AI.EMBED 函数支持以下类型的输入:

生成嵌入表

创建模型后,您可以使用 AI.GENERATE_EMBEDDING TVF 与其交互。对于所有类型的受支持模型,AI.GENERATE_EMBEDDING 适用于标准表中的结构化数据。对于多模态嵌入模型,AI.GENERATE_EMBEDDING 也适用于来自标准表包含 ObjectRef 值的列对象表的视觉内容。

对于远程模型,所有推理都在 Vertex AI 中进行。对于其他模型类型,所有推理都在 BigQuery 中进行。结果存储在 BigQuery 中。

您可以参考以下主题,尝试在 BigQuery ML 中生成嵌入:

生成两个输入之间的余弦相似度

使用 AI.SIMILARITY 函数计算两个输入的嵌入之间的余弦相似度。如果您有兴趣分析输入的相似性,但不需要直接处理嵌入,则此功能非常有用。AI.SIMILARITY 接受文本或文本与图片的任意组合,具体取决于您使用的嵌入模型类型。

AI.SIMILARITYVECTOR_SEARCH 函数支持重叠的应用场景。一般来说,如果您想执行少量比较,并且尚未预先计算任何嵌入,则应使用 AI.SIMILARITY。如果性能至关重要,并且您要处理大量嵌入内容,则应使用 VECTOR_SEARCH。您可以比较它们的功能,以便选择最适合您的使用情形的功能。

受管理的 AI 函数

托管式 AI 函数专门用于自动执行分类、排序或过滤等日常任务。这些功能使用 Gemini,无需自定义。BigQuery 会使用提示工程,并选择适合特定任务的模型和参数,以优化结果的质量和一致性。 每个函数都会返回一个标量值,例如 BOOLFLOAT64STRING,并且不包含来自模型的其他状态信息。以下是可用的受管 AI 函数:

  • AI.IF:根据提示过滤文本或多模态数据,例如在 WHEREJOIN 子句中。例如,您可以按描述的商品是否适合作为礼物来过滤商品说明。
  • AI.SCORE:根据提示对输入进行评分,以便按质量、相似性或其他条件对行进行排名。您可以在 ORDER BY 子句中使用此函数,根据得分提取前 K 个项。例如,您可以找到某产品的前 10 条最正面或最负面的用户评价。
  • AI.CLASSIFY:将文本分类为用户定义的类别。您可以在 GROUP BY 子句中使用此函数,以根据您定义的类别对输入进行分组。例如,您可以根据支持服务工单是否与结算、配送、产品质量或其他方面相关来对其进行分类。

如需查看演示如何使用这些函数的教程,请参阅使用受管 AI 函数执行语义分析

如需查看演示如何使用托管式和通用 AI 函数的笔记本教程,请参阅使用 AI 函数进行语义分析

位置

文本生成模型和嵌入模型支持的地理位置因您使用的模型类型和版本而异。如需了解详情,请参阅位置

价格

您需要为用于针对模型运行查询的计算资源付费。远程模型会调用 Vertex AI 模型,因此针对远程模型的查询也会产生 Vertex AI 费用。

如需了解详情,请参阅 BigQuery ML 价格

跟踪费用

BigQuery 中的生成式 AI 函数通过向 Vertex AI 发送请求来运行,这可能会产生费用。如需跟踪在 BigQuery 中运行的作业产生的 Vertex AI 费用,请按以下步骤操作:

  1. 在 Cloud Billing 中查看结算报告
  2. 使用过滤条件优化结果。

    对于服务,请选择 Vertex AI

  3. 如需查看特定作业的费用,请按标签过滤

    将键设置为 bigquery_job_id_prefix,并将值设置为作业的作业 ID。如果您的作业 ID 超过 63 个字符,请仅使用前 63 个字符。如果您的作业 ID 包含任何大写字符,请将其更改为小写。 或者,您也可以将作业与自定义标签相关联,以便日后查找。

某些扣款最多可能需要 24 小时才会显示在 Cloud Billing 中。

后续步骤