Page 160 - 《软件学报》2026年第3期
P. 160
刘孟怡 等: 基于大语言模型的空间数据库自然语言查询转换方法 1123
题 [13] . SQL 在处理包含多维数据的复杂空间查询时效率不高. 现有的 NLIDB 系统通常依赖查询优化器在将自然
语言转换为 SQL 后生成最终查询结果. 这种方式虽然简化了用户的操作, 但在查询优化和性能控制方面存在不
足. 为了更好地支持空间数据查询, 有必要研究如何将自然语言直接转换为空间数据库的可执行语言. 可执行语言
能够支持空间数据运算符的选择和组合, 从而为查询优化提供更多控制能力. 此外, 通过显式生成查询计划, 用户
可以更深入地理解查询的执行过程, 并在必要时调整数据操作步骤, 改善查询性能.
为了解决上述挑战, 本文提出一种基于大语言模型的空间数据库自然语言查询转换方法, 命名为 NALSpatial,
允许用户直接使用自然语言进行空间数据库查询. NALSpatial 以其独特的两阶段方法兼具可扩展性和通用性, 保
证了物理布局与语义解耦. 在自然语言理解阶段, 通过应用知识库和基于大语言模型构建的语料库, 提取出关键实
体和查询类型. 这种设计使 NALSpatial 具备可扩展性, 适应各种空间数据类型和查询操作, 为不断演进的数据需
求提供了灵活且可持续的解决方案. 在可执行语言生成阶段, 根据查询类型选择结构化语言模型 (structured language
model, SLM), 基于实体映射规则构造数据库可执行查询. 通过动态调整结构化语言模型, 可以实现对底层数据库
的高度适应性. 这种设计确保了 NALSpatial 的通用性, 使其能够无缝集成并运行于任一空间数据库之上, 无须过
多地修改. 此外, NALSpatial 不仅是轻量级的, 对于用户查询的语义限制较小, 还是模式弱相关的, 无须为不同的数
据库重新训练模型, 部署代价小.
综上所述, 本文的贡献可以总结如下.
(1) 对用户输入的自然语言查询进行深入解析, 提取关键的空间实体信息并准确识别查询类型. 首先设计空间
数据查询实体提取算法, 利用自然语言处理技术的分词和命名实体识别功能, 结合空间关系和地点知识库, 对查询
中的空间实体信息进行全面解析. 然后, 基于大语言模型构建涵盖多种空间查询类型的高质量语料库, 使用 BiLSTM
模型进行训练, 从而实现查询类型的识别.
(2) 通过预定义的结构化语言模型与映射规则, 将自然语言的查询语义准确转化为数据库可执行语言. 首先为
基础空间查询、范围查询、最近邻居查询、空间 Join 查询和聚合查询分别构造结构化语言模型, 然后基于映射
规则将空间数据查询实体中的每个元素映射到模型实体槽中对应的元素, 进而生成可执行语言. 最后结合空间索
引和查询计划优化技术, 对生成的查询语句进行优化.
(3) 在数据库系统 SECONDO 中开发了 NALSpatial, 并基于真实的地理信息数据集进行了全面的实验验证.
实验结果表明, NALSpatial 的平均响应时间约为 2.5 s, 可翻译性为 95%, 翻译精度为 92%. 综合考虑评估指标,
NALSpatial 优于基于传统规则或机器学习的 3 种方法和基于大语言模型 GPT-4o 的方法. 此外, 验证了 NALSpatial
的性能稳定性及其各个模块的有效性.
1 相关工作
Text2SQL 技术已经取得了显著进展, 以应对自然语言处理和结构化语言生成方面的重要挑战. 为了解决这些
问题, 研究人员提出了 3 种方法: 基于规则的方法、基于机器学习的方法、混合的方法.
基于规则的方法需要明确的规则, 以便将自然语言翻译成结构化语言, 但会限制用户提出的自然语言查询的
语义表示. 代表系统是 PRECISE [14] 和 NaLIR [15] . PRECISE 定义了语义易处理性的概念, 以识别可以准确翻译成
SQL 的自然语言查询. 但是, 无法进行语义处理的自然语言查询将被 PRECISE 拒绝转换. PRECISE 使用推理规则
将已解析的查询映射到数据库元素. 然后, 将生成的结构化语言片段组合在一起得到最终的结构化语言. NaLIR 使
用 NLP 工具生成自然语言查询的解析树, 然后标识其中可以映射到 SQL 组件的节点, 并将语义覆盖表示为解析
树的一个子集. NaLIR 不仅向用户解释了查询的处理方式, 而且还呈现多种理解方式供用户选择, 以减轻用户消除
歧义的负担. 当查询超出语义范围时, NaLIR 可以为用户生成构造查询的建议.
基于机器学习的方法可以直接学习自然语言到语义表示的映射, 但该方法的性能在很大程度上取决于训练数
据的质量 [16] . 代表系统是 IRNet [17] 和 ValueNet [18] . IRNet 在自然语言查询和数据库模式之间执行模式链接, 目标是
识别 NLQ 中提到的列和表. 然后使用基于语法的神经模型来合成树形结构的中间查询语言, 并从中推断出 SQL.

