← 重要论文

论文解读 · 2026年10月20日

利用迭代自我修正的 NL2SQL

NL2SQL with Iterative Self-Refinement

语言模型数据工程智能体金融与保险 入门 cs.DB

在面向保险领域的多智能体 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。

结果

局限

评估查询只有 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 阅读论文后撰写的摘要,请以论文原文为准。