在 pandas 中直接调用 BigQuery AI 函数

BigFrames(BigQuery DataFrames)新增了一个 .bigquery 访问器,让 pandas 用户能直接在 DataFrame 上调用 BigQuery 的 AI 函数。以前在 pandas 里做线性回归,通常要把数据搬到本地、手工选特征,再训练 scikit-learn 模型;现在用 ai.predict() 一次函数调用即可在 BigQuery 上执行回归,结果仍以标准 pandas DataFrame 返回。

访问器底层由 BigQuery DataFrames 库驱动,把 pandas 操作翻译成 Google Standard SQL,然后推送到 Google Cloud 执行。调用 ai.predict() 时,回归不会在本地计算,而是由 BigQuery 原生运行对应的基础模型(如 TabFM),最后再把结果映射回 pandas。整个开发过程不用离开 pandas 接口。开始使用前,需要在 Google Cloud 项目中授予 BigQuery Job User 和 Agent Platform User 两个角色,安装 pandas 与 bigframes,并在导入时指定项目 ID。

挂在 pandas Series 上的 AI 函数接收单列输入。ai.embed() 能为整列文本生成向量 embedding,返回原生 pandas Series。ai.similarity() 计算余弦相似度,目标可以是标量字符串也可以是另一个 Series,既能做单个概念的语义匹配,也能对两个 Series 做逐对比较,输出浮点 Series,方便继续过滤或排序。

DataFrame 级别的函数处理多列表格或复杂提示。ai.forecast() 用 TimesFM 做分组时序预测,只需指定目标指标、时间戳列、分组键和预测范围(例如三天),返回的 DataFrame 带有预测值、置信水平和预测区间。通过 model 参数可以换模型版本,例如 TimesFM 3.0,该版本目前已是 BigQuery 的 Preview 功能,并在 GIFT-Eval、FEV-Bench、TIME 三个时序预测基准上排名第一。ai.if_() 则用自然语言条件逐行判断,返回布尔 Series,可直接用作过滤掩码。它默认使用 optimization_mode=”minimize_cost”,即先由本地蒸馏模型处理大部分行,只把剩余行发给 Gemini,以减少大型数据集上的成本与延迟;如果想把每一行都交给 LLM,可以改成 “maximize_quality”。

目前支持的 Series AI 函数包括:embed()、generate_embedding()、generate_table()、generate_text()、similarity();DataFrame AI 函数包括:classify()、forecast()、generate()、generate_bool()、generate_double()、generate_int()、if_()、predict()、score()。覆盖了 embedding、自然语言生成、零样本分类、回归、时序预测、评分等任务。

整体来看,这个访问器把 BigQuery 的 AI 能力直接嵌进 pandas 数据结构,很适合想在云上跑模型、但又不愿离开 Python 生态的数据科学工作流。要注意的是,使用前需要配置 Google Cloud 项目和相应权限,模型执行也依赖 BigQuery 基础设施。

BigQuery AI Functions in Pandas

查看原文