本文将介绍如何配置和测试析言,帮助模型来理解业务,提高生成SQL的准确率。
您可以从以下几个方面配置和测试析言:
配置数据表信息。
数据表、列、值的描述影响模型对于数据表的选择和生成查询问题的SQL,数据表信息可以帮助模型更好地理解数据表内容。
配置企业知识。
在数据表信息配置完善的基础上,根据对析言的调试结果优化企业知识的配置。企业知识包括知识名词解释、同义词解释、业务逻辑解释及优化案例管理,不同类型的企业知识具备不同的作用。详情请参见企业数据管理。
知识名词解释:用于解释业务场景的专有名词。
同义词解释:用于解释数据表中存储字段的多种常用叫法。
业务逻辑解释:非通俗常规性知识,用于解释企业中特定的逻辑,例如定义计算公式、设置约定条件,业务逻辑并非添加数量越多效果越好。
优化案例管理:仅标准版MIX支持此功能。在尝试调整问题问法及数据管理后,模型依然无法输出预期结果的情况下,您可以通过添加优化案例来指导模型进行学习。
改进提问技巧。
推荐从易向难进行提问,测试析言的回答效果。
配置数据表信息
在数据表管理中,打开已经连接的数据库,选择数据表,配置数据表信息。
参数名称 | 是否必填 | 参数说明 |
数据表描述 | 必填 | 对数据表的整体的解释。解释这张数据表是关于什么的、主要包含什么信息、可以用来查询什么内容。 常见配置话术:这是xx表,存储xx信息,用于查询xx内容。 例如:这是customers表,存储客户信息,用于查询客户名称、客户邮箱等内容。 |
列描述 | 必填 | 描述字段的关键信息。无需在列描述中枚举或做过多的解释说明,简单扼要地描述字段表示的业务语义即可,字数建议控制在10字以内。 对于枚举类型的字段,如果需要解释每个枚举值的含义,建议在枚举值的映射中进行配置,不要写在列描述中。 |
外键 | 跨表查询必填 | 外键定义了数据表之间的依赖关系,如果需要多表连接,必须配置外键。 |
枚举类型候选值 | 枚举类型字段必填 | 是否枚举选择是,表示该字段是枚举类型的字段,需要同步候选的枚举值。 |
枚举值管理 | 枚举类型字段必填 | 如果该枚举列存储的不是真实的枚举值,而是用特殊的编码来表示不同的含义,需要配置枚举值的映射关系,说明每个字段值的含义。下图左侧“枚举值”是数据库中实际存储的值,右侧“映射值”是该值所表示的含义。例如:产品类型中的01代表电器,02代表家具,03代表服装。 |
数据样例 | 选填 | 该字段在数据库中的样例值。对于表示时间日期的列,建议配置数据样例,帮助模型理解时间日期的格式。 |
配置企业知识
为什么配置企业知识
当模型不理解提问中的某个名词或者计算逻辑的时候,需要配置相应的企业知识,如业务逻辑、名词解释、案例等,帮助模型来理解业务,正确的选表和选字段,提高生成SQL的准确率。
测试问题 | 模型回答错误原因 | 优化措施 |
今天销量最高的大区是哪个大区? | 模型取错了时间,选取了交付时间,实际是要选销售时间 | 增加一条业务逻辑:计算某段时间的销量时,使用xxx字段。 |
2024年在xx省xx市发动机企业销量及占比月度走势 | 模型理解错误,占比为xx省xx市各发动机企业占所有发动机企业的占比,而非xx省xx市占xx的,SQL占比不对 | 建议增加一条业务逻辑解释: xx省xx市发动机企业销量占比=xx省xx市各发动机企业的销量/所有发动机企业的销量*100% |
查询商家IDxxx的账户总金额 | 模型选错字段,生成的SQL有误 | 列描述虽有定义对应的列,但是对于总金额、总余额列描述还是会有混淆,可以在同义词配置中添加总余额=xxx、总金额=xxx |
举个例子,第一次去别人家做客,需要找一个东西。
一些通识类或者有家里有标明xx东西在哪里的情况下。即便第一次来家里,也会知道碗筷在厨房里 ,衣服在衣柜里 ,鞋子在鞋柜里。或者知道手表在桌子上(有标明,即字段行描述中有写) 这些是不需要额外的输入即可找到,即标准模型可以直接生成SQL
针对一些不常见的,或者有具体含义的东西,需要一些额外的输入才能被找到,即需要配置业务逻辑。
今年生日穿的衣服在哪里? 在没有额外的输入的时候,不知道具体指的哪件衣服,需要额外的信息输入: 今年生日穿的衣服是一件红色,印有一只黑色猫猫的大衣。 有了这种输入,就可以快速找到是哪一件。 今年生日穿的衣服是一件红色,印有一只黑色猫猫的大衣。 对析言来说,这就是一条业务逻辑。
小黑在哪里? 同样,没有额外的输入的话,并不清楚小黑是什么。需要信息输入如:小黑是家里养的那只黑色的小猫。这是一个名词解释。
企业知识配置原则
语言简洁清晰,避免使用大段文本。
避免在业务逻辑中出现复杂的推理、或者if else的判断等。
业务逻辑优先使用数学公式或者SQL片段的形式。
业务逻辑之间不能有冲突,也不能与用户的问题、表格信息、案例库等出现冲突。
企业知识配置说明
知识名词解释
在知识名词解释页面,点击新增知识,输入知识名称和知识描述,点击保存。
示例如下:
知识名称配置为收入
,知识描述配置为收入指的是financial_report表的amount字段,amount为正数,即 financial_report.amount>0
。
同义词解释
在同义词解释页面,点击新增词语,输入词语及其同义词,选择数据表,点击确认。
同义词主要包括以下几个方面:
枚举值的同义词。
例如:枚举值为“红旗”。则此处,词语配置为
红旗
,同义词配置为一汽红旗、红旗公司
。字段名的同义词。
例如:数据表中的字段为“品牌”,则此处,词语配置为
品牌
,同义词配置为企业、公司
。
业务逻辑解释
在业务逻辑解释页面,点击新增逻辑解释,输入业务逻辑解释和业务逻辑类型,点击保存。
业务逻辑解释不是配置数量越多效果越好,建议精简配置。业务逻辑类型建议选择系统智能判断,如果是绝大多数问题都需遵循的业务逻辑,可设置为全局类型。
业务逻辑解释中配置的自定义指标、公式等,建议以数学公式或者SQL片段的形式给出。自定义指标需要配置为系统智能判断,并写上对应的计算公式。
数学公式形式:xx指的是xxx,定义是xxx,计算公式是xxx,如table.columnA/ (table.columnB+table.columnC} 。
例如:完成率,同义词是完成进度、完成状态、完成情况,定义为:实际值/目标值,如果分母为0,完成率为-999。
SQL片段的形式:xx指的是xxx,定义是xxx,计算方式是xxx,如SELECT AVG(column_name) AS average_value FROM table_name。
例如:完成率,同义词是完成进度、完成状态、完成情况,计算方式为:(CASE WHEN target_value = 0 THEN -999 ELSE actual_value / target_value END AS completion_rate)。
错误示例 | 建议修改 |
customer表里的用户数的逻辑是从表 ods_xxx_table中进行count(distinct userid)。 | customer表的用户指的是tablename.colname字段,求玩家用户数时count(distinct colname) |
转化率,也叫线索转化率,定义为:线索总数/大定总数。 | 转化率,也叫线索转化率,定义为:线索总数/大定总数,即COUNT(DISTINCT clew_identity_id) / SUM(CASE WHEN is_deposit = 1 OR is_deposit_new = 1 THEN 1 ELSE 0 END) |
如果表中有a字段,计算时一定要把a字段放在where条件里? | 当查询xx问题时,表xx的字段A=xxx。 |
优化案例管理
仅标准版MIX支持此功能。
在优化案例管理页面的案例库管理页签,点击新增问法,输入问法描述和预期正确执行的完整SQL,点击保存。
示例如下:
问法描述中输入2024年4月上海汽车销量
,预期正确执行的完整SQL中输入SELECT SUM(total) AS sales_qutity FROM tb_vehicle_newcarn WHERE substr(date,1,5) = "2024-03" AND province = '上海'
。
提问技巧
常见提问公式
when+who+where+what? 即查询xx时间主体是xx,条件是xx的某个指标。
从问题的难易程度划分为5个层级,推荐从易向难进行提问:
⭐️ 问题中包含的要素信息均能直接对应到表中存储的具体字段。
例如:2024年10月20日产品A的销售额是多少?此问题中的时间、产品、销售额在数据表中均有对应的字段。
⭐️ ⭐️ 提问的问题中包含的要素信息可以对应到表中存储的具体字段,但需要进行基础运算。
例如:统计近两年每个季度每个类别的总销售额。
⭐️ ⭐ ️ ⭐️ 提问的问题中包含的要素信息涉及到企业的业务逻辑。
例如:列出所有已发货订单的详细信息。
说明:已发货的订单在数据表中没有直接字段,而是用物流状态这个字段来表达订单的状态,此时需要配置一条业务逻辑:当查询订单状态时,指的是查询订单的物流状态,使用order_status字段的内容。
⭐️ ⭐ ⭐️ ⭐ 对于标准版MIX,如果优化业务逻辑或同义词配置后,模型依然表现不好,可以通过配置案例库来帮助模型自学习,添加具有代表性的一个问题和其对应的预期生成SQL内容。
⭐️ ⭐ ⭐️ ⭐ ⭐ 对于业务逻辑较复杂的可收敛场景,如果上述方式均无法满足准确率及时效性预期,建议使用定制版TURBO,对模型进行业务定制。
定制版TURBO仅用于定制化项目交付(包含使用定制模型进行付费POC项目交付)。若需购买定制版TURBO,请在下单前咨询对接的商务人员或提交工单至析言GBI产品研发团队。
提问时的常见错误
提问时没描述清楚
错误示例
错误原因
改进建议
哪个车销量增长?
没有限制时间,销量增长无法对比
8月对比7月,哪个车的销量有增长?
9月份优惠券使用情况
使用情况没有具体的说明,具体指优惠券使用率,优惠券使用金额,优惠券使用的数量?
9月份通过优惠券付费的订单数量,或 9月份优惠券的使用金额等?
一次提问中包含了多个问题
一个问题只能写一个SQL语句,析言无法处理一个问题需要多条SQL来回答的情况。
错误示例
改进建议
每个店铺5月份的交易额以及各个门店9月的优惠券使用情况
建议分两次来提问。
去年广东省的平均销量和每个月的销量分别是多少
一条SQL写不出来,建议分两次来提问。
提问中包含了业务逻辑,计算公式等众多信息
错误示例
改进建议
xx市各车型(牵引车、载货车、自卸车、搅拌车)销量占比
问题修改为:xx市各车型的销量占比
增加一条业务逻辑:当咨询车型且未指定具体某一车型时,车型指的是牵引车、载货车、自卸车、搅拌车,即table表中字段chexing in (1,2,3,4)
这些宝宝数据里面,有多少是喝xx产品的,xx产品在cdp_order_detail_new的goods_brand=‘xx’和cdp_rolex_sku的goods_brand=‘xx’
将这一段放在业务逻辑里:xx产品在cdp_order_detail_new的goods_brand=‘xx’和cdp_rolex_sku的goods_brand=‘xx’
提问中包含了析言GBI暂不支持的功能
暂不支持的功能
错误示例
错误原因
改进建议
非问数场景
根据用户角色统计2024年8月的活跃用户数,并导出
析言支持对数据结果下载,但提问中的导出命令无法执行
删除提问中的导出命令,修改为:根据用户角色统计2024年8月的活跃用户数
BI分析
员工薪酬与商品收入是否满足线性相关,如果满足线性关系,请说明相关性以及如何影响。
线性相关的分析类场景暂不支持
分析、预测类问题不支持,提问中不要包含相关描述。
SQL维度的多轮
第一轮:2024年8月份杭州门店销量是多少?
第二轮:在上述查询结果中,9月销量是多少?
析言GBI多轮对话是问题维度,不支持在上次查询结果中进行二次查询
第一轮:2024年8月份杭州门店销量是多少?
第二轮:9月销量是多少?
常见问题
时间日期相关
析言有默认的时间理解,对于动态的时间表达式比如今天、去年等,析言默认以北京时间作为当前的时间进行计算,暂不支持自定义。
析言支持的动态时间表达式及对应的计算逻辑。
动态时间表达式的计算逻辑不支持自定义,即无法通过业务逻辑的配置来更改时间的推导。
例如:近三天,析言默认近几天或者过去几天是包含今天的,如果不希望包含今天,需要换一种说法:不包含今天的近三天。
输出展示
查询结果:析言默认展示数据库中实际查到的列名和列值,不支持通过业务逻辑的配置进行更改。
比如这条业务逻辑是不支持的:查询结果展示字段中文名,不要展示英文原名。
文本回复:析言输出的文本回复是对数据库查询结果的概括,不支持通过业务逻辑进行调整。
比如这条业务逻辑是不支持的:当问题以“喂”开头时,回复固定话术xxxx。