Skip to content
🔗 分享本题
查看我的学习进度 →

NL2SQL 从 schema 检索、SQL 生成、AST 策略校验到只读执行和结果溯源图

🧠 记忆锚点:生成 SQL 只是中间一步;真正的生产边界是语义上下文、AST 校验、数据权限、受限执行和全链路审计。

💡 答案要点

核心挑战:

  1. 表结构理解(LLM 需要知道有哪些表、字段)
  2. SQL 语法正确性(不能生成错误 SQL)
  3. 安全性(防止 SQL 注入、危险操作)

架构设计:

用户问题 → Prompt + 表结构 → LLM → SQL → 校验 → 执行 → 结果 → 自然语言回答

                            语法检查器

                            安全过滤器

关键优化:

  1. Schema 注入:把表结构、字段说明、示例数据放入 Prompt
  2. Few-shot:给几个 SQL 示例,让模型模仿
  3. 校验层
    • 语法检查(用 sqlparse 解析)
    • 安全过滤(禁止 DROP、DELETE 等危险操作)
    • 限流(LIMIT 100,防止全表扫描)
  4. 自我修正:如果 SQL 执行报错,把错误信息返回给 LLM 重新生成

面试话术:

示例表达(仅在能用本人经历或可复现实验佐证时使用): "NL2SQL 的核心不是 Prompt,而是校验层。我设计了三层防护:语法检查、安全过滤、执行限流。同时加入自我修正机制,如果 SQL 执行报错,把错误信息返回给 LLM 重新生成,成功率从 70% 提升到 92%。"