Databricks AI Functions 是 Databricks 平台提供的内置 SQL 和 PySpark 函数,用于在数据管道中直接调用基础模型 API。它们无需设置模型端点、无需 API 密钥、无需编写样板代码。这些函数像 UPPER() 或 LENGTH() 一样自然地操作表列,并针对大规模批量推理进行了优化。
官方文档位于 https://docs.databricks.com/large-language-models/ai-functions,各函数参考位于 https://docs.databricks.com/sql/language-manual/functions/。
用途
AI Functions 旨在将大语言模型能力嵌入数据处理流程,适用于对表列进行批量推理任务,例如情感分析、分类、实体抽取、摘要、翻译、语法修正、PII 脱敏、语义相似度比较、文档解析、RAG 分块、时间序列预测以及通过自定义端点进行任意模型调用。
主要能力
提供一系列任务特定函数:
- ai_analyze_sentiment:情感评分,输入 content STRING,输出 positive/negative/neutral/mixed 或 NULL。
- ai_classify:固定标签路由,输入内容与 2–500 个标签,输出 VARIANT({response:[label], error_message})。
- ai_extract:实体/字段抽取,输入内容与 JSON schema,输出 VARIANT,支持最多 256 字段、12 层嵌套。
- ai_fix_grammar:语法修正,输入内容,输出修正后的字符串。
- ai_gen:自由生成,输入 prompt,输出字符串。
- ai_mask:PII 脱敏,输入内容与标签数组,输出将实体替换为 [MASKED] 的字符串。
- ai_similarity:语义相似度,输入两个表达式,输出 0.0–1.0 的浮点数。
- ai_summarize:摘要,输入内容与可选最大词数,输出字符串。公共预览,面向英语调优。
- ai_translate:翻译,输入内容与目标语言,输出字符串,支持 en、fr、de、hi、it、pt、es、th。
- ai_parse_document:解析 PDF/Office/图像,输入二进制内容,输出 VARIANT(pages、elements、error_status)。需 DBR 17.3+,限制 500 页/100 MB。
- ai_prep_search:从解析文档进行 RAG 分块,输入解析后的 VARIANT,输出包含 document.contents、pages、source_uri 等。需 DBR 18.2+(serverless env v3+)。
- ai_query:调用任意服务端点(内置基础模型或自定义)、多模态、复杂 JSON(最后手段),输入端点、请求、返回类型等参数。
- ai_forecast:时间序列预测(表值函数),输入观测表、horizon、时间列、值列等,输出包含预测值、上下界的行。需 Pro 或 Serverless SQL Warehouse,公共预览。
所有函数共享基线要求:DBR 15.1+(notebooks)/ 15.4 ML LTS(batch),不支持 SQL Warehouse Classic,且区域须支持 AI Functions。
使用方式
在 SQL 中直接调用函数。例如,对反馈表进行情感分析、摘要、分类、抽取和语法修正:
SELECT id, ai_analyze_sentiment(content) AS sentiment, ai_summarize(content, 30) AS summary, ai_classify(content, '["technical","billing","other"]', map('version','2.0')):response[0]::STRING AS category, ai_extract(content, '["product","error_code","date"]', map('version','2.0')):response:product::STRING AS product, ai_fix_grammar(content) AS content_clean FROM raw_feedback;
在 PySpark 中,可在 expr(...) 内调用:df.withColumn("category", expr("ai_classify(content, '["a","b"]', map('version','2.0')):response[0]::STRING")),并通过 selectExpr("col:response:field::STRING AS field") 读取 VARIANT 字段。
PII 脱敏示例:
SELECT ai_mask(message, array('person','email','phone','address')) AS message_safe FROM raw_messages;
语义匹配/去重示例:
SELECT a.id, b.id, ai_similarity(a.name, b.name) AS score FROM companies a JOIN companies b ON a.id < b.id WHERE ai_similarity(a.name, b.name) > 0.85;
预测示例:
SELECT * FROM ai_forecast( observed => TABLE(SELECT date, sales FROM daily_sales), horizon => '2026-12-31', time_col => 'date', value_col => 'sales');
嵌套 JSON 通过 ai_query(最后手段):
SELECT from_json( ai_query('databricks-claude-sonnet-4', concat('Extract invoice as JSON with nested line_items array: ', text_blocks), responseFormat => '{"type":"json_object"}', failOnError => false).response, 'STRUCT<numero:STRING, total:DOUBLE, line_items:ARRAY<STRUCT<code:STRING, qty:DOUBLE>>>' ) AS invoice FROM parsed_documents;
文档处理管道可将 AI Functions 逐级链接到 Delta 表。示例以 Spark Declarative Pipeline(SDP / Lakeflow / DLT)编写,使用 CREATE OR REFRESH STREAMING TABLE 与 STREAM(...) 源。在 notebook 或 SQL warehouse 中独立运行,可将 CREATE OR REFRESH STREAMING TABLE x AS 替换为 CREATE OR REPLACE TABLE x AS 并移除 STREAM(...) 包装。在 SDP Python 中则是 @dp.table 配合 from pyspark import pipelines as dp。
文档处理管道分阶段:阶段 1 解析二进制文档并过滤解析错误;阶段 2 分类文档类型;阶段 3 抽取字段。批量作业中,可将逐行错误路由到侧表,避免运行崩溃:保留 ai_extract 的 result:error_message(VARIANT,冒号访问),对 ai_query 传 failOnError => false 并检查 ai_response.errorMessage(STRUCT 字段,点号访问)。
自定义 RAG 管道:解析 → 准备 → 索引。ai_parse_document → ai_prep_search(语义分块+上下文增强,DBR 18.2+)→ Vector Search Delta Sync 索引。ai_prep_search 返回 chunk_id、chunk_to_retrieve 和 chunk_to_embed(富含标题/页眉/页码)——嵌入 chunk_to_embed,向 LLM 返回 chunk_to_retrieve。启用 CDF 后使用 databricks-vector-search 技能构建 Delta Sync 索引,主键为 chunk_id,嵌入源为 chunk_to_embed,返回 chunk_to_retrieve。
超出批处理:可将输出 Delta 表指向 Genie Agent 进行自然语言查询;通过 databricks-model-serving 技能暴露为实时受治理端点;生产增量摄取可参考 databricks/bundle-examples · job_with_ai_parse_document。
适用场景
适用于需要在 Databricks 数据管道中对表列进行批量 LLM 推理的场景,包括文本分析、分类、抽取、摘要、翻译、脱敏、语义匹配、文档解析、RAG 分块、时间序列预测,以及通过自定义端点进行模型调用。
限制
每个函数调用都是一次 LLM 推理,速度较慢且按 token 计费。建议每行运行一次并将结果持久化到 Delta 表,避免在下游查询中重复调用。演示时避免生成百万行表,必要时对输入采样。模型在 Apache 2.0 或 LLAMA 3.3 Community License 下运行,合规性由用户负责。ai_summarize 为公共预览且面向英语调优。ai_forecast 需要 Pro 或 Serverless SQL warehouse,Classic 或 Starter 不可用。ai_parse_document 需 DBR 17.3+,ai_prep_search 需 DBR 18.2+。所有函数输入为 NULL 时返回 NULL。ai_translate 仅支持 en、fr、de、hi、it、pt、es、th 八种语言。ai_classify 建议使用清晰互斥标签,2–5 个标签结果更可靠。ai_query 使用旧版 databricks-* 端点名可能返回 403,需切换至 system.ai.<model>。批量作业建议使用 DBR 15.4 ML LTS 集群以获得优化吞吐。
参考文件包括 1-task-functions.md(各任务函数的完整选项/模式与示例)、2-ai-query.md(ai_query 完整参考)、3-ai-forecast.md(ai_forecast 参数与模式)。常见问题及解决方案已在资料中列出。