生成式 AI 概览

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

概览

BigQuery 提供各种 AI 函数,可帮助您执行以下操作:

  • 生成广告素材内容。
  • 分析文本或非结构化数据(例如图片)并回答相关问题。
  • 检测一段文本表达的情感。
  • 总结内容传达的主要想法或印象。
  • 将文字或音频数据的内容翻译成其他语言。
  • 从文本中提取结构化数据。
  • 将文本或非结构化数据分类到用户定义的类别中。
  • 识别相似的文本、图片和视频。
  • 按自然语言条件过滤数据。
  • 对输入内容进行评分,以便按质量、相似性或其他条件对其进行排名。
  • 识别文本或视觉数据中的一个或多个突出实体。
  • 生成与音频数据中的口头内容相匹配的文本。
  • 根据视觉数据添加字幕或执行问答。

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

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

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

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

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

      • AI.GENERATE_TABLE
    • 使用 AI.GENERATE 的表值函数版本生成文本

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

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

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

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

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

      • AI.CLASSIFY

通用 AI 函数

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

生成结构化数据

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

如需生成结构化数据,请基于任何正式版预览版 Gemini 模型创建远程模型。然后,您可以使用 AI.GENERATE_TABLE 函数与该模型进行交互。如需尝试创建结构化数据,请参阅使用 AI.GENERATE_TABLE 函数生成结构化数据

当您将 Gemini 模型与 AI.GENERATE_TABLE 函数搭配使用时,可以指定安全属性,以便过滤模型的回答。

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

按行生成特定类型的值

您可以将标量生成式 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 中托管的模型。您可以创建以下类型的远程模型

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

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

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

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

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

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

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

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

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

生成嵌入

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

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

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

支持的模型

支持以下型号:

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

使用嵌入生成模型

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

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

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

受管理的 AI 函数

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

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

位置

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

价格

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

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

后续步骤