SuperSonic Text2SQL:智能自然语言转SQL解析引擎
概述
SuperSonic的Text2SQL功能是其核心能力之一,通过大语言模型(LLM)将自然语言查询转换为结构化的SQL语句。该系统采用了先进的自一致性推理、多轮纠错、语义映射等技术,实现了高质量的自然语言到SQL的转换。
核心特性
- 多策略SQL生成: 支持一次性自一致性推理等多种生成策略
- 智能Schema映射: 自动映射自然语言到数据库Schema元素
- 多轮纠错机制: 通过LLM对生成的SQL进行智能纠错
- Few-shot学习: 基于示例的上下文学习提升生成质量
- 自一致性推理: 通过多次推理投票提升结果可靠性
整体架构
核心组件详解
1. LLMSqlParser - 主解析器
是Text2SQL的入口组件,负责整个解析流程的协调。
核心流程:
public void parse(ChatQueryContext queryCtx) {// 1. 判断是否启用LLM解析if (!queryCtx.getRequest().getText2SQLType().enableLLM()) {return;}// 2. 获取数据集IDLong dataSetId = requestService.getDataSetId(queryCtx);// 3. 执行LLM解析tryParse(queryCtx, dataSetId);
}
重试机制:
- 支持多轮重试,默认最大重试次数可配置
- 失败时动态调整temperature参数增加随机性
- 每轮重试都会进行SQL去重和验证
2. LLMRequestService - 请求服务
负责构建LLM请求和管理数据集解析。
主要功能:
- 数据集解析: 通过DataSetResolver确定查询对应的数据集
- Schema构建: 根据映射结果构建精简的Schema信息
- 请求封装: 将所有必要信息封装为LLMReq对象
3. SqlGenStrategy - SQL生成策略
采用策略模式支持多种SQL生成方式:
LLM SQL生成策略
OnePassSCSqlGenStrategy - 一次性自一致性策略
是当前主要使用的SQL生成策略。
核心特性:
- 自一致性推理: 多次独立推理后投票选择最佳结果
- Few-shot学习: 动态检索相关示例作为上下文
- 并行推理: 多个推理任务并行执行提升效率
实现流程:
public LLMResp generate(LLMReq llmReq) {// 1. 检索Few-shot示例List<List<Text2SQLExemplar>> exemplarsList = promptHelper.getFewShotExemplars(llmReq);// 2. 为每个自一致性推理生成PromptMap<Prompt, List<Text2SQLExemplar>> prompt2Exemplar = new HashMap<>();for (List<Text2SQLExemplar> exemplars : exemplarsList) {Prompt prompt = generatePrompt(llmReq, llmResp, chatApp);prompt2Exemplar.put(prompt,