拓冰建站拓冰建站
首页 / 资讯中心 / 正文

BigQuery AI.IF:在 SQL 中用自然语言语义条件过滤与筛选数据(Google Agent Skills 之 BigQuery AI ML)

BigQuery AI.IF在 SQL 中用自然语言语义条件过滤与筛选数据Google Agent Skills 之 BigQuery AI ML【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills本文围绕 Google Agent Skills 仓库中bigquery-ai-ml技能下的AI.IF参考文档展开讲解这个语义布尔函数如何用一句自然语言甚至多模态输入判断某一行是否满足某个条件从而在WHERE与连接条件中直接做语义过滤。读完后你将掌握AI.IF的完整语法、参数与返回值约定并能结合仓库中的远程模型Remote Model与连接配置文档写出可复制运行的语义筛选查询同时理解它与AI.SCORE、AI.CLASSIFY、AI.SEARCH在选型上的差异。一、AI.IF 是什么语义布尔函数AI.IF是 BigQuery 内置的语义布尔函数semantic boolean function用于评估一段用自然语言描述的条件。它由 BigQuery 与 Vertex AI 集成提供——bigquery-ai-ml技能的主文档 SKILL.md 开篇即说明BigQuery 通过与 Vertex AI 集成在 SQL 查询中直接使用AI.FORECAST、AI.KEY_DRIVERS、AI.GENERATE等内置函数AI.IF正是其中的按语义条件过滤filter by semantic conditions能力之一。与传统的基于关键字、正则或精确匹配的谓词不同AI.IF的条件是对文本/数据语义含义的判断。原始参考文档 ai_if.md 明确列出它的定位可以基于自然语言或多模态输入描述的条件来过滤filter和连接join数据。二、典型使用场景参考文档 ai_if.md 给出了四类常见用例场景说明情感分析Sentiment analysis找出带有负面情感的客户评论主题分析Topic analysis识别与某一主题相关的新闻文章图像分析Image analysis选出包含特定物品的图像安全Security识别可疑邮件这四类场景的共同点是判断标准难以用确定性谓词表达负面情绪、可疑、包含某物品但用一句自然语言向模型描述却非常自然——这正是把 LLM 调用下沉到 SQL 引擎内的价值所在。三、语法与参数语法参考AI.IF( [ prompt ] PROMPT [, connection_id CONNECTION_ID ] [, endpoint ENDPOINT ] )语法出自 ai_if.md输入参数参数是否必需类型说明prompt必需String/Struct提示词文本或(data, instruction)形式的 struct/tupleconnection_id可选String供 LLM 使用的云资源连接 IDendpoint可选String模型端点例如gemini-2.5-flash两个参数的使用要点prompt的两种形态。直接传字符串时整个提示词就是一个静态字面量传(data, instruction)结构体时data可以是行级别的列值instruction是判断条件。参考文档的示例采用的就是后者——content_column数据来自每一行而Is this review positive?是固定的判断指令。这意味着AI.IF作为标量函数可以逐行求值条件本身不需要为每行改写。connection_id与endpoint的配置方式。本仓库的远程模型参考文档 remote_models.md 说明了这套参数背后的机制生成式函数需要一个指向具体端点如 Gemini的远程模型通过连接connection与 Vertex AI 交互。连接 ID 采用project.region.connection_id的全限定形式例如文档中出现的my-project.us.my-connection若使用REMOTE WITH CONNECTION DEFAULT则自动尝试使用该区域下的默认连接。文档中给出的端点示例gemini-2.5-flash与 remote_models.md 列出的可用生成式端点gemini-2.5-pro、gemini-2.5-flash一致。输出 Schema列名类型说明(标量结果)BOOL条件满足返回TRUE否则返回FALSE发生错误或命中安全过滤器safety filter时返回NULLNULL语义在实战中很关键由于WHERE子句遵循标准 SQL 布尔语义值为NULL的行不会被保留。也就是说当某行的模型调用失败或内容触发安全过滤时该行会被当作不满足条件而排除在结果之外。编写语义过滤查询时应当预期这种行为必要时可先用SELECT AI.IF(...) FROM ...单独观察NULL的比例再决定是否需要兜底逻辑。四、实战示例1. 基于语义含义过滤行原文档示例参考文档 ai_if.md 给出的标准用法是把AI.IF放进WHERESELECT * FROM dataset.table WHERE AI.IF( (content_column, Is this review positive?) );这条查询会保留评论为正面的行。content_column是任意承载非结构化文本的列instruction决定了筛选方向把指令换成Is this review negative?即实现文档所列的找出负面情感评论场景。2. 在 JOIN 中作为连接条件原文档指出AI.IF不仅可用于 filter也可用于 join。基于其布尔谓词的本质可以推断它在语义匹配类连接中的写法例如按描述是否对应该图片内容连接两张表SELECT p.product_id, p.name, i.uri FROM products p JOIN image_meta i ON AI.IF( (p.description, Does this product description match the image content?) );上述 JOIN 示例是依据原文档filter and join data based on conditions described in natural language的说明组织的用法示意ON中传入结构体的具体列组合请以实际表结构与模型支持为准。3. 多模态判断的模式参考文档把AI.IF描述为支持natural languageor multimodal input的条件判断并给出了选出包含特定物品的图像这一用例。结合本仓库其他 AI 函数参考文档中的多模态用法——例如 ai_similarity.md 中通过外部对象表与OBJ.GET_READ_URL(ref)将 GCS 图片作为ObjectRef传入、ai_agg.md 中STRUCT(OBJ.GET_ACCESS_URL(ref, r))作为多模态输入——可以推断对图像做AI.IF判断时同样可以把图像引用对象放入prompt的数据位如(image_ref, Does this image contain a bicycle?)具体支持的数据形态以当前版本函数的实际行为为准。五、AI.IF 与同族 AI 函数的选型对比bigquery-ai-ml技能下有一整套 AI 函数参考完整清单见 SKILL.md。围绕语义判断这一主题几个函数在参数形态上高度相似但输出类型与适用姿势不同对比如下函数输出类型定位适合的问题AI.IFBOOL错误/安全过滤为NULL语义条件过滤/连接这一行是否满足某个自然语言条件是/否AI.SCOREFLOAT64语义打分排序这些行与指令的相关度排序如何配合ORDER BY ... DESC LIMIT nAI.CLASSIFYSTRING/ARRAYSTRING预定义类别分类这一行属于哪几个给定类别标签集合必须预先给定AI.SEARCH表basedistance基于自主嵌入生成的语义搜索与查询语义最接近的 Top-K 行是哪些依赖表级嵌入机制不同从参考文档可以归纳出清晰的选型路径只要布尔结论过滤、打标签、入/排除用AI.IF注意其NULL会在过滤中隐式丢弃该行的行为。需要连续分数与 Top-N 排序AI.SCORE的prompt/connection_id/endpoint参数形态与AI.IF完全一致见 ai_score.md可无缝替换例如找出最负面的 5 条评论。条件本质是有限个预定义标签之一AI.CLASSIFY更直接且支持output_mode multi多标签输出。查询是开放式的相似性检索且表已启用自主嵌入生成generated_expression元数据为AI.EMBED(source_column)优先AI.SEARCH它走嵌入距离top_k、distance_type等参数而非逐行 LLM 判断。从函数签名结构看AI.IF、AI.SCORE这类逐行标量函数在大数据集上每一行都会触发一次模型调用与AI.SEARCH基于向量的检索机制在成本与延迟特征上有本质差异——这是从各参考文档的函数形态标量函数 vs 表值函数可以推断出的选型依据具体量级请以实际工作负载实测为准。六、适用前提与注意事项模型与连接前提生成式函数依赖指向 Gemini 等端点的远程模型与云资源连接端点示例gemini-2.5-flash、gemini-2.5-pro与连接全限定格式project.region.connection_id均以 remote_models.md 为准若走CONNECTION DEFAULTBigQuery 会尝试使用该区域的默认连接。NULL的过滤语义错误或命中安全过滤器时返回NULL在WHERE/JOIN中该行为被排除。对数据完整性要求高的场景建议单独查询NULL占比并做兜底。指令是字面量instruction部分应是字符串字面量或查询参数随数据变化的是data部分——这也是参考文档示例中(content_column, Is this review positive?)的写法惯例。技能边界bigquery-ai-ml技能的 SKILL.md 明确指出该技能用于编写时间序列预测、异常检测、语义搜索、向量搜索、文本分类、相似度、摘要、翻译、模型评估、按语义条件过滤等 SQL不适用于通用的数据集/表/作业管理请求后者应参考 bigquery-basics 技能。参考文件本文主体文档ai_if.md技能入口与函数索引SKILL.md远程模型与连接配置remote_models.md相关函数参考ai_score.md、ai_classify.md、ai_search.md、ai_agg.md【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门