You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用LLM针对高规范化数据模型生成SQL语句

高度规范化数据库表的LLM查询生成指南

当数据库采用EAV(实体-属性-值)这类高度规范化结构(仅含通用列名,无业务语义化字段)时,仅靠表结构无法让LLM理解数据的业务含义,必须补充以下关键上下文与指令,才能让LLM生成符合需求的查询语句并响应用户问题:

1. 属性语义映射规则

提供属性名与业务含义的对应关系,以及关键属性的业务规则(如正常范围、单位等),这是LLM理解数据的核心。以示例表为例:

  • BP-Sys:收缩压,正常范围90-140mmHg
  • BP-Dia:舒张压,正常范围60-90mmHg
  • Temperature:体温(华氏度),正常范围97-99°F
  • Height:身高(英尺)
  • Weight:体重(磅)

2. 表结构的明确说明

直白告知LLM表的结构类型与各列的业务作用:

  • 该表为EAV结构,每一行存储一个实体的单个属性值
  • Surrogate ID:仅为行唯一标识,无业务意义
  • Entity ID:实体的唯一标识,此处代表患者ID
  • Attribute:实体的属性名称(对应上述语义映射中的键)
  • Value:属性的具体取值,需结合属性语义判断数值类型与单位

3. 明确的查询生成指令

给LLM清晰的任务流程:

  1. 先将用户的自然语言问题转化为基于EAV结构的查询逻辑
  2. 生成可执行的查询语句(如SQL)
  3. 根据查询结果与业务规则给出最终结论

示例场景

上下文与指令输入

属性语义映射:

  • BP-Sys: 收缩压,正常范围90-140mmHg
  • BP-Dia: 舒张压,正常范围60-90mmHg
  • Temperature: 体温(华氏度),正常范围97-99°F
  • Height: 身高(英尺)
  • Weight: 体重(磅)

表结构说明:该表为EAV结构,各列含义:

  • Surrogate ID:行唯一标识,无业务含义
  • Entity ID:患者唯一ID
  • Attribute:患者的属性名称
  • Value:属性对应的数值,单位见语义映射

指令:根据上述信息,针对问题「患者2的血压是否处于正常范围?」,生成查询语句并给出判断结果。

生成的查询语句(SQL)

-- 查询患者2的收缩压和舒张压数值
SELECT Attribute, Value
FROM patient_eav_table
WHERE Entity ID = 'Patient2' AND Attribute IN ('BP-Sys', 'BP-Dia');

结论逻辑

由于查询结果中患者2无血压相关记录,无法判断其血压是否处于正常范围。

内容的提问来源于stack exchange,提问作者S2L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:52:18