2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!
在企业数据版图内,生成式人工智能的演进已超越简单的聊天界面,迈入自主编排的领域。对金融机构而言,这项技术的前景在于弥合一个历史性鸿沟:一端是高度结构化的交易数据(如总账分录),另一端是非结构化文档的庞大存储库(如监管手册和 ERP 系统指南)。Snowflake Cortex 智能体代表了这一范式的根本转变,它提供了一个托管框架,用于构建不仅能检索数据、还能规划复杂任务、执行专用工具,并以高精度和可验证的引用综合生成洞察的智能助手。
Cortex 智能体框架:规划、工具调用与反思机制
从核心架构来看,Cortex 智能体本质上是一个编排引擎,其设计目标是在数据仓库的安全边界内,通过协同调用多个异构数据源,生成深度洞察结果。与标准大语言模型在面对复杂数据库模式时容易产生幻觉输出不同,Cortex 智能体遵循一套严谨的四阶段生命周期:规划、工具调用、反思与监控。
在规划阶段,智能体将自然语言查询拆解为若干逻辑子任务。它能够精准判断:当用户询问“净利润率”时,是否需要针对分类账执行 SQL 查询;而当问题涉及“会计科目计划表的配置前提”时,是否应转而检索 Microsoft Dynamics 365 Business Central 中的技术文档。
在工具调用阶段,智能体会激活特定的专业服务。针对结构化数据,智能体调用 Cortex Analyst 服务。该服务通过语义模型的理解,能够以超过 90% 的准确率将自然语言转化为 SQL 语句。针对非结构化数据,智能体则启用 Cortex Search,其采用混合检索机制,融合了基于向量的语义搜索与基于关键词的词法搜索。这一混合策略在金融领域尤为重要:一方面,对于“总账科目”这类精确术语,必须实现字符级精准匹配;另一方面,对于“收入确认政策”等宽泛概念,又需通过语义理解捕捉上下文关联。
在反思阶段,智能体对其所调用工具返回的结果进行评估。若发现数据不充分,或 SQL 执行过程中抛出异常,智能体将进行迭代调整——修正执行计划、切换备选工具,或向用户发起澄清性追问。这一闭环迭代流程确保了最终输出内容严格锚定于 Snowflake 中存储的真实数据,而非大模型自身的参数化记忆。
基础环境搭建与基于角色的访问控制
实施金融智能体需要严格的安全基础,以确保编排层遵循与金融数据其他部分相同的治理标准。Snowflake 通过特定的数据库角色和权限来管理对 Cortex 功能的访问。SNOWFLAKE.CORTEX_USER 角色提供对更广泛 AI 功能套件的访问权限,而 SNOWFLAKE.CORTEX_AGENT_USER 则是专门用于智能体特定操作的专用角色。
在专业的金融环境中,最小权限原则要求为智能体应用程序创建一个专门的、自定义的角色。必须授予该角色对其将要使用的特定数据库、模式(Schema)和虚拟仓库的 USAGE 权限,以及对智能体对象本身的 OWNERSHIP 或 USAGE 权限。以下实现展示了数据库基础设施的创建以及必要权限的分配。
-- 初始基础设施创建USE ROLE ACCOUNTADMIN;-- 为金融分析和智能体编排创建专用虚拟仓库CREATE WAREHOUSE IF NOT EXISTS FINANCIAL_AGENT_WH WITH WAREHOUSE_SIZE = 'X-SMALL' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE;-- 用于金融智能的主数据库和模式CREATE DATABASE IF NOT EXISTS FIN_INTEL_DB;CREATE SCHEMA IF NOT EXISTS FIN_INTEL_DB.CORE;-- 为金融智能体创建自定义角色CREATE ROLE FIN_AGENT_ROLE;-- 将强制性的 Snowflake AI 数据库角色授予自定义角色GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE FIN_AGENT_ROLE;GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER TO ROLE FIN_AGENT_ROLE;-- 授予标准资源使用权限GRANT USAGE ON DATABASE FIN_INTEL_DB TO ROLE FIN_AGENT_ROLE;GRANT USAGE ON SCHEMA FIN_INTEL_DB.CORE TO ROLE FIN_AGENT_ROLE;GRANT USAGE ON WAREHOUSE FINANCIAL_AGENT_WH TO ROLE FIN_AGENT_ROLE;-- 授予模式级别的创建权限,用于创建智能体相关对象GRANT CREATE TABLE, CREATE STAGE, CREATE VIEW, CREATE CORTEX SEARCH SERVICE, CREATE AGENT ON SCHEMA FIN_INTEL_DB.CORE TO ROLE FIN_AGENT_ROLE;-- 将该角色分配给技术用户GRANT ROLE FIN_AGENT_ROLE TO USER <your user>;GRANT CREATE SEMANTIC VIEW ON SCHEMA FIN_INTEL_DB.CORE TO ROLE FIN_AGENT_ROLE;这些权限的隔离是一项关键的安全控制措施。 通过确保智能体在 FIN_AGENT_ROLE 角色范围内运行,组织可以防止编排模型访问未经授权的数据或执行破坏性操作。此外,任何应用于基础表的行访问策略或数据脱敏规则都将被智能体的查询自动继承,从而维持一致的安全防护态势。
结构化数据架构:总账建模
要使 Cortex 智能体能够回答核心财务问题,底层数据库的结构必须反映财务报告的逻辑流程。《Microsoft Dynamics 365 Business Central 指南》强调,财务报告本质上是行定义(公式)与列定义(数据源)的“外积”。在 Snowflake 环境中,这体现为一种规范化模式,即中央总账分录事实表与科目、部门、区域等维度表建立关联。
一个高性能的财务模式通常包含:
事实表:存储交易流水记录(例如:总账、销售账);
维度表:提供描述性属性(例如:会计科目表、成本中心);
分类映射:将过账科目映射到更广泛的类别(例如:资产、负债、收入),以简化报表定义的复杂度。
USE ROLE FIN_AGENT_ROLE;USE DATABASE FIN_INTEL_DB;USE SCHEMA CORE;-- 维度:会计科目表CREATE OR REPLACE TABLE DIM_GL_ACCOUNT ( ACCOUNT_KEY INT PRIMARY KEY, ACCOUNT_NO VARCHAR(20), ACCOUNT_NAME VARCHAR(100), ACCOUNT_CATEGORY VARCHAR(50), --资产、负债、收入、费用 ACCOUNT_SUB_CATEGORY VARCHAR(50), ACCOUNT_TYPE VARCHAR(20) -- 过账 或 页眉);-- 维度:组织结构CREATE OR REPLACE TABLE DIM_DEPARTMENT ( DEPT_KEY INT PRIMARY KEY, DEPT_NAME VARCHAR(50), REGION_NAME VARCHAR(50));-- 事实:总账分录CREATE OR REPLACE TABLE FCT_GL_ENTRY ( ENTRY_ID INT PRIMARY KEY, POSTING_DATE DATE, ACCOUNT_KEY INT REFERENCES DIM_GL_ACCOUNT(ACCOUNT_KEY), DEPT_KEY INT REFERENCES DIM_DEPARTMENT(DEPT_KEY), AMOUNT FLOAT, DESCRIPTION VARCHAR(255));-- 插入示例财务数据以作演示INSERT INTO DIM_GL_ACCOUNT VALUES (1, '40100', 'Product Sales', 'Income', 'Sales', 'Posting'),(2, '60200', 'Travel Expense', 'Expense', 'Administration', 'Posting'),(3, '10100', 'Operating Cash', 'Asset', 'Cash', 'Posting');INSERT INTO DIM_DEPARTMENT VALUES (1, 'North American Sales', 'Americas'),(2, 'European Marketing', 'EMEA');INSERT INTO FCT_GL_ENTRY VALUES (1, '2025-01-15', 1, 1, 75000.00, 'Q1 Enterprise License Sale'),(2, '2025-01-20', 2, 2, 1200.50, 'Flight to London Conference'),(3, '2025-02-05', 1, 1, 45000.00, 'Mid-quarter software renewal');-- 确保美洲区域存在相应部门INSERT INTO DIM_DEPARTMENT (DEPT_KEY, DEPT_NAME, REGION_NAME) VALUES (3, 'US Enterprise Sales', 'Americas');-- 插入 2025年1月 特定产品销售收入-- ACCOUNT_KEY 1 对应上述配置中的 '产品销售收入'INSERT INTO FCT_GL_ENTRY (ENTRY_ID, POSTING_DATE, ACCOUNT_KEY, DEPT_KEY, AMOUNT, DESCRIPTION)VALUES (4, '2025-01-14', 1, 3, 125000.00, 'January Software License - Americas');-- 再插入一条以验证后续的数据聚合效果INSERT INTO FCT_GL_ENTRY (ENTRY_ID, POSTING_DATE, ACCOUNT_KEY, DEPT_KEY, AMOUNT, DESCRIPTION)VALUES (5, '2025-01-28', 1, 3, 50000.00, 'January Consulting Services - Americas');这种结构化的规范化处理是实现 Text-to-SQL 的第一步。通过显式定义主键和外键,数据架构师提供了 Cortex Analyst 所需的元数据,使其能够正确理解如何关联表以及如何准确聚合金额数据。
非结构化数据处理:摄取 Microsoft Business Central 指南
财务智能体的第二大支柱是其对非结构化文档的访问能力。Microsoft 关于 Business Central 财务报告的指南提供了有关会计科目表工作原理、总账预算重要性以及维度使用的关键上下文。为了让智能体能够“搜索”该文档,必须先对其进行摄取、解析和索引。
Snowflake 的非结构化数据管道涉及将文档上传至内部暂存区,使用 AI_PARSE_DOCUMENT 函数进行内容提取,然后对文本进行分块以便在 Cortex Search 中建立索引。AI_PARSE_DOCUMENT 中的 LAYOUT 模式对于财务手册尤为重要,因为它能保留表格和标题的结构完整性,而这些元素在软件指南中十分常见。
文档解析与语义分块
财务文档内容密集且高度依赖上下文。仅仅按字符数进行简单拆分往往会导致信息碎片化。因此,采用递归字符拆分——并优先考虑 Markdown 标题或换行符——可确保概念单元的完整性。
-- 为 Microsoft 手册创建安全的内部暂存区CREATE OR REPLACE STAGE MANUALS_STAGE DIRECTORY = (ENABLE = TRUE) ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');-- 用于存储已处理和分块文档内容的表CREATE OR REPLACE TABLE PROCESSED_MANUAL_CHUNKS ( FILE_ID TEXT, FILE_NAME TEXT, CHUNK_ID NUMBER, CHUNK_TEXT TEXT, METADATA VARIANT);-- 摄取管道逻辑(概念流程)-- 1. 将财务指南上传至 @MANUALS_STAGE-- 你可以从以下 URL 复制内容并导出为 PDF:-- https://learn.microsoft.com/en-us/dynamics365/business-central/bi-how-work-account-schedule可以使用 Snowflake CLI 上传,或在 Snowflake UI 中导航至刚创建的暂存区,点击“+文件”上传 PDF。


