
随着ai的广泛应用,对话式数据分析从概念演示变成了办公日常。业务人员可以不用再排期等 IT 取数,直接在对话框里问"上季度华东区哪些品类毛利下滑",系统当场出图和明细。这股让普通员工直接问数据库的热潮,有助于将数据使用权从工程师扩展到更多岗位。但要真正跑顺,模型得和企业核心库深度融合,走向既能提问又能直接出报告的智能化。
企业敢把数据库交给模型,通常需要建立三道防线,只读强制、字段级访问控制和结果溯源。安全可通过规则机制提供保障,减少对模型自觉性的依赖。

可信 Text2SQL 是什么
可信 Text2SQL 指在自然语言问数链路里,用只读强制、字段级访问控制(ACL)和结果溯源三道机制共同保障数据安全与答案可审计。它关心的不只是模型能不能生成 SQL,更是生成的 SQL 在什么边界内运行、产出的答案能不能追责。
只读校验
只读约束在 SQL 执行前拦掉 INSERT、UPDATE、DELETE,主要放行 SELECT。实现上通常不宜仅靠关键词黑名单,正则碰到 DELETE 藏在子查询或注释里可能存在遗漏。稳妥做法是接 SQL 解析器,把模型产出的语句转成抽象语法树,逐节点判断语句类型,只要出现写操作节点就拒绝执行并回退。
一个真实风险是这样:(以下为示意性示例,实际表名和字段名以企业数据库为准)模型偶尔会生成 UPDATE accounts SET role='admin' WHERE name='guest' 这类语句,意图未必恶意,但落到生产库就是事故。AST 校验能在执行前拦截它。架构上还有一招,问数流量统一走数据库的只读副本(read replica),主库只接受写,可在架构上降低改数据的可能。在双重机制下,即使模型生成了写语句,数据库端通常也会拒绝。
字段级白名单与脱敏
字段级访问控制按角色给字段打白名单,薪酬、证件号、合同金额这类敏感列可默认设置为不向问数角色开放。落地要给数据字典做元数据标注,标记字段的敏感级别,策略引擎在拼查询和返回结果两个环节都做过滤。
脱敏要和白名单一起用。即使角色被允许看某张表,手机号、身份证在结果里也只露后四位。MySQL 8.0 的 dynamic data masking 能在字段层做掩码,配合列级授权,效果是敏感列对问数账号直接不可见。这里有个容易漏的点,脱敏不是入库做一次就完事。检索缓存、系统日志、导出文件、问答上下文,多个环节都可能涉及明文。正确做法是敏感数据在生成上下文之前就完成脱敏,模型拿到的通常是处理后的值,有助于减少泄露风险。
结果溯源
溯源把每次回答绑定到具体查询语句和命中的数据行,形成可审计链路。落地时
每次问数生成一个 query_id,记录原始自然语言、生成的 SQL、命中的 row_id 列表和执行时间戳,落进审计表。老板问"这个数哪来的",调 query_id 就能还原整条路径。
溯源有助于定位幻觉来源。答案错了,可更方便地查到对应数据行,后续修正知识库也有据可依。在金融、医药这类强监管行业,溯源记录本身就是合规材料。
小艾智能体的纵深防御可默认开启。问数链路强制只读,字段白名单和脱敏策略控制可见范围,敏感数据不进生成上下文,结果能溯源到原数据行。
技术上它复用已有的技术支撑。NL2SQL 把自然语言转成 SQL,BGE-M3 负责语义理解,Milvus 和 Elasticsearch 提供混合检索,Neo4j 把字段和表的血缘关系存成图谱,方便做字段级权限的自动推导。问数作为一个 Agent 工作流跑在 LangGraph 上,只读校验和脱敏节点嵌在工具调用前后,可减少对模型自身规则遵守的依赖。它可通过配置固定能问和不能动、不能看的规则,企业可较快启用,有助于减少从零搭建安全层的工作量。
安全可通过纵深防御的规则提供保障,减少对模型自觉性的依赖。只读强制、字段级权限、结果溯源三道关可明确界定能问和不能动、不能看的范围,企业才更有可能放心让模型访问数据库。















