背景

大模型的出现使chat bi 成为一种可能,自然语句的交互,极大的提高了数据分析的效率,也极大的降低了用户使用的门槛。下面主要列出几点提高自然语句转成SQL的技巧。本文在不对大模型进行微调的情况下,通过工程的角度进行优化效果。

提示词模版


问题
xx

表结构
xx

回答问题的规则
1.比如只能用clickhouse的语法
2.不能使用哪些函数
3.xx



表结构注释

要对每一个字段进行详细注释,区分维度字段和指标字段。可以用不同的前缀来进行区分。对于有歧义的要进行详说明

create table user{
id int ,
dim_group_id int commnet ''
create_time long comment 'the unit is second'
online_count int commnet 'on line user'
}

示例数据

对于一些问题的理解,光看表结构是不理解的,对于人类也是一样,如果能理解表内容的话。能极大的提高对问题的理解。
在提示词模版里加入对示例数据

id dim_group_id create_time online_count
1 10 1723899555 10
1 11 1723899655 12
1 12 1723899655 22

给出示例答案

给出问题,再给出答案,相当于教一次大模型

比如,要看group_id是10的,现在的在线人数,有可能大模型不理解在线人数啥意思,会把online_count 加起来

然后给出正常的SQL,就能理解了,这样有其它的相关问题,它就能正常解答了

语法验证

可以通过一些开源代码对生成的SQL进行验证,是否有语法错误,如果有错误的话,可以把结果返回给大模型,让大模型重新生成语句。

外挂知识库

上面提示词模板那,有表结构,那表结构是从哪里来的呢。
知识库里的结构可以类似

XX 业务对应哪些表

可以先由大模型,挑选出合适表,然后再由代码去找到表结构,再继续组装提示词模板。当然也可以直接把表结构向量化到数据库里,直接从数据库检索。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