借助 Microsoft Fabric 提供的数据代理程序,可以创建对话式人工智能体验,以回答有关存储在湖仓、数据仓库、Power BI 语义模型、KQL 数据库、本体和 Microsoft Graph in Fabric 中的问题。 你的同事可以采用纯英语提问并接收数据驱动的答案,即使他们不是 AI 专家或对数据非常熟悉也是如此。
先决条件
- 付费的 F2 或更高版本的 Fabric 容量,或已启用 Microsoft Fabric 的 P1 或更高版本的 Power BI Premium 容量。
- 根据 Fabric 数据代理租户设置中所述的要求,为 AI 启用跨地理位置处理和跨地理位置存储。
- 至少有一个数据源包含数据:仓库、lakehouse、Power BI 语义模型、KQL 数据库、镜像数据库或本体。 必须具有对数据源的读取访问权限。
身份验证和令牌
无需创建或提供 Azure OpenAI 密钥或访问令牌才能使用Fabric数据代理。 Fabric使用Microsoft管理的 Azure OpenAI 助手并为你处理身份验证。
- 数据访问在Microsoft Entra ID用户标识和工作区/数据权限下运行。 仅当有权访问时,代理才会读取架构并运行 SQL/DAX/KQL。 虽然大多数数据源都尊重工作区权限,但通过数据代理进行Power BI语义模型交互由模型级读取权限控制,并且不需要工作区角色成员身份。
- 若要将Power BI语义模型添加为数据源,需要对该模型具有读取权限(不需要写入)。 读取访问权限也足以针对可以访问的源提出问题。 有关语义模型权限的详细信息,请参阅 数据集和语义模型安全性。 在数据代理使用情况中,读取权限足以用于查询;只需修改语义模型或启用 AI 准备等功能,才需要写入。
- 如果您的组织使用 Power BI Premium 每个容量(P1 或更高的容量),而不是 F SKU,请确保在该容量上启用 Microsoft Fabric。
- 产品内聊天体验不需要服务主体和 API 令牌。 任何使用服务主体的自动化都是一个单独的方案,此处不涵盖。
安全性和治理
Fabric数据代理遵循Microsoft Purview治理策略。 当 Purview 策略限制对数据源的访问(例如,通过访问控制或敏感度标签),代理在处理用户查询时会遵循这些限制。
扩展的出站访问保护适用于代理操作。 来自代理的出站连接受租户的网络和Fabric管理门户中配置的访问权限规则的约束。 管理员能够控制允许服务人员访问哪些外部终结点。
通过数据代理访问语义模型的权限
通过Fabric数据代理与Power BI语义模型交互只需要对语义模型具有读取权限。 将模型添加到代理或通过代理提出问题时,不需要拥有工作区访问权限(成员或参与者角色)和生成权限。 此异常仅适用于数据代理交互;其他入口点(例如,使用 Excel 进行分析或直接创建报表)可能仍需要“生成”权限。
只有在需要修改语义模型或使用诸如“为 AI 准备”这样的功能时,才需要写入权限。
跨租户数据访问
当工作区包含通过 OneLake 外部数据共享从另一个租户共享的数据时,Fabric数据代理可以通过共享接受期间创建的 OneLake 快捷方式查询该数据。 不需要额外的身份验证配置。访问在现有的 Entra ID 身份和工作区权限下运行。 消费租户的治理策略适用于所有共享数据。
用于创建和使用Fabric数据代理的端到端流
本部分概述了在 Fabric 中创建、验证和共享Fabric数据代理的关键步骤,使其可供使用。 代理在 OneLake 中处理受控的实时数据,包括由 OneLake 快捷方式 和 跨租户共享 支持的表。
此过程非常简单,可以在几分钟内开始测试Fabric数据代理资源。
创建新的Fabric数据代理
若要创建新的Fabric数据代理,请先导航到工作区,然后选择“+ 新建项按钮。 在“所有项”选项卡中,搜索Fabric数据代理找到适当的选项,如以下屏幕截图所示:
选择后,系统会提示你提供Fabric数据代理的名称,如以下屏幕截图所示:
有关命名Fabric数据代理的视觉指南,请参阅提供的屏幕截图。 输入名称后,继续执行配置,使Fabric数据代理符合特定要求。
选择您的数据
创建 Fabric 数据代理后,可以在湖仓、仓库、Power BI 语义模型、KQL 数据库、本体和 Microsoft Graph 等数据源中任意组合添加最多五个(总共可达五个)。 例如,可以添加五个Power BI语义模型,或两个Power BI语义模型、一个 lakehouse 和一个 KQL 数据库。
注释
OneLake 目录可以包含通过 OneLake 快捷方式公开的表。 Fabric数据代理可以直接查询这些由快捷方式支持的表,而无需将数据复制到工作区。
首次创建Fabric数据代理并提供名称时,OneLake 目录会自动显示,从而允许添加数据源。 若要添加一个数据源,请从目录中选择它(如下一屏幕所示),然后选择“添加”。 必须单独添加每个数据源。 例如,可以添加一个湖屋,选择“添加”,然后继续添加另一个数据源。 若要筛选数据源类型,请选择筛选器图标,然后选择所需的类型。 可以按数据源类型进行筛选,以便更轻松地查找源,包括通过跨组织边界共享的项(通过 跨租户数据共享)。
添加数据源后,Fabric数据代理页左窗格中的 Explorer填充了每个所选数据源中的可用表,可以使用复选框使表对 AI 可用或不可用,如以下屏幕截图所示:
注释
只需具有读取权限即可将Power BI语义模型添加为数据源。 不需要构建权限,并且用户通过数据代理使用语义模型时,不需要访问其驻留的工作区。 只有在需要修改语义模型或使用诸如“为 AI 准备”这样的功能时,才需要写入权限。
要添加后续的数据源,请导航到 Fabric 数据代理页左窗格中的 Explorer,然后选择 + 数据源,如下屏幕截图所示。
OneLake 目录再次打开,你可以根据需要无缝添加更多数据源。
小提示
确保对表和列使用描述性名称。 表名 SalesData 比 TableA 更有意义,ActiveCustomer 或 IsCustomerActive 等列名比 C1 或 ActCu 更清晰。 描述性名称有助于 AI 生成更准确、可靠的查询。
提出问题
添加数据源并选择每个数据源的相关表后,可以开始提问。 系统处理问题,如以下屏幕截图所示:
与这些示例类似的问题也应有效:
- “2023 年,我们在加州的总销售额是多少?”
- “定价最高的前 5 种产品是什么,它们属于什么类别?”
- "哪些从未出售过的物品是最昂贵的?"
此类问题适用,因为系统可以将它们转换为结构化查询(T-SQL、DAX 或 KQL),针对数据库执行这些查询,然后根据存储的数据返回具体答案。
但是,如下问题超出了范围:
- “为什么工厂在 2024 年第 2 季度的生产率较低?”
- “我们销售高峰的根本原因是什么?”
这些问题当前超出了范围,因为它们需要复杂的推理、关联分析或数据库中未直接提供的外部因素。 Fabric数据代理当前不执行高级分析、机器学习或因果推理。 它只是根据用户的查询检索和处理结构化数据。
提出问题时,Fabric数据代理使用 Azure OpenAI 助手 API 来处理请求。 流以这种方式运行:
使用用户凭据进行架构访问
系统首先使用用户的凭据来访问数据源的架构(例如 Lakehouse、warehouse、PBI 语义模型、KQL 数据库或本体)。 这可确保系统提取用户有权查看的数据结构信息。
构造提示
若要解释用户的问题,系统会合并:
- 用户查询:用户提供的自然语言问题。
- 架构信息:前一步中检索的数据源的元数据和结构化详细信息。
- 示例和说明:设置Fabric数据代理时提供的任何预定义示例(例如示例问题和答案)或特定说明。 这些示例和说明有助于优化 AI 对问题的理解,并指导 AI 如何与数据交互。
所有这些信息都用于构造提示。 此提示作为输入给 Azure OpenAI 助手 API,该 API 作为 Fabric 数据代理的基础代理运行。 这实质上指示Fabric数据代理如何处理查询,以及要生成的答案类型。
基于查询需求的工具调用
代理分析构造的提示,并确定要调用哪个工具来检索答案:
- 自然语言到 SQL (NL2SQL):用于在数据驻留在湖屋或仓库中时生成 SQL 查询
- 自然语言到 DAX (NL2DAX):用于创建 DAX 查询以与Power BI数据源中的语义模型交互
- 自然语言到 KQL (NL2KQL):用于构造 KQL 查询以查询 KQL 数据库中的数据。 NL2KQL 可以在所选数据库中可用时使用 KQL 用户定义的函数(UDF)。
- Microsoft Graph:用于查询可通过Microsoft Graph访问的组织数据
所选工具使用代理Fabric数据代理提供的架构、元数据和上下文生成查询。 然后,该工具验证查询,以确保正确设置格式并符合其安全协议及其自己的负责任 AI (RAI) 策略。
响应构造
Fabric数据代理基础的代理执行查询,并确保正确构造和格式化响应。 代理通常包括额外的上下文,使答案对用户友好。 最后,答案在对话界面中向用户显示,如以下屏幕截图所示:
代理展示最终答案的结果,以及它为了获取该答案所执行的中间步骤。 此方法可增强透明度,并允许在必要时验证这些步骤。 用户可以展开下拉列表,查看检索答案时Fabric数据代理执行的所有步骤,如以下屏幕截图所示:
此外,Fabric数据代理提供了用于查询相应数据源的生成的代码,从而进一步深入了解响应的构造方式。
这些查询专门设计用于查询数据。 不允许涉及数据创建、数据更新、数据删除或任何类型的数据更改的操作,以保护数据的完整性。
随时可以选择“清除聊天”按钮以清除聊天,如以下屏幕截图所示:
“清除聊天”功能会清除所有聊天历史记录并启动新会话。 删除聊天历史记录后,无法检索它。
更改数据源
若要删除数据源,请将鼠标悬停在 Explorer Fabric 数据代理页左窗格中的数据源名称上,直到出现三点菜单。 选择三个点以显示选项,然后选择“删除”以删除数据源,如以下屏幕截图所示:
或者,如果数据源已更改,你可以在同一菜单中选择“刷新”,如以下屏幕截图所示:
这可确保在资源管理器中反映和正确填充任何数据源更新,以使Fabric数据代理与最新数据保持同步。
Fabric数据代理配置
Fabric数据代理提供了多种配置选项,允许用户自定义Fabric数据代理行为,以便更好地满足组织的需求。 随着Fabric数据代理处理和呈现数据,这些配置提供了灵活性,可以更好地控制结果。
提供指示
可以提供指导 AI 行为的特定说明。 若要在“Fabric 数据代理指令”窗格中添加它们,请选择数据代理指令,参见下图:
在此处,可以使用纯英语文本编写最多 15,000 个字符,以指示 AI 如何处理查询。
例如,可以指定要用于特定类型问题的确切数据源。 数据源选择示例可能包括指导AI如何使用
- 用于财务查询的Power BI语义模型
- 用于销售数据的湖屋
- 用于操作指标的 KQL 数据库
这些说明确保 AI 根据你的指导和问题上下文生成适当的查询(无论是 SQL、DAX 还是 KQL)。
如果 AI 资源始终错误地解释某些字词、首字母缩略词或术语,你可以尝试在本节中提供明确的定义,以确保 AI 正确理解并处理它们。 这对于特定于域的术语或独特的业务行话尤其有用。
通过定制这些说明并定义术语,在完全符合数据策略和业务需求的情况下,增强 AI 提供精确且相关的见解的能力。
提供示例查询
可以通过提供针对每个受支持的数据源(lakehouse、warehouse、KQL 数据库)定制的示例查询来提高响应准确性。 此方法在生成 AI 中称为 few-shot learning,可帮助指导Fabric数据代理生成响应,以更好地符合您的期望。
当你向 AI 提供示例查询/问题对时,它在回答未来的问题时会引用这些示例。 将新查询与最相关的示例匹配有助于 AI 整合特定于业务的逻辑,并有效地响应常见问题。 此功能支持对单个数据源进行微调,并确保生成更准确的 SQL 或 KQL 查询。
Power BI语义模型的数据目前不支持添加示例查询或问题对。 但是,对于受支持的数据源(如 lakehouse、warehouse 和 KQL 数据库),提供更多示例可以显著提高 AI 在需要调整其默认性能时生成精确查询的能力。
小提示
一组不同的示例查询增强了Fabric数据代理生成准确且相关的 SQL/KQL 查询的能力。 对于 KQL 数据库,NL2KQL 还可以使用所选数据库中可用的 KQL 用户定义函数(UDF),因此请考虑包括引用 UDF 的示例查询。
若要添加或编辑示例查询,请选择“示例查询”按钮以打开“示例查询”窗格,如以下屏幕截图所示:
此窗格提供用于添加或编辑所有受支持的数据源的示例查询的选项,但Power BI语义模型和本体除外。 对于每个数据源,可以选择 添加或编辑示例查询 输入相关示例,如以下屏幕截图所示:
注释
Fabric数据代理仅引用包含有效 SQL/KQL 语法的查询,这些查询与所选表的架构匹配。 Fabric数据代理不使用尚未完成验证的查询。 确保所有示例查询都有效且与架构正确对齐,以确保Fabric数据代理有效地利用它们。
发布和共享Fabric数据代理
在您针对各种问题测试 Fabric 数据代理的性能后,并且确认它能够生成准确的 SQL、DAX 或 KQL 查询,您可以将其与同事共享。 在那时,选择“发布”,如以下屏幕截图所示:
此步骤将打开一个窗口,要求提供Fabric数据代理的描述。 在此处,提供Fabric数据代理执行的操作的详细说明。 这些详细信息指导同事了解Fabric数据代理的功能,并帮助其他 AI 系统/业务流程协调程序有效地调用Fabric数据代理。
发布Fabric数据代理后,你将拥有两个版本的数据代理。 一个版本是当前的草稿版本,你可以继续优化和改进该版本。 第二个版本是已发布的版本,你可以与想要查询Fabric数据代理的同事共享,以获取其问题的答案。 可以在开发时将同事的反馈合并到当前草稿版本中,以进一步增强Fabric数据代理的性能。
应用生命周期管理和部署
Fabric数据代理支持生命周期管理功能,可帮助跨环境管理代理。
- 诊断:使用内置诊断对代理行为进行故障排除,并确定查询生成问题。
- Git 集成:将Fabric工作区连接到 Git 存储库以版本控制代理配置,包括说明、示例查询和数据源选择。
- 部署管道:使用Fabric部署管道将数据代理从开发提升到测试和生产工作区。
注释
查询使用Power BI语义模型的数据代理的使用者只需要对这些模型具有读取权限,并且不需要工作区访问权限。 修改语义模型或使用诸如 AI 预处理等功能需要写权限。