BigQuery 推出 AI.AGG:用单条 SQL 对百万行数据做语义聚合
有效阅读仅保存在当前浏览器,用于「为你」推荐;暂停或清除记录。
DataHot 速览
Google Cloud 发布 BigQuery 原生多级语义聚合函数 AI.AGG(预览中),用分布式 map-reduce 思路解决 LLM 上下文窗口无法容纳百万行数据的问题。引擎自动完成行级校验、分批并行处理与递归汇总,用户只需一条 GoogleSQL 查询即可对非结构化文本与多模态数据执行自然语言指令。文章还介绍了内部架构、企业用例与生产部署最佳实践。
为什么值得关注:这是把 LLM 语义分析直接下沉到数仓 SQL 层的关键尝试,改变了以往需外挂 map-reduce 管道做大规模文本聚合的工程模式,对做 Text-to-SQL、语义层和非结构化数据分析的团队有直接参考价值。
本文目录 11 节
译文
AI 逐段翻译十多年来,BigQuery 一直帮助为结构化数据聚合树立标准,能够在数秒内以 PB 级规模计算财务总额、统计活跃用户并计算历史平均值。但随着现代企业被非结构化数据——应用日志、客户服务记录、产品图像和诊断报告——所淹没,一个关键缺口已经出现。
从历史上看,关系型 SQL 引擎缺乏从数百万行文本和多模态数据中聚合、综合并提取总体语义主题的原生能力。虽然 BigQuery 最近引入了强大的行级 AI 函数(如 AI.GENERATE 和 AI.CLASSIFY),但整体性分析海量数据集带来了独特的架构挑战:大语言模型(LLM)的上下文窗口。
即使使用像 Gemini 这样的先进基础模型,你也不能将数百万行传入单个提示词而不触发严重的截断或硬性执行失败。传统上,解决这个问题需要数据工程团队构建复杂的外部 map-reduce 管道、管理限流退避,并递归地将分块摘要拼接在一起。
今天,我们很高兴深入探讨 AI.AGG——目前处于预览阶段——一个原生嵌入在 BigQuery GoogleSQL 中的全托管、多级语义聚合函数。通过将语义聚合概念化为分布式 map-reduce 问题,AI.AGG 使数据团队能够使用单条 SQL 查询对数百万行数据运行自然语言指令。
下面我们来看看它的工作原理、具有变革性的企业用例,以及在生产环境中部署它的最佳实践。
在 BigQuery 中原生地将 PB 级数据转化为语义洞察。
多级批处理架构
AI.AGG 抽象了分块和并行执行的巨大工程复杂性。当你执行一个 AI.AGG 查询时,BigQuery 引擎会在数据库内原生地自动编排一个序列:
- 行级验证:引擎帮助验证没有任何单行超过最大上下文窗口(对超过 10 MiB 的负载进行丢弃或返回错误)。
- 上下文安全的批处理:引擎将输入行动态分组为较小的批次,使其安全地适配你所选 Gemini 端点的 token 限制。
- 并行推理:你的自然语言 SQL 提示词被并行应用于每个批次,通过 Vertex AI 生成中间语义摘要。
- 递归合成:最后,系统将这些中间输出分批处理,并以完全相同的指令传回给 LLM。这种归约会递归重复,直到为每个 SQL
GROUP BY子句生成单个最终的聚合字符串。
由于 AI.AGG 需要进行深度推理以综合跨不同批次的概念,它在其管道的每个阶段都完全依赖全权重 LLM——这使其区别于像 AI.CLASSIFY 这样的行级函数,后者可以利用蒸馏的 CPU 代理模型。
为多模态企业而构建
AI.AGG 原生支持文本和多模态输入。通过利用 BigQuery 对象表和 OBJ.GET_ACCESS_URL 函数,分析团队可以聚合直接存储在 Cloud Storage 中的数千张图像的视觉洞察,无需任何数据移动或转码。
数据工程专业提示:NULL 排他性规则
在评估多个列时,用户通常会将一个 STRUCT 传入函数。然而,如果该复合结构中的哪怕一个字段求值为 NULL,整个行就会被视为 NULL 并被静默丢弃。始终使用 IFNULL() 显式包装可空字段(例如 IFNULL(description, 'No data provided')),以帮助确保你的数据安全地进入管道。
具有变革性的企业用例
AI.AGG 的真正分析能力在与标准 SQL 操作结合时就会显现出来。GROUP BY 操作。
1. 高容量系统日志的诊断分析
由全球分布式微服务生成的系统日志往往隐藏着微妙的劣化(如内存抖动或系统性时钟漂移),这些劣化从未抛出明确的致命错误。使用 AI.AGG,DevOps 团队可以按系统组件对数百万条日志进行分组,并生成有针对性的、人类可读的诊断摘要。
- 提示技巧:指示模型在寻找异常之前先明确描述组件的"正常运行"。这有助于抑制 LLM 在完全健康的日志上幻觉出错误的倾向。
2. 构建"智能体数据云"
AI.AGG 不仅是分析报告工具;它还是一个动态编排引擎。想象一下获得一个庞大的遗留支持工单存储库,且没有清晰的分类。你可以部署 AI.AGG 来读取原始文本,综合出一个确定的类别列表,并将其输出为严格的 JSON 数组。
通过 JSON_VALUE_ARRAY 解包此数组,并将这些动态标签直接馈入像 AI.CLASSIFY 这样的行级分类器,你可以在 SQL 中原生地编排一个端到端的自主数据标注管道——减少对外部 Python 脚本的需求。
提示词工程就是数据工程
当将生成式模型集成到高度确定性的 SQL 管道中时,标准的对话式提示词往往会失败。为程序化 SQL 输出设计提示词是一门严格的工程学科:
- 显式输出契约:将提示词视为 API 契约。附加如下命令:"仅返回一个有效的 JSON 字符串数组。不要包含 markdown 代码块或对话性文本。"
- 上下文分隔符:使用带有显式标签的字符串拼接(例如
'- Description: ')来锚定 LLM,并防止它在密集批次中混淆字段。 - 失败状态设计:明确指示模型对缺失信息返回严格的 null 值而不是猜测,从而防止下游出现模式幻觉。
- 少样本锚定:在提示中提供一个你期望结构的字面示例,以强烈约束模型的注意力机制。
治理、成本管理与防护措施
将语义工作负载迁移到生产环境需要运维监督。由于采用递归批处理架构,发送给 Gemini 的总 token 数将大于源数据的 token 数。为降低成本,应强制实施严格的 WHERE 和 LIMIT 预过滤。
此外,对于交叉引用大规模静态数据集的工作流,BigQuery 支持 Gemini 上下文缓存,可降低输入 token 成本和执行延迟。使用 AI.COUNT_TOKENS 工具在执行前估算查询成本。
管理员可以放心运行,因为 AI.AGG 严格在 BigQuery 的治理框架内工作,支持 VPC Service Controls(VPC-SC)以防止数据外泄。此外,如果批处理过程中发生瞬时错误,该函数会优雅降级——跳过被拒绝的行,而不是让整个查询崩溃。
需要留意的预览版防护措施:
- 每个 SQL 组的最终输出字符串严格限制为每组 10,000 个 token。请要求模型输出简洁内容
- 单个载荷行不得超过 10 MiB。
- 处理多模态数组时,每行的图像资产应限制在 10 张以内,以避免静默跳过。
为获得最佳稳定性,我们建议每次查询最多处理 2000 万行,并最多输出 1,000 个不同的 SQL 组。
将 AI.AGG 付诸实践
为帮助你入门,以下示例展示了如何使用 AI.AGG 结合传统 SQL 指标来综合洞察。
宏观层面主题发现
总结特定顶级作者谈论的内容,将他们的数千条评论转化为简洁的叙述
加载中...
面向 DevOps 的自主诊断报告(日志分析)
不要只统计标准 HTTP 错误码,而应使用 AI.AGG 读取数千条原始堆栈跟踪和日志消息,按微服务名称分组,以发现系统性故障的定性根因。
加载中...
数据仓库的下一个时代
借助 AI.AGG,Google Cloud 正在让 PB 级语义分析能力触手可及。通过将 BigQuery 关系引擎的确定性分组能力与 Vertex AI Gemini 的宏观推理能力相结合,我们正在将企业数据仓库从被动的历史指标存储库转变为能够提供深度、整体智能的主动语义运行时。
准备好释放企业数据的语义价值了吗?前往 Google Cloud 控制台,浏览 BigQuery 文档,今天就运行你的第一次语义聚合。
发布于
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