-- 2. 执行提取与分块 SQL:INSERT INTO PROCESSED_MANUAL_CHUNKS (FILE_ID, FILE_NAME, CHUNK_ID, CHUNK_TEXT, METADATA)SELECT MD5(relative_path) as FILE_ID, relative_path as FILE_NAME, c.index as CHUNK_ID, c.value as CHUNK_TEXT, PARSE_JSON(SNOWFLAKE.CORTEX.AI_PARSE_DOCUMENT(TO_FILE('@MANUALS_STAGE', relative_path), {'mode': 'LAYOUT'})):metadata as METADATAFROM DIRECTORY(@MANUALS_STAGE), LATERAL FLATTEN(input => SNOWFLAKE.CORTEX.SPLIT_TEXT_RECURSIVE_CHARACTER( TO_VARCHAR(SNOWFLAKE.CORTEX.AI_PARSE_DOCUMENT(TO_FILE('@MANUALS_STAGE', relative_path), {'mode': 'LAYOUT'}):content), 'markdown', 1500, 200)) c;使用 LAYOUT 模式可确保输出的 Markdown 格式能正确反映 Microsoft 指南的层级结构。通过保留“总账科目类别”与“总账预算”之间的区别,后续的搜索服务在智能体被问及报表设置问题时,能够提供更精准的上下文信息。
配置专用智能工具
Cortex 智能体不直接与原始数据表交互,而是通过工具进行交互。对于这个财务智能体,我们必须配置一个 Cortex 搜索服务用于手册查询,并配置一个语义视图用于账本数据。
文档的 Cortex 搜索服务
搜索服务为智能体提供"模糊"检索能力。它会创建一个混合索引,使智能体既能查找特定的技术术语(如"账户计划表"),又能理解语义相关的查询(如"如何计算账户组的小计?")。
CREATE OR REPLACE CORTEX SEARCH SERVICE MANUAL_SEARCH_SERVICE ON CHUNK_TEXT ATTRIBUTES FILE_NAME WAREHOUSE = FINANCIAL_AGENT_WH TARGET_LAG = '1 day' EMBEDDING_MODEL = 'snowflake-arctic-embed-l-v2.0'AS ( SELECT CHUNK_TEXT, FILE_NAME FROM PROCESSED_MANUAL_CHUNKS);TARGET_LAG 参数在财务系统中是一项关键配置。虽然对于静态手册而言,设置为 '1 day' 通常已足够,但对于文档更新更频繁的组织(例如每日市场研究报告),可以选择更短的间隔,以确保智能体的知识库保持时效性。
财务分析的语义视图
Cortex Analyst 在自然语言与 SQL 之间架起了桥梁。语义视图是一个模式级别的对象,用于定义数据的业务逻辑。它将物理列映射到业务术语,定义"净收入"等指标,并建立账本与维度表之间的关联关系。
CREATE OR REPLACE SEMANTIC VIEW FINANCIAL_INTELLIGENCE_VIEWTABLES ( ledger AS FCT_GL_ENTRY PRIMARY KEY (ENTRY_ID), accounts AS DIM_GL_ACCOUNT PRIMARY KEY (ACCOUNT_KEY), departments AS DIM_DEPARTMENT PRIMARY KEY (DEPT_KEY))RELATIONSHIPS ( ledger (ACCOUNT_KEY) REFERENCES accounts, ledger (DEPT_KEY) REFERENCES departments )DIMENSIONS ( accounts.ACCOUNT_NAME AS account_name WITH SYNONYMS = ('Product Sales', 'Travel Expense', 'Revenue Type') COMMENT = 'The formal name of the GL account', accounts.ACCOUNT_CATEGORY AS account_category WITH SYNONYMS = ('Category', 'Classification'), departments.DEPT_NAME AS dept_name WITH SYNONYMS = ('Department', 'Cost Center'), departments.region AS REGION_NAME WITH SYNONYMS = ('Region', 'Geography', 'Location') COMMENT = 'The geographic area like Americas or EMEA', ledger.POSTING_DATE AS posting_date WITH SYNONYMS = ('Transaction Date', 'Date'))METRICS ( ledger.total_amount AS SUM(ledger.AMOUNT) COMMENT = 'The absolute sum of the ledger entries', ledger.net_sales AS SUM(CASE WHEN accounts.ACCOUNT_CATEGORY = 'Income' THEN ledger.AMOUNT ELSE 0 END) WITH SYNONYMS = ('Total Sales', 'Revenue', 'Gross Income') COMMENT = 'Total revenue from income-categorized accounts', ledger.total_opex AS SUM(CASE WHEN accounts.ACCOUNT_CATEGORY = 'Expense' THEN ledger.AMOUNT ELSE 0 END) WITH SYNONYMS = ('Expenses', 'Opex', 'Spending') COMMENT = 'Total operating expenses');在语义视图中加入诸如 net_sales 和 total_opex 这类具体指标,可以防止大语言模型尝试从零开始计算这些数值——这正是许多 AI 产生幻觉的环节。通过在语义视图内用 SQL 定义业务逻辑,组织能够确保智能体提供一致且可审计的结果。
构建金融智能体对象
最后一步是编排层。CREATE AGENT 命令定义了智能体的思考方式、应使用的工具集以及必须遵循的规则约束。该过程通过基于 YAML 的规范文件实现,其中详细描述了编排模型、工具配置及系统指令集。
一个成熟的金融智能体必须具备处理模糊查询的明确指引。例如,当用户询问“我们在差旅上花了多少钱?”时,智能体应调用 Analyst 工具;而当用户询问“差旅费用的报销政策是什么?”时,则应切换至 Search 工具。

