当前位置: 首页 > news >正文

SuperSonic提示词设计与实现深度解析

📖 文档概述

本文深入解析 SuperSonic 文本到 SQL 流程中的提示词(Prompt)体系,从核心机制到实际应用,全面剖析提示词如何引导大语言模型准确生成 SQL 查询。

🎯 核心内容导览

  • � 提示词构建机制:Few-shot 示例选择、Schema 格式化、上下文信息注入
  • � 多场景模板设计:SQL 解析、语义纠错、物理优化、语义建模
  • ⚙️ 工程化实践:源码解析、最佳实践、风险防控策略
  • � 实际案例分析:基于真实数据的完整流程演示

📚 阅读指南

  • 初学者:建议从第一部分的架构概述开始,了解整体流程
  • 开发者:重点关注第三部分的源码解析和第四部分的实际案例
  • 架构师:可直接阅读第二部分的模板设计和第五部分的最佳实践

🏗️ 第一部分:架构与核心机制

1.1 🔄 提示词在 Text2SQL 流程中的关键位置

SuperSonic 的 Text2SQL 流程是一个精心设计的多阶段处理管道,提示词在其中发挥着关键的引导作用:

核心组件职责:

  • 请求构建LLMRequestService#getLlmReq 将查询语句、数据集 Schema、当前日期、术语/实体值映射等准备为 LLMReq
  • Prompt 构造OnePassSCSqlGenStrategy#generatePrompt 通过 PromptHelper 拼装 Few-shot 示例、结构化 Schema 串、侧边信息,并套用 ChatApp 里的模板
  • 自一致性推理OnePassSCSqlGenStrategy#generate 并行多次推理,ResponseHelper.selfConsistencyVote 投票选出最优 SQL
  • 纠错与优化LLMSqlCorrectorLLMPhysicalSqlCorrector 根据专用模板对 SQL 进行规则化纠错与性能优化
  • 语义建模LLMSemanticModeller 使用建模模板,生成模型名、字段类型与聚合建议等

1.2 🎯 Few-shot 示例构建的智能机制

源码位置PromptHelper#getFewShotExemplars

Few-shot 示例是提示词系统的核心组成部分,通过精心设计的示例选择和组合策略,确保模型能够理解查询意图并生成准确的 SQL。

🔄 核心流程
  • � 示例来源合并
    • 动态示例:来源于请求 LLMReq.dynamicExemplars(如 Agent 预置问法/记忆)
    • 向量召回:若未达召回阈值 PARSER_EXEMPLAR_RECALL_NUMBER,使用 ExemplarService.recallExemplars(query, num) 通过向量检索补齐
  • �️ 智能分桶与筛选
    • 以相似度阈值 0.989 划分为"极高相似"与"普通相似"两组
    • 对普通相似组按相似度升序,剔除低分段,保留靠后的高分样本(保证代表性)
  • � 最相似样本保障
    • 无"极高相似"时,至少保证包含一个 mostSimilar
  • � 多次自一致性采样
    • 依据 PARSER_SELF_CONSISTENCY_NUMBER 进行多次随机采样
    • 每次选择至多 PARSER_FEW_SHOT_NUMBER 个示例,形成多组 Few-shot 列表
💡 工程价值
  • �️ 稳定性保障:保证每次推理都有"强约束"样本,减少漂移与幻觉
  • � 多样性增强:通过随机与多次投票提升稳定性,结合 ResponseHelper 投票策略选优
  • �️ 场景隔离:召回实现依赖嵌入向量(参考 EmbeddingServiceImpl),结合 collection 维度可做 Agent/场景隔离

1.3 📊 Schema 信息构建与格式化

源码位置PromptHelper#buildSchemaStr

Schema 信息的结构化表示是确保 SQL 生成准确性的关键基础。

📋 输出格式示例
DatabaseType=[MySQL], DatabaseVersion=[8.0], Table=[sales], 
PartitionTimeField=[dt FORMAT 'yyyy-MM-dd'], PrimaryKeyField=[order_id],
Metrics=[<gmv ALIAS 'GMV,' FORMAT 'DECIMAL' COMMENT '总成交额' AGGREGATE 'SUM'>],
Dimensions=[<brand ALIAS '品牌;' DATATYPE 'STRING' COMMENT '品牌名称'>],
Values=[<brand='Apple'>]
🎨 设计要点
  • �️ 结构化包裹:指标/维度均以 <...> 包裹,属性以关键词与引号呈现,降低 LLM 解析歧义
  • �️ 别名与格式ALIASFORMATCOMMENTAGGREGATE 明确声明,保障生成 SQL 字段与聚合一致性
  • � 分区与主键PartitionTimeFieldPrimaryKeyField 单独列出,支持时间范围与去重场景
  • � 关联值:当启用 PARSER_LINKING_VALUE_ENABLE,在 Values 段提供 <field='value'>,加强实体对齐与过滤
