Schema-Aware Localisation (SAL):针对 Oracle NL2SQL 的实时模式锚定与幻觉验证
摘要
本文介绍了一种轻量级中间件 Schema-Aware Localisation (SAL),它通过将 LLM 生成的 SQL 查询锚定到实时 Oracle 模式目录中,从而消除幻觉错误,在无需手动模式整理的情况下,在 TPC-H 问题上实现了 62.6% 的执行锚定正确率。
arXiv:2607.22572v1 公告类型:新
摘要:大型语言模型能够从自然语言生成流畅的 SQL,但在实际企业级 Oracle 数据库上,它们经常在执行时失败:列和别名被幻觉,方言特定语法被遗漏,导致 ORA-00904 无效标识符错误。在这种情况下,失败主要源于缺少模式锚定:模型无法知道实际存在的表和列。本文介绍了 Schema-Aware Localisation (SAL),这是一种用于 Oracle NL2SQL 的轻量级中间件层,无需重新训练模型。SAL 查询 Oracle 的 USER_TAB_COLUMNS 目录以构建实时模式映射,为每个问题选择相关的表子集(对于多表查询则回退到完整模式),并将这些真实上下文注入 LLM 提示中。生成的 SQL 随后由 Hallucination Index (Hidx) 检查,该索引针对实时目录验证每个 alias.column 引用,自动重写可预测的前缀错误,否则触发带有逐项修正的结构化重试。我们使用 GPT-4o-mini 在实时 Oracle Autonomous Database 23c 实例上对 500 个 TPC-H 自然语言问题进行了 SAL 评估。在没有任何模式锚定的情况下,执行锚定正确率(EGT;可执行并与参考结果集匹配)为 2.2%(12/500)。手工编写的静态模式提示将 EGT 提升至 62.0%。SAL 在无需手动模式整理的情况下,实现了 62.6% 的 EGT(简单 96%,中等 95%,复杂 40.7%),同时将执行失败率从 97.6% 降低到 2.6%。
查看缓存全文
缓存时间: 2026/07/28 06:24
# Schema-Aware Localisation (SAL): 实时模式锚定与幻觉验证在Oracle NL2SQL中的应用 来源: https://arxiv.org/html/2607.22572 Divya Chukkapalli²²²IEEE高级会员\.divya\.95j@gmail\.com (https://arxiv.org/html/2607.22572v1/mailto:[email protected]) Ganesh R\. Naik³³³IEEE高级会员\.ganesh\.naik@torrens\.edu\.au (https://arxiv.org/html/2607.22572v1/mailto:[email protected]) 独立研究人员,美国北卡罗来纳州罗利市 27601 独立研究人员,美国北卡罗来纳州阿佩克斯市 27502 澳大利亚托伦斯大学,阿德莱德,南澳大利亚州 ###### 摘要 大语言模型能从自然语言生成流畅的SQL,但在真实的企业级Oracle数据库中,它们经常在执行时失败:列名和别名被幻觉生成,且遗漏了特定方言的语法,导致ORA-00904无效标识符错误。在此场景中,失败主要源于缺少模式锚定:模型无法知道实际存在哪些表和列。本文提出Schema-Aware Localisation (SAL),一种轻量级中间件层,用于Oracle NL2SQL,无需模型重新训练。SAL查询Oracle的USER_TAB_COLUMNS目录构建实时模式映射,为每个问题选择一个相关的表子集(对多表查询回退到完整模式),并将此真实上下文注入LLM提示。然后,生成的SQL通过幻觉指数(Hidx)进行检查,Hidx针对实时目录验证每个alias.column引用,自动重写可预测的前缀错误,并在其他情况下触发结构化重试,附带逐项修正。我们在500个TPC-H自然语言问题上评估SAL,这些问题针对一个实时的Oracle Autonomous Database 23c实例执行,使用GPT-4o-mini。没有任何模式锚定时,执行接地真值(EGT;执行并与参考结果集匹配)为2.2%(12/500)。手动编写的静态模式提示使EGT达到62.0%。SAL无需人工模式整理,实现了62.6%的EGT(简单96%,中等95%,复杂40.7%),同时将执行失败率从97.6%降低到2.6%。 ###### 关键词: NL2SQL,Oracle数据库,执行引导验证,模式锚定,幻觉缓解,可复现评估,检索增强生成 ## 1 引言 数据库不讲英语。几十年来,这一直是企业分析中一个无声的代价:带着尖锐问题的业务分析师必须等待数据库工程师将其翻译成SQL,或者自己学习查询语言。大语言模型(LLM)的出现似乎改变了这一状况。像GPT-4o-mini这样的系统可以在不到一秒内从纯英文问题生成语法流畅的SQL,并且在Spider[34]等精选基准上,准确率超过80%。然而,基准性能与生产现实之间的差距是巨大的。Spider查询针对的是干净、文档完善的模式,使用了标准的列名。企业级Oracle数据库与Spider截然不同。它们承载着几十年的命名约定:列名带有表名首字母前缀(O_ORDERDATE, L_SHIPDATE, C_CUSTKEY)、约束在方言层面强制(使用FETCH FIRST而非LIMIT,没有EXTRACT(QUARTER)),以及内部目录结构,这些是LLM在训练中从未见过的。当模型被要求查询这样的数据库而又未被告知存在哪些列时,它会猜测,而Oracle不会原谅猜测。结果就是一堆ORA-00904: 无效标识符错误。我们自己的测量证实了这个问题有多么严重。在一个控制实验中,针对500个自然语言问题在实时的Oracle Autonomous Database实例上,未带模式上下文的GPT-4o-mini仅达到2.2%的执行接地真值(EGT),这是我们主要的准确率指标:生成的SQL能够在实时数据库上执行并返回正确结果的问题比例。500个查询中只有12个执行并返回了正确结果。剩下的488个在Oracle执行层失败,不是因为模型推理不当,而是因为它无法知道存在哪些列。在此设置中,这主要是一个接地问题,并且有一个实用的解决方案,不需要重新训练。Oracle通过数据字典视图(如USER_TAB_COLUMNS)暴露模式元数据。如果在运行时获取这些元数据并注入LLM提示,模型就能获得它缺失的真相。根据我们实验中的做法,基于这些元数据手工制作的静态提示将EGT提升到62.0%,仅凭几行提示工程就获得了近60个百分点的提升。那么,挑战在于自动化和强化这种接地,使其能在异构的Oracle部署(具有不断演变的命名约定、权限和方言约束)以及实践中遇到的各类问题类型中正常工作,而无需人工编写和维护提示。这正是SAL要解决的问题。 SAL与通用的“提示中包含模式”方法在三个方面有所不同。第一,它针对Oracle特定的生产失败模式(方言特性和标识符约定),并在运行时根据实时数据字典进行接地,而不是依赖人工整理的静态模式字符串。第二,它将选择性模式检索与复杂度门控回退相结合,以避免对多表查询范围界定不足。第三,它通过一个面向执行的验证器(Hidx)强制执行模式有效性,该验证器可以重写可预测的标识符前缀错误,并在其他情况下驱动带有逐项修正的结构化重试。 ### 贡献 本文提出Schema-Aware Localisation (SAL),一个零重训练的Oracle NL2SQL运行时接地框架,实现为一个开源的模型上下文协议(MCP)[1]服务器。具体贡献如下: 1. **实时模式注入。** SAL在服务器启动时查询USER_TAB_COLUMNS,并在内存中维护一个缓存,将每个表映射到其准确的列序列表。该缓存每次部署时刷新,无需手动维护。 2. **复杂度门控表检测(SAL Detect v2)。** 与简单的关键字匹配不同,SAL v2根据问题中关键字命中数为每个表评分,沿着已知的JOIN链边扩展匹配集(例如,匹配Orders也会包含Customer和Lineitem),当问题包含多表复杂度信号且直接匹配的表少于三个时,回退到完整模式。这防止了“狭窄提示”失败模式,即JOIN伙伴表被静默丢弃。 3. **幻觉指数(Hidx)验证器。** 为了减少Oracle执行失败并在实时模式下强制执行模式有效的SQL,Hidx解析每个生成的语句,从FROM/JOIN子句构建别名到表的映射,并检查每个alias.column引用是否存在于实时模式缓存中。符合可预测前缀模式(例如,O.ORDERDATE而非O.O_ORDERDATE)的引用会被自动重写。其他引用会触发结构化重试,LLM会收到一份无效引用列表及其正确替代项。 4. **在Oracle ADB上的实证消融实验。** 我们在500个TPC-H问题(分为三个复杂度等级)上评估了四种条件(无提示、静态提示、SAL v1和SAL v2),这些问题针对一个实时的Oracle 23c实例执行。SAL v2达到62.6%的EGT(执行接地真值;在实时数据库上获得正确结果),与手工制作的静态基线持平,并将执行失败率从97.6%降低到2.6%,无需任何人工模式工作。 ## 2 相关工作 与本文相关的文献涵盖四个领域:自然语言接口到数据库、模式链接、生成模型中的幻觉检测以及工具增强的语言模型架构。我们依次回顾每个领域,并定位SAL相对于先前工作的位置。 ### 2.1 自然语言接口到数据库 将自然语言问题翻译成结构化数据库查询的问题自20世纪70年代起就开始研究,始于基于规则的系统,如LUNAR[29]和LADDER[10]。现代的兴趣随着大规模注解基准的引入再次加速。WikiSQL[35]提供了80,654个问题-SQL对,针对单表模式,支持神经方法的系统比较。Spider[34]将评估扩展到跨越138个领域的200个数据库,包含复杂的跨表查询(涉及连接、子查询和聚合)。BIRD[14]进一步提高了标准,引入了真实的数据库噪声和基于证据的问题。这些基准共同定义了常见的评估惯例,包括基于执行的准确率和字符串级别的精确匹配。在本文中,我们专注于执行接地真值(EGT),即生成的SQL同时执行并在实时数据库上返回正确结果的问题比例,并且我们还额外报告语义匹配计数用于诊断目的。 早期的深度学习方法采用序列到序列模型[35,6,30]编码问题和模式,自回归解码SQL令牌。TypeSQL[32]结合了模式元数据中的类型信息,以改进列识别。ShadowGNN[4]和IGSQL[2]将这些思想扩展到多轮对话设置,其中模式上下文必须跨对话轮次保持。在BERT[5]和T5[23]成功之后,主导范式转向大型预训练变换器。BRIDGE[15]将模式信息直接序列化到输入中,并使用BERT表示将问题令牌与数据库实体对齐。GRAPPA[33]在专门针对SQL接地语料库上预训练语言模型,以改进模式理解。这些方法在Spider上持续优于其前身,但仍然依赖于训练时固定的模式表示。 随着指令调优的LLM的出现,少样本提示成为主导方法。DAIL-SQL[8]通过掩码问题相似度从精选池中选择问题相似示例,使用GPT-4在Spider上达到86.6%的执行准确率。DIN-SQL[22]将问题分解为模式链接、查询分类、查询生成和自我修正子任务,使用GPT-4在Spider上达到85.3%。C3-SQL[7]通过对多个独立生成候选进行一致性投票来提高鲁棒性。上述许多系统在企业设置中的一个局限性是,它们假定在推理时存在一个干净、文档完善且稳定的模式。很少有工作明确研究必须从专有数据库目录中实时检索模式元数据,并且目标数据库中的标识符约定与训练分布有显著偏差的情况。 ### 2.2 模式链接 模式链接,即在生成SQL之前识别自然语言问题引用了哪些表和列的子任务,被广泛认为是NL2SQL准确率的主要瓶颈[26,12,3]。模式链接中的错误会不可逆地传播到生成的查询中。IRNet[9]引入了概念词汇表,通过字符串相似度和词重叠启发式将问题片段映射到模式元素。RAT-SQL[26]用关系感知变换器取代了启发式链接,该变换器在统一的图中联合编码问题令牌和模式实体,从注解示例中学习链接权重。LGESQL[3]进一步通过增强线图的模式编码来捕捉局部和全局模式结构。这些方法从成千上万的注解问题-模式对中学习模式链接。它们在其训练模式分布内泛化良好,但当列名遵循Spider或WikiSQL中未出现的企业约定时(例如TPC-H前缀模式O_ORDERDATE, L_SHIPDATE,或Oracle内部系统对象命名),其性能会下降。SAL采取了正交方法:它不学习将问题令牌链接到静态模式词汇表,而是从数据库自身的系统目录(USER_TAB_COLUMNS)中实时检索规范模式,并将其作为接地上下文注入LLM提示。这不需要注解示例、微调或目标模式的先验知识,只需要一个具有读取相关数据字典视图权限的实时数据库连接。 ### 2.3 生成模型中的幻觉检测与修正 幻觉,即生成看似合理但事实上错误的内容,是生成语言模型中一个记录良好的失败模式[18,11]。在自然语言生成中,幻觉难以自动检测,因为它们需要外部事实验证。然而,在代码和SQL生成中,幻觉可以直接且廉价地检测:运行时环境(编译器、解释器或数据库引擎)会抛出错误。Liu等人[16]在728个编程问题上评估了LLM生成的代码,发现GPT-4在37%的情况下产生不正确的代码,尽管生成了语法有效的程序。具体针对SQL,Ni等人[19]研究了使用数据库反馈来约束SQL生成的执行引导解码策略,减少了执行错误。Pourreza和Rafiei[22]在DIN-SQL中整合了一个自我修正步骤,模型可以看到自己的Oracle错误输出并要求其修正;这减少了失败,但未能识别具体错误的令牌。我们的幻觉指数(Hidx)在执行引导和自我修正方法的基础上取得了三个方面的进步。第一,它在*执行前*进行操作:通过静态分析生成的SQL与实时模式缓存来检测错误,避免了不必要的数据库往返。第二,它是*令牌级精确的*:Hidx识别出无效的确切alias.column引用及其映射到的表,而不是依赖通用的运行时错误消息。第三,它区分了*可自动修正的错误*(那些符合可预测别名前缀模式的错误,如O.ORDERDATE替代O.O_ORDERDATE)和需要LLM重新提示的错误,从而为前者节省API调用。 ### 2.4 Oracle SQL与企业数据库部署 绝大多数NL2SQL研究针对开源SQL方言(SQLite、PostgreSQL和MySQL),在受控基准条件下进行。Oracle SQL引入了一组性质不同的挑战。
相似文章
SafeLLM:在安全关键场景中,提取作为重写的抗幻觉替代方案
本文提出SafeLLM,一种基于提取的方法,用于从安全关键文档中检索信息,表明行号选择在减少幻觉的同时保持高召回率方面优于基于重写的RAG方法。
SANE:面向生物数据的模式感知自然语言评估框架
SANE 是一种新颖的模式感知评估范式,专为生物/药理学数据集的自然语言(文本转SQL)查询而设计,能够基于真实实验模式自动生成基准测试。研究表明,采用结构化提示的少样本 LLM 无需微调即可实现准确的 SQL 生成,大多数失败案例源于输入歧义,而非查询生成错误。
SOMA-SQL:通过合成日志与执行探测解决NL-to-SQL中的多源歧义
Soma-SQL提出了一种自主方法,利用合成查询日志和歧义驱动的执行探测,解决自然语言到SQL翻译中的多源歧义问题,在执行准确率上比最先进的基线平均提升13%。
一种基于语义层的异构企业数据库自然语言转SQL智能体
本文提出了一种基于语义层的NL2SQL智能体,通过推理精心设计的语义模型将意图与物理执行解耦,在Spider2-snow基准上实现了94.15%的执行准确率。
长文本幻觉检测的健全性检验
本文介绍了一种受控不变性方法以及两种测试(Force 和 Remove),旨在确定大语言模型(LLM)幻觉检测器是依赖于推理过程还是最终答案的特征。研究提出了 TRACT,这是一种基于词汇特征的轻量级评分器,证明了其在不依赖答案层面线索的情况下仍能保持鲁棒的性能。