本次我们将通过 UI 界面创建智能体。
1.确保你已被分配至 FIN_AGENT_ROLE 角色;
2.导航至 AI/ML => Agents,点击 ‘Create agent’ 按钮;
3.在描述字段中可填写类似内容:“精通总账分析与 Microsoft Dynamics 365 BI 指引的专家智能体”。
示例问题建议:
2025 年 1 月美洲区域的产品销售总额是多少?
根据 Business Central 指南,新建科目附表的前提条件有哪些?
欧洲市场部差旅费用为 $1,200.50 美元,此入账是否符合文档中“行政管理”子类目的准则?
接着切换至 ‘Tools’ 标签页,添加该智能体可调用的两个工具:
添加 Cortex Analyst 工具:

添加 Cortex Search 工具:

现在两个工具已就绪,你可选择在新标签页中分别打开它们:

你还可以添加经过验证的查询语句:

完成后,请务必保存智能体配置:

点击 ‘Preview in Snowflake Intelligence’:

你将看到刚创建的智能体聊天界面,并附带已添加的三个示例问题:

点击任意问题即可获取回答:

你还可以继续追问后续问题:

现在,让我们测试对文档库的搜索功能是否生效:

尽管这只是基础演示,但其底层技术架构可扩展至更复杂的业务场景。
附注:该智能体同样支持通过代码方式创建:
ALTER AGENT FIN_INTEL_DB.CORE.FIN_AGENT MODIFY LIVE VERSION SET SPECIFICATION = $$ models: orchestration: auto tools: - tool_spec: type: cortex_analyst_text_to_sql name: FinanceAnalyst description: "Provides access to the general ledger, account totals, and sales metrics." - tool_spec: type: cortex_search name: GuideSearch description: "Searches the Microsoft Dynamics 365 Business Central BI documentation." tool_resources: FinanceAnalyst: semantic_view: "FIN_INTEL_DB.CORE.FINANCIAL_INTELLIGENCE_VIEW" execution_environment: type: warehouse warehouse: FINANCIAL_AGENT_WH GuideSearch: name: "FIN_INTEL_DB.CORE.MANUAL_SEARCH_SERVICE" max_results: 5 $$;策略指令与工具选择
智能体的效能高度依赖于编排指令。这些指令在大语言模型(LLM)的规划阶段起到指引作用。通过定义“何时使用”与“何时禁止使用”的规则,数据工程师可以防止智能体调用搜索服务来回答数学问题,从而避免性能低下及潜在的答案错误。
生命周期管理:交互、线程与 API 集成
部署完成后,Cortex 智能体可通过 REST API 集成至自定义应用程序中,或是在 Snowsight 智能体演练场进行测试。智能体 API 的一项关键特性是利用“线程”来持久化对话上下文。在财务分析场景中,用户很少只问一个问题;他们会进行多轮的数据探索(例如:“总营收是多少?”紧接着问“按部门拆分一下”)。
REST API 工作流程
为了维持对话连续性,客户端应用程序必须跟踪 thread_id 和 message_id。工作流程遵循以下可预测的顺序:
初始化:发送带有 parent_message_id: 0 的请求以开启一个新线程;
追踪:API 会流式返回元数据,其中包括每轮对话唯一的 message_id;
继续:若想继续对话,下一次请求必须将上一次成功的助手消息 ID 作为其 parent_message_id。
这种机制使得智能体能够记住先前计算出的数值(例如第一季度的营收总额),并应用后续的筛选条件(例如“仅显示该总额中 EMEA 地区的部分”),而无需重新执行整个思考过程。
性能优化与高级配置
对于企业级的财务智能体而言,仅靠简单的配置往往是不够的。大容量环境需要对检索和生成阶段进行优化,以确保回答的准确性与成本效益。
多索引检索与权重提升
如果金融知识库的规模增长至包含数千份文档(例如,历史 10-K 财报文件、内部审计报告及 ERP 手册),单一搜索服务的性能可能会出现下降。Snowflake 支持多索引检索,使智能体能够借助“特定索引权重提升”功能,同时对不同数据源进行检索。
例如,数据架构师可能希望优先检索“官方政策”文档,而非“会议记录”数据。为此,可为政策索引赋予更高权重,从而确保当智能体被问及差旅指南时,会优先查阅官方手册,而不是先去查看某条随机的客服工单。
已验证查询知识库 (VQR)
Cortex Analyst 内置了“已验证查询知识库”(Verified Query Repository, VQR),管理员可将特定的自然语言问题映射至人工编写且经过验证的 SQL 查询。在金融领域,出于监管要求,某些指标必须绝对精确地计算,此时 VQR 充当“黄金路径”。例如,当用户询问“我们当前的资产负债率是多少?”时,VQR 会确保智能体执行由财务团队核准的精确 SQL 查询,从而完全绕过大语言模型的查询生成逻辑。
金融 AI 编排中的安全性与隐私保护
金融行业属于监管最严格的领域之一,AI 的应用引发了数据泄露与隐私方面的担忧。Snowflake Cortex 智能体采用“安全优先”的架构设计,确保数据始终不离开 Snowflake 的治理边界。
仓内推理:与需要将数据发送至第三方 API 的外部 AI 服务不同,Cortex 智能体直接在 Snowflake 虚拟仓库内部执行模型(例如来自 Mistral、Meta 及 Snowflake 自身的模型);
基于角色的访问控制与策略传播:若用户因行访问策略限制而无法查看“人力资源”相关支出,智能体自然也无法检索或计算这些数据。智能体生成 SQL 的能力受限于执行角色的权限;
数据脱敏:尽管智能体可利用元数据生成 SQL,但会严格遵守对包含敏感信息(如员工薪资或特定客户姓名)的列的脱敏规则。智能体的最终回复仅展示脱敏后的数据,从而防止未经授权的信息泄露。
金融工程智能体实施最佳实践
为确保金融智能体的长期成功,实施团队应遵循以下若干最佳实践:
描述性命名规范:工具名称应采用“领域”(如“Ledger/总账”)加“功能”(如“Analyst/分析师”)的组合方式。避免使用“Tool1”或“Search”等含义模糊的名称,以降低编排过程中的错误概率;
详尽全面的描述:每个工具的描述应明确说明其覆盖的数据范围,更重要的是,应指出其无法处理的内容。明确“禁止使用场景”有助于清晰划定能力边界;
语义模型定期迭代:金融术语会随时间演变。语义模型应持续更新同义词与样本值,以帮助大语言模型识别新的会计科目或产品线;
引用来源校验:开发人员应监控智能体的推理过程事件,确保引用标注正确生成。引用是建立专业用户信任感的核心机制。
智能体在金融领域的未来展望
Cortex 智能体的部署,标志着金融智能新时代的开启。通过从静态仪表盘向对话式编排的转变,企业能够赋能团队,以思考的速度获取答案。将 Microsoft Business Central 智能指南与总账进行集成,仅是迈出的第一步。未来,这些智能体的迭代版本将能够通过外部 API 接入实时市场数据,借助自定义工具(如用户定义函数 / 存储过程)自动生成审计日志,并利用“数据转图表”功能生成复杂的财务可视化内容。
随着技术的不断成熟,“人在回路”模式仍将发挥关键作用,但财务分析师的职责将从数据收集转向更高层次的战略决策。Cortex 智能体作为效能倍增器,承担繁重的数据检索与解读工作,使专业人员能够专注于数据背后的深层影响。在精准度要求极高的金融领域,构建一个受管控、透明且根植于组织特有数据的智能体,不仅是一种技术优势,更是一种战略必需。
如需获取更多与 Snowflake 相关的文章更新,欢迎在 Medium 上关注我:Eylon's Snowflake Articles。

我是 Eylon Steiner,Infostrux Solutions 工程经理兼 Snowflake 数据超级英雄。您也可以在 LinkedIn 上关注我。
请通过 https://blog.infostrux.com 订阅 Infostrux Medium 博客,获取最新前沿的数据工程与 Snowflake 资讯。欢迎通过 GitHub 关注 Infostrux 的开源项目动态。

点击链接立即报名注册:Ascent - Snowflake Platform Training - China,更多 Snowflake 精彩活动请关注专区。