⚙️ 工程实践
  • � 字段数量控制:通过 PARSER_FIELDS_COUNT_THRESHOLD 控制是否下采样到"匹配字段子集",避免 prompt 过长
  • �️ 数据库适配:带上 DatabaseType/Version 便于规则与语法适配(与侧边信息的 WITH 支持校验联动)

1.4 🌐 上下文与侧边信息构建

源码位置PromptHelper#buildSideInformation

侧边信息为模型提供必要的上下文约束和业务知识,确保生成的 SQL 符合实际业务需求。

组成部分
  • CurrentDate:以 yyyy-MM-dd 注入当前日期,配合时间范围规则
  • PriorKnowledge:可注入外部知识/历史上下文(如策略、业务规则)
  • 数据库能力提示:若不支持 WITH(基于 EngineType 与版本比较),注入 [Database does not support with statement],对齐模板中的规则约束
  • DomainTerms:来自匹配到的术语(LLMReq.Term),以 <name COMMENT 'desc'> 结构提示领域概念,帮助同义词/别名解析
核心价值
  • 语法边界明确:提前给出语法能力边界,降低错误推理概率
  • 领域知识注入:将域内术语与知识显式化,减少幻觉与字段误用

🎨 第二部分:多场景提示词模板设计

2.1 🔍 语义 SQL 解析模板(S2SQL_PARSER)

源码位置OnePassSCSqlGenStrategy.INSTRUCTION

这是 SuperSonic 最核心的提示词模板,负责将自然语言查询转换为语义 SQL。

📝 模板结构
#Role: You are a data analyst experienced in SQL languages.
#Task: ... convert natural language question to SQL ...
#Rules:
1. SQL columns and values must be mentioned in the `Schema`, DO NOT hallucinate.
2. ALWAYS specify time range using `>`,`<`,`>=`,`<=` operator.
3. DO NOT include time range if not explicitly expressed in the `Question`.
4. DO NOT calculate date range using functions.
5. ALWAYS use `with` statement if nested aggregation is needed.
6. ALWAYS enclose alias declared by `AS` command in underscores.
7. Alias created by `AS` command must be in the same language as the `Question`.
🔑 关键变量
  • Exemplars:Few-shot 示例集合
  • Question:用户的自然语言查询
  • Schema:结构化的数据库模式信息
  • SideInfo:侧边信息和上下文约束

2.2 🔧 语义 SQL 纠错模板(S2SQL_CORRECTOR)

源码位置LLMSqlCorrector.INSTRUCTION

专门用于对初步生成的 SQL 进行语义层面的纠错和优化。

🎯 核心特点
  • �‍💼 Role/Task:资深数据工程师对"初级工程师写的 SQL"进行审阅与纠正
  • � Rules:时间范围显式比较、禁止函数计算时间、字段必须在 #Schema
  • � 变量#Question#Schema#InputSQL#Response
  • ⚙️ 实现要点:从 Text2SQLExemplar 注入 dbSchema,以严格字段集约束纠错范围

2.3 ⚡ 物理 SQL 优化模板(PHYSICA

http://www.dtcms.com/a/521671.html

相关文章:

  • 重庆网站设计哪家好山东省建设厅特种作业证查询网站
  • python 中 TypeError: Object of type TestCase is not JSON serializable
  • 【大模型应用开发 9.LangGraph从入门到实战·下】
  • 网站建设制作一个网站的费用免费免备案域名
  • 网站链接优化网上商城 网站
  • 网站建好了怎么做淘宝客腾讯域名备案
  • 导购网站开发 源码wordpress中常用插件安装包
  • 5 Concepts and Conventions(概念和约定)
  • 韶关住房和城乡建设局网站软件wap网站
  • 58同城推广网站怎么做深圳网站建设raygf
  • 如何确保PDF转CAD后的比例准确?
  • 新手什么网站做外贸效果图网站推荐大全面包砖
  • html做网站需要服务器吗cn域名多少钱一年
  • 网站怎么做免费推广方案苏州协会网站建设
  • 网站开发后台技术h5企业模板网站
  • IDEA 启动前端项目 IDEA 切换分支
  • 沈阳网站维护公司网站优化系统
  • 【从零开始构建性能测试体系-08】如何诊断性能瓶颈:从服务器到数据库的全方位分析
  • 怎么设计网站页面南昌手机建站模板
  • wordpress几个网站共用用户白山镇seo快速排名
  • 多空谨慎致成交清冷!强撑指数稳局面!
  • javaweb调用dify接口并流式返回
  • 网站技术部做什么网站如何做入支付接口
  • 网站建设主流开发语言毕设帮做网站
  • 上海网站开发企业七牛wordpress后台无法登录
  • 什么网站能接工地做注册免费网站
  • 智慧物业管理系统优化营商环境
  • 1024是什么意思?
  • ICCV 2025 最佳论文系列整理:聚焦计算机视觉前沿突破
  • 公司网站属于什么类型河北省住房和城乡建设厅网站