大家好,我是云途。NL2SQL 是把“上个月哪个产品退款最多”这样的自然语言问题转换成数据库查询语句。
生成 SQL 不代表可以直接执行。模型可能选错表、理解错字段,也可能生成代价很高甚至会修改数据的语句。
安全链路中间必须有闸门
比较合适的使用场景
- 分析人员对只读数据副本做探索。
- 查询范围、表和字段已经建立白名单。
- 结果有行数、时间和成本限制。
- 最终业务判断仍由懂数据的人确认。
这些情况不能直接执行
- 生产数据库或包含真实客户权益的数据。
- 允许 INSERT、UPDATE、DELETE、DROP 等写操作。
- 没有租户隔离、字段权限或隐私脱敏。
- 模型看不到准确 schema 和字段含义。
- 查询可能扫描整库,却没有超时和行数限制。
先展示 SQL、解释会读取哪些表和字段,等人工确认后才在只读副本执行。
用已知答案的问题测试
准备一组结果已知的问题,比较生成 SQL、数据库实际结果和人工标准答案。测试要包含同义表达、时间范围、空结果和无权限字段。
只允许 SELECT
只连接只读副本
限定允许的 schema / table / column
默认 LIMIT 100
设置查询超时
保存问题、SQL、批准人和结果摘要自然语言只是入口,数据库边界仍由系统负责
- 只连接只读数据副本。
- SQL 执行前可见并可确认。
- 表、字段、行数和时间都有边界。
- 问题、SQL 和结果可以审计。