GenAI
用大白话向数据提问:先从你的 BI 工具或数据平台入手,什么时候该自建
在已经存放你的报表或数据的工具里测试 AI,比如 Power BI、Tableau、Snowflake 或 Databricks。如果答案要放进你自己的产品,或者数据所在的位置是这些工具够不到的,就自己建。无论怎么选,主要风险都是一个看起来对的错误数字,所以要先对齐你的指标定义,并用你已知的答案来测试。
作者:amBrain阅读需 10 分钟
本文内容
向数据提问的助手,让你的员工直接输入一个问题,比如“上个季度各地区的毛利率是多少?”,就能拿回一个数字或一张图表。在这类产品里,多数是由语言模型(ChatGPT 背后的那类 AI)把问题转成数据库查询,再由数据库来计算。你的商业智能(BI)工具或数据平台可能已经提供了这样的功能,所以先测试它们,只有在这些工具覆盖不了的情形下,才自己动手建。无论走哪条路线,大部分工作都花在对齐指标的含义上。
简短的回答:如果你的报表已经放在 Power BI 或 Tableau 里,而且大多数问题都围绕这些报表,先测试这个工具的 AI。如果你的数据放在 Snowflake 或 Databricks 里,分析师又被一次性的提问压得喘不过气,就测试那个平台的助手。当答案要放进你的产品、交给你自己的客户,或者某个问题所需的数据来自这些工具够不到的系统时,再自己建。在买任何东西之前,先写下你们公司如何计算主要指标,并收集一批你已经知道答案的问题。
一个大白话问题是怎样变成一个数字的?
助手读取你的问题,用你的数据工具能理解的语言写出一条查询。数据库用 SQL,Power BI 用一种叫 DAX 的语言。数据库或 BI 工具运行这条查询并返回结果,助手再把结果展示为一个数字或一张图表。Tableau Agent in Pulse 的做法不同。它对你已经定义好的指标做统计检验,并描述发现的结果。
Databricks 说,它的 Genie 产品使用你表中的名称和描述,“把自然语言问题转换成等价的 SQL 查询”。对于实际运行的那条查询,合计数是对的,因为是数据库做的加总,但那条查询未必是你想要的那一条。
助手会不会给出一个看起来对、实际上错的数字?
查询出错时,通常会有报错,有人可以去查原因。而一条能运行、却数错了东西的查询,给你的是一张干净的图表,上面是错误的数字,屏幕上没有任何提示。仍然包含退款的营收,看上去和其他营收数字没有两样。公司按财年报告,而图表给的却是日历季度的数字,也是一样。
供应商在自己的文档里就提醒过这一点。微软关于负责任地使用 Copilot 的页面说:“Copilot 的回复可能包含不准确或低质量的内容,所以在把输出用到你的工作中之前,请务必审阅”。Tableau 说,生成式 AI“可能会产生听起来合理、但包含错误或无关信息的输出”。
微软还说,如果某个问题与语义模型无关(语义模型是向 Copilot 描述你的数据的),它就会“依据大语言模型(LLM)的通用知识作答”。所以,答案可能根本不是来自你的数据。其指引还补充说,“AI 的行为是非确定性的”,也就是说,同一个问题可能得到不同的答案。
为什么要先对齐指标定义?
数据库表里只有列名和数值。它不知道你们公司算营收时是扣除退款之前还是之后,而这类知识往往存在财务的电子表格里,或者只在某个人的脑子里。语义模型就是把这些含义写下来给软件看的地方,比如哪些表可以关联,每个指标怎么计算。
Snowflake 的文档说:“通用 AI 方案在只拿到数据库结构时,往往难以完成文本到 SQL 的转换,因为数据库结构里缺少业务流程定义和指标处理方式这类关键知识”。微软告诉语义模型的所有者:“如果不做准备,Copilot 可能误解数据,返回笼统或不准确的结果”。
你也可以手动设定常见问题背后的精确逻辑。Power BI 称之为已验证答案,Snowflake 称之为已验证查询。Databricks 有可信资产,它描述为“其精确逻辑已由智能体作者验证的参数化示例查询和 SQL 函数”。即便如此,微软也说它的准备功能“无法保证每次都得到特定的输出”。
如果销售和财务各有一个营收数字,任何软件都解决不了。必须由资深的人来决定哪种定义说了算,并在演示之前写下来。
BI 工具内置的 AI 能给我们什么?
Power BI 的 Copilot 基于你现有的语义模型运行,所以此前做过的工作可以复用。微软把报表旁边的面板列为已正式发布。全屏的独立聊天仍处于预览阶段,微软表示它“将被淘汰”,时间是在后续阶段,届时目前在 Power BI 内处于公开预览的 Microsoft Copilot 将成为主要体验。目前没有确定日期,微软说它“将公布最终的淘汰日期”。
Power BI 的 Copilot 需要“付费 Fabric 容量(F2 或更高)或 Power BI Premium(P1 或更高)”,也就是由贵公司付费的一块算力,所以仅有按人头的 Pro 许可证是不够的。较新的 Copilot 条件不同,因为微软说“在这种情形下,你无需使用 Fabric 中的 Copilot,也无需有权使用 F SKU”,所以要问清楚你手里的许可证对应的是哪一种。
Tableau 为此有两个助手。Tableau Agent in Dashboards 让人们在已发布的仪表板上输入问题,Tableau 说它“会查询底层数据源”。它需要 Tableau Cloud 上的 Tableau Cloud+ 版本或 Tableau+ 套件,或者 Tableau Server 上从 2026.3 版起的 Tableau Server+,目前仍在测试阶段。Tableau Agent in Pulse,在 Tableau 的帮助页面中被称为 Tableau Cloud 的“一项 Tableau+ 功能”,根据你已经定义好的指标作答。它“无法回答关于指标中未使用的列、或关于数据源元数据的问题”。Tableau 说,Pulse 的洞察始于“标准化的、确定性的统计模型,用来发现指标方面的事实”,而你读到的语句,是根据这些事实生成的。
助手只能看到已为报表设置好的内容,所以没人加进模型的字段,它就用不了。Copilot 用哪个语言模型,由微软选定。对于使用其他语言工作的员工,微软说 Copilot 的功能“表现可能不如”英语。Tableau Server 则不同,因为它“依赖于连接并使用你自己的 LLM 提供方”。
数据平台的助手能给我们什么?
这些助手基于你接入的表工作,所以能触及从未进入报表的数据。这些表就是边界。Databricks 说,Genie 智能体“只使用明确关联的数据源”,最多 50 张表或视图,并建议“尽量控制在五张表以内”。Snowflake 的 Cortex Analyst 根据“Snowflake 中的结构化数据”作答,不过 Snowflake 现在“建议改用 Cortex Agents,它支持 Cortex Analyst 的全部能力,并且答案质量更高”。
Databricks 提供 Genie,数据团队用“可信的数据、指标和业务规则”设置 Genie 智能体,员工通过 Genie One 提问。
你这边必须有人为你的数据写好描述,因为用 Databricks 的话说,“Unity Catalog 中高质量的表和列描述,对 Genie 的准确性至关重要”。Databricks 还说:“Genie 智能体所用的数据必须在 Unity Catalog 中注册”,它是存放表和权限的集中清单。平台之外的任何数据,都要先迁入或接入。
在数据处理方面,Snowflake 说 Cortex Analyst“不会用客户数据进行训练”。它还说“你不能直接选择模型”,因为每个请求都会交给你的角色可用的、排名最高的模型,这份清单从 Anthropic Claude Sonnet 4.6 开始,到 Mistral Large 2 和 Llama 3.1 70b 为止。
在这些路线中,语言模型由供应商或其指定的合作方运行,Databricks 列出了 Azure OpenAI 服务和 OpenAI on Databricks,用于聊天模式下的 Genie 智能体。Tableau Server 是例外,它连接的是你自己的模型提供方。如果你的规则要求使用你掌控的服务器,下文链接的那篇关于私有 ChatGPT 的文章,讲了这需要做什么。
什么时候值得自己建?
定制开发,是围绕语言模型为你量身做的软件。它按你自己的定义把问题转成查询,并把答案送到你指定的任何地方。只要满足下面至少一条,自建就值得:
- 答案放进你自己的产品,面向你自己的客户
- 有一个问题所需的数据,来自供应商工具够不到的系统,比如数据仓库之外还有一套自研的后台系统
- 你的规则要求数据和模型必须留在你掌控的服务器上
- 你需要所选供应商工具不具备的行为,比如拒绝回答任何不在已批准指标清单之内的问题
如果你的数据已经放在同一个平台上,可以先走一小步。Snowflake 把 Cortex Analyst 作为 REST API 提供,这是其他程序可以调用的接口,用于“自定义聊天界面”之类的场景,而它现在推荐的 Cortex Agents 也可以用同样的方式调用。Databricks 说,你可以“把 Genie 智能体集成到你自己的聊天机器人、智能体或应用中”。界面由你来做,查询由平台来写。
如果问题来自你们自己的员工,而且有一个平台的助手就能通过你的测试,自建就很难说得通。自建也解决不了定义不清的问题。如果你还说不清营收是怎么算的,定制开发给出的数字同样是错的,而且花费更高。上线之后,维护由你自己负责,下面几篇文章讲了谁能做这项工作,以及 AI 试点为什么会停滞。
助手会不会把没有权限查看的数据展示给别人?
行级安全(RLS)的作用是,比如不让区域经理看到自己所辖区域以外的任何区域。它必须在数据所在之处强制执行,因为助手指令里的一句话,拦不住一条读取表的查询。各条路线的处理方式各不相同:
- Power BI:“Copilot 只能访问当前用户有权访问的数据”。微软补充说,“当必须强制执行 RLS 时,内容的使用者和创建者对底层语义模型只能拥有读取权限,这一点至关重要”,因为权限更高的人,行级安全可能不适用
- Tableau:对于 Pulse 中的指标,“用户查看指标时看到的数据,遵守应用于数据源的行级安全”,Tableau 还说 Tableau Agent in Dashboards 的运作方式是“严格遵守你现有的所有 Tableau 权限、访问控制和行级安全”
- Snowflake:生成的查询“遵守所有已建立的访问控制”,底层表上设置的行访问策略“会传递到语义视图并被强制执行”。行访问策略需要企业版或更高版本,而且能查询某个语义视图的人,“无需另外获得其底层表的访问权限”,所以仅靠表的授权,无法把不同的人隔开
- Databricks:“数据访问始终按每位终端用户自己的 Unity Catalog 权限来评估”,Unity Catalog 中的行过滤器“按用户自动强制执行”
- 定制开发:你的软件必须把每个人的身份一路传到数据库,否则每个问题都在同一个共享账号下运行,大家看到的就是这个账号能看到的一切。Snowflake 面向多客户产品的指南说:“Snowflake 不对你的终端用户做身份验证;由你的应用服务器来做。”对于一个专为 AI 智能体建立的 Power BI 连接,微软警告说:“使用服务主体身份验证时,Power BI 不强制执行 RLS”,也就是以软件账号登录
访问规则也可能让助手说出错误的话。Snowflake 的一份开发指南列举过这样的情形:智能体报告某个地区没有营收。指南给出的原因是:“行访问策略隐藏了那些行,而智能体分不清是被隐藏还是本来就没有”。请让助手说明,它的结果只涵盖当事人有权查看的内容,并用本不该看到这些数据的账号,逐个角色测试。
向数据提问的助手要花多少钱?
在大多数路线上,你要为两样东西付费。算力,是在你的数据上运行查询的计算能力。模型用量,涵盖把问题转成查询的过程,多数供应商按 token 计费,token 是语言模型读取和写出的文本片段。Snowflake 的 Cortex Analyst 通过自己的 API 调用时按消息计费。下面的价格以美元计,取自供应商为美国地区公布的价格:
- Power BI:Power BI 的 Copilot 使用你付费的 Fabric 或 Premium 容量,每 1000 个输入 token 消耗 100 个容量单位秒,每 1000 个输出 token 消耗 400 个。Azure 公开的零售价目表显示,在美国东部按需付费,每容量单位每小时 0.18 美元,所以微软示例中 2000 个输入 token 和 500 个输出 token 的请求,约占用 2 美分的容量。64 个单位的 F64 容量,也就是微软示例中的规模,按这个费率每天约 276 美元,而且你的报表使用的是同一份容量。微软说:“Copilot 触发的任何下游操作,Fabric 另行计费”
- Tableau:其帮助页面把这些 AI 功能与 Tableau Cloud 上的 Tableau Cloud+ 版本或 Tableau+ 套件挂钩,在 Tableau Server 上则与 Tableau Server+ 挂钩,后者的模型用量“根据你与具体 LLM 提供方签订的协议,直接计费”。请向 Tableau 索取报价
- Snowflake:通过 API 调用 Cortex Analyst,标价为每 1000 条消息 67 个平台积分。在 AWS 美国东部按需计费,标准版每个积分 2.00 美元,企业版 3.00 美元,所以 1000 条消息要 134 美元或 201 美元。“执行 Cortex Analyst 生成的 SQL 时,还要另加仓库费用。”通过 Cortex Agents 调用时,计费改为按 token,费率因模型而异
- Databricks:“用户对 Genie One 和 Genie Agents 的使用,在 2027 年 1 月 31 日之前免费。”软件账号(服务主体)除外,“它们的使用要计费”,而且“运行 Genie 所生成查询的算力,比如 SQL 仓库,另行计费”。过了这个日期,Databricks 说 Genie 产品将“按用量付费”,每位用户有每月免费额度,所以要问清楚按你的用量会花多少钱
- 定制开发:你直接向模型提供方付费,另加你自己的数据库算力,以及搭建和运行系统的工程师。Anthropic 标价 Claude Sonnet 5.5 每百万输入 token 2 美元、每百万输出 token 10 美元,所以同样 2000 个输入 token 和 500 个输出 token 约花 1 美分。真实的请求会带上你的表描述,规模更大
这些数字涵盖的内容并不相同,所以比较之前,要给每一项都加上算力。微软建议先从一个小规模的试点组开始,并说:“未经验证用量模式就广泛部署,可能很快耗尽你的容量”。
我们如何用已知答案的问题来测试它?
先做好测试,再选产品。拿几十个你们员工真实会问的问题,每个问题的正确答案,取自财务团队已签字确认的报表。把它们逐一交给候选名单上的每款产品,并给每个答案打分。这组问题应包括:
- 只有一个正确答案的问题,取自已签字确认的报表,其中也包括涉及两个主题的组合问题,比如按产品和月份看毛利率
- 同一个问题换不同的说法,由不同部门的人来问,看你的定义是否站得住
- 助手应当拒绝回答的问题,比如询问它并不持有的数据,因为编造答案,正是你最需要抓住的那种失误
- 同一个问题,在访问权限不同的人的账号下提出,用来检查行级安全
一个正确的合计数,可能只是错误的查询碰巧得出的,所以不仅要给数字打分,也要给查询打分。Databricks 有基准测试,可以“系统地测试并评估你的智能体的整体准确率”;Snowflake 则说,你可以“用你已验证的查询对照 Cortex Analyst”来运行,衡量它生成 SQL 的准确程度。上文链接的那篇关于测试 AI 助手的文章,讲了如何提前设定及格线。
微软说,如果在语义模型未变的情况下,“在滚动的 24 小时窗口内”重复提出同一个问题,Copilot 会从缓存中作答,缓存就是早先答案的一份保存副本。所以,第二天早上的重测不能算数。请隔 24 小时以上,把整组问题再跑一遍,此后每当供应商更换模型或你修改定义时,也要再跑一遍。
员工怎样核实一个答案出自哪里?
人们没法核对一个孤零零的数字,所以要求每个答案都写明它用的是哪种定义,以及涵盖的期间。Power BI 提供一个叫“How Copilot arrived at this”的视图,Genie 则回复“生成的查询和结果表(如果可能)”。微软关于其较新 Copilot 预览版的页面也要求人们“对照源数据验证重要决策”。请定一条规则:凡是要交给董事会或客户的数字,先对照源报表核对。
我们该向 BI 或数据平台的供应商问什么?
- 哪些指标它会依据约定的定义作答?超出这些定义的问题会怎样处理?
- 每个查询以谁的权限运行?我们如何针对某一个人的账号来测试这一点?
- 哪些模型提供方会处理我们的问题和数据,在哪个地区处理?
- 我们真实提问量一个月的费用是多少,包括查询算力和最低消费?
- 我们能否看到每个答案背后的查询,并保留这些查询的日志?
- 这项功能是否已正式发布?计划用什么来取代它?
- 模型变更之前,我们能提前多久得到通知,以便重新运行测试?
我们应该向负责开发的公司问些什么?
- 指标定义放在哪里?我们的分析师不靠开发人员能不能修改?
- 每个人的身份是如何传到数据库的?缺失时会怎样?
- 哪个模型来写查询?哪些数据会离开我们的服务器?
- 你们打算如何用我们已知答案的问题来测试?我们这边由谁签字确认?
- 助手拿不准的时候,是会说出来,还是会瞎猜?
- 到最后,代码、定义、测试集和日志是否归我们所有?
amBrain 在其中处于什么位置?
本博客由 amBrain 发布。关于自己的产品,它是这样说的:“我们自己的产品 shyash.ai 由研究、撰写、检查和衡量的 AI 智能体运行,依托同一份公司事实的共享记忆。所有发出的内容都由人批准。”
本文不是案例研究,也没有描述任何客户工作,并且不声称 amBrain 为任何客户构建过向数据提问的助手。上面那句话说的是 amBrain 自己的产品,文中的例子都是通用的。
这里提到的公司,引用的都是它们已发布的页面,均于 2026 年 11 月 9 日打开查阅。本文不声称 amBrain 与其中任何一家有关系,也不给出 amBrain 的价格或时间表。
amBrain 自 2019 年起开发软件。关于与客户的合作方式,它说:“三种合作方式:整体交付、专属团队,或工程师嵌入你的团队。”它关于所有权的说法是:“客户拥有产品与代码的全部所有权,我们的可复用组件除外。”签约之前,请要求它逐项列出这些组件的名称。
如果 amBrain 在你的候选名单上,请像对其他任何公司一样,向它提出同样的问题。
主题
- AI 助手
- 商业智能
- 自建还是购买
- 数据访问