论文解读 · 2026年10月20日
利用迭代自我修正的 NL2SQL
NL2SQL with Iterative Self-Refinement
在面向保险领域的多智能体 NL2SQL 流水线中加入语法错误修正和 SQL→自然语言反向转换验证,在 60 个查询上取得约 90% 的准确率。
问题
保险公司将长期积累的数据存放在关系型数据库中,但不懂 SQL 的业务人员很难直接查询。用 LLM 将自然语言转换为 SQL 时,会出现编造不存在的表或列(幻觉)、语法错误或生成与意图不符的查询等问题。
方法
构建了包含客户、保险合同、理赔、代理人、投保申请 5 张表的合成保险数据库,并将 KPI 公式词典以及含语义说明和统计信息的模式词典放入提示词。流水线分为五个阶段:(1) 基于 CoT 的领域相关性判别,(2) 知识生成,内容包括要使用的表、列、KPI 公式和分步计划,(3) SQL 生成,(4) 接收 sqlite 执行错误并进行修正的语法修正循环,(5) 将 SQL 重新转述为自然语言,并用 LLM-as-a-Judge 与原问题比较的语义验证。通过反复执行这一过程来完善查询。模型使用 mistral-large-2411。
结果
- 作者报告,在 HuggingFace 的 50 条合成 text-to-SQL 数据和自建的 10 个 KPI 查询,共 60 个查询上取得约 90% 的准确率。
- 简单查询(Data Retrieval)任务为 100%,需要多步聚合和 KPI 计算的分析与报告任务约为 85%。
- 每个查询平均需要 7 次 LLM 调用、约 20 秒延迟,比直接提示慢。
局限
评估查询只有 60 个,且仅在合成数据库上用一个模型(Mistral)进行实验。正文中没有与直接提示或现有方法的定量比较数字,因此无法确认改进幅度。准确率如何判定也没有详细说明。与其他模型的比较留作未来工作。
意义
对想为企业内部数据库接入自然语言查询的从业者有参考价值。它展示了将模式与 KPI 词典注入、基于执行反馈的修正和反向转换验证相结合的实用设计,以及随之而来的延迟和调用成本。
关键术语
- NL2SQL
- 将自然语言问题转换为可在数据库中执行的 SQL 查询的任务。
- SQL→NL 反向转换验证
- 将生成的 SQL 重新转述为自然语言说明,比较其与原问题含义是否一致,从而发现能执行但不符合意图的查询的方法。
- LLM-as-a-Judge
- 一种评估方式:让 LLM 判定两个输出结果是否一致或评判其质量。
原文
作者: Anjali Vemula, Akshat Dasula · 发布 2026-10-16 · 许可 CC BY 4.0 · 基于全文分析
本解读是 AI 阅读论文后撰写的摘要,请以论文原文为准。