生成式 AI 概览
本文档介绍了 BigQuery 支持的生成式人工智能 (AI) 函数。这些函数接受自然语言输入,并使用预训练的 Vertex AI 模型和内置的 BigQuery 模型。
概览
BigQuery 提供各种 AI 函数,可帮助您完成以下任务:
- 生成广告素材内容。
- 分析文本或非结构化数据(例如图片)、检测情感并回答相关问题。
- 总结内容传达的主要想法或印象。
- 从文本中提取结构化数据。
- 将文本或非结构化数据分类到用户定义的类别中。
- 生成嵌入,以搜索类似的文本、图片和视频。
- 对输入内容进行评级,以便按质量、相似性或其他条件对其进行排名。
有两大类 AI 函数可帮助您完成这些任务:
通用 AI 函数:借助这些函数,您可以完全控制和透明地选择要使用的模型、提示和参数。
执行推理,例如回答有关数据的问题
AI.GENERATE是最灵活的推理函数,可让您分析文本和非结构化数据的任意组合,并输出符合自定义架构的结构化数据。如果您需要特定类型的输出,请选择以下更专业的推理函数之一:
AI.GENERATE_BOOLAI.GENERATE_DOUBLEAI.GENERATE_INT
生成结构化输出,例如从非结构化文本中提取姓名和地址
AI.GENERATE,当您指定output_schema时AI.GENERATE_TABLE
使用
AI.GENERATE的表值函数版本生成文本AI.GENERATE_TEXT
为语义搜索和聚类生成嵌入
AI.EMBEDAI.GENERATE_EMBEDDINGAI.SIMILARITY
受管理的 AI 函数:这些函数具有简化的语法,并针对成本和质量进行了优化。BigQuery 会为您选择模型。
使用自然语言条件过滤数据
AI.IF
对输入内容进行评分,例如按质量或情感色彩评分
AI.SCORE
将输入内容分类到用户定义的类别中
AI.CLASSIFY
通用 AI 函数
借助通用 AI 功能,您可以完全控制并透明地了解所用模型、提示和参数的选择。其输出内容包括有关模型调用的详细信息,包括状态和完整的模型响应,其中可能包含有关安全评级或引用的信息。
生成结构化数据
结构化数据生成与文本生成非常相似,不同之处在于,您可以通过指定 SQL 架构来设置模型回答的格式。例如,您可以根据电话通话记录生成一个表格,其中包含客户的姓名、电话号码、地址、请求和报价。
您可以通过以下两种方式生成结构化数据:
AI.GENERATE函数会调用 Vertex AI 端点,并可使用自定义架构生成STRUCT值。如需试用,请参阅如何在调用
AI.GENERATE函数时使用结构化输出。AI.GENERATE_TABLE函数会调用远程模型,并且是一个表值函数,可生成具有自定义架构的表。如需尝试创建结构化数据,请参阅使用
AI.GENERATE_TABLE函数生成结构化数据。
按行生成特定类型的值
您可以将标量生成式 AI 函数与 Gemini 模型搭配使用,以分析 BigQuery 标准表中的数据。数据包括文本数据和来自包含 ObjectRef 值的列的非结构化数据。对于表中的每一行,这些函数都会生成包含特定类型的输出。例如,您可以分析家居用品的图片,为 design_type 列生成文本,以便家居用品 SKU 具有关联的说明,例如 mid-century modern 或 farmhouse。
以下 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函数,根据您在查询中指定的提示或从标准表中的列中提取的提示生成文本。在查询中指定提示时,您可以在提示中引用以下类型的表列:STRING列,用于提供文本数据。STRUCT列,使用ObjectRef格式提供非结构化数据。您必须在提示中使用OBJ.GET_ACCESS_URL函数将ObjectRef值转换为ObjectRefRuntime值。
使用
AI.GENERATE_TEXT函数分析对象表中的文本、图片、音频、视频或 PDF 内容,并将您提供的提示用作函数参数。
对于所有其他类型的远程模型,您可以将
AI.GENERATE_TEXT函数与您在查询中提供的提示或标准表的某一列中的提示搭配使用。
使用以下主题尝试在 BigQuery ML 中生成文本:
- 使用 Gemini 模型和
AI.GENERATE_TEXT函数生成文本。 - 使用 Gemma 模型和
AI.GENERATE_TEXT函数生成文本。 - 使用 Gemini 模型分析图片。
- 将
AI.GENERATE_TEXT函数与您的数据结合使用来生成文本。 - 使用数据调优模型。
当您将 Gemini 模型与 AI.GENERATE_TEXT 函数搭配使用时,可以使用接地和安全属性,前提是您将标准表用于输入。通过接地功能,Gemini 模型可以使用互联网上的其他信息来生成更具体的真实回答。借助安全属性,Gemini 模型可以根据您指定的属性过滤其返回的回答。
对于某些模型,您可以选择配置监督式调优,以便使用自己的数据训练模型,使其更适合您的使用场景。所有推理都在 Vertex AI 中进行。 结果存储在 BigQuery 中。
对于受支持的 Gemini 模型,您可以使用 Vertex AI 预配吞吐量来为请求提供一致的高吞吐量。如需了解详情,请参阅使用 Vertex AI 预配吞吐量。
生成嵌入
嵌入是一种表示给定实体(如一段文本或音频文件)的高维数值向量。通过生成嵌入,您可以捕获数据的语义,从而更轻松地推断和比较数据。
嵌入生成的一些常见应用场景如下:
- 使用检索增强生成 (RAG) 通过引用来自可信来源的更多数据来增强模型对用户查询的回答。RAG 可提高事实准确率和回答一致性,还可让您访问比模型训练数据更新的数据。
- 执行多模态搜索。例如,使用文本输入搜索图片。
- 执行语义搜索,以便找到用于推荐、替换和记录去重的相似项。
- 创建要与 k-means 模型搭配使用的嵌入以进行聚类。
如需详细了解如何生成嵌入并使用它们来执行这些任务,请参阅嵌入和向量搜索简介。
托管式 AI 函数
托管式 AI 函数专门用于自动执行分类、排序或过滤等日常任务。这些功能使用 Gemini,无需自定义。BigQuery 会使用提示工程,并选择适合特定任务的模型和参数,以优化结果的质量和一致性。
每个函数都会返回一个标量值,例如 BOOL、FLOAT64 或 STRING,并且不包含来自模型的其他状态信息。以下是可用的受管 AI 函数:
AI.IF:根据提示过滤文本或多模态数据,例如在WHERE或JOIN子句中。例如,您可以按描述的商品是否适合作为礼物来过滤商品说明。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 费用,请按以下步骤操作:
- 在 Cloud Billing 中查看结算报告。
使用过滤条件优化结果。
对于服务,请选择 Vertex AI。
如需查看特定作业的费用,请按标签过滤。
将键设置为
bigquery_job_id_prefix,并将值设置为作业的作业 ID。如果您的作业 ID 超过 63 个字符,请仅使用前 63 个字符。如果您的作业 ID 包含任何大写字符,请将其更改为小写。 或者,您也可以将作业与自定义标签相关联,以便日后查找。
某些扣款最多可能需要 24 小时才会显示在 Cloud Billing 中。
监控
为了更好地了解您在 BigQuery 中调用的 AI 函数的行为,您可以启用请求和响应日志记录。如需记录发送到 Vertex AI 和从 Vertex AI 接收的整个请求和响应,请按以下步骤操作:
在 Vertex AI 中启用请求-响应日志。日志存储在 BigQuery 中。 您必须为每个不同的基础模型和区域分别启用日志记录。如需记录在
us区域中运行的查询,请在请求中指定us-central1区域。如需记录在eu区域中运行的查询,请在请求中指定europe-west4区域。使用 AI 函数运行查询,该函数使用您在上一步中启用了日志记录的模型调用 Vertex AI。
如需查看完整的 Vertex AI 请求和响应,请查询日志记录表,查找
full_request列的labels.bigquery_job_id_prefix字段与您的作业 ID 的前 63 个字符相匹配的行。您可以选择使用自定义查询标签,以便在日志中查找查询。例如,您可以使用类似于以下内容的查询:
SELECT * FROM `my_project.my_dataset.request_response_logging` WHERE JSON_VALUE(full_request, '$.labels.bigquery_job_id_prefix') = 'bquxjob_123456...';
后续步骤
- 如需了解 BigQuery 中的 AI 和机器学习,请参阅 BigQuery 中的 AI 和机器学习简介。
- 如需详细了解如何对机器学习模型执行推理,请参阅模型推理概览。
- 如需详细了解生成式 AI 模型支持的 SQL 语句和函数,请参阅生成式 AI 模型的端到端用户体验历程。