1. 什么是知识
知识(Knowledge)是指在自然语言到SQL(NL2SQL)转换过程中,用于帮助大模型理解业务领域特定术语、逻辑、规则等的辅助信息。
知识的配置旨在提升模型生成SQL/MQL的准确性和可解释性,尤其是在面对复杂业务场景时。
2. 为什么要配置知识
- 提升模型理解能力:通过配置业务知识,模型能够更好地理解业务领域的特定术语、逻辑和规则,从而生成更准确的MQL语句;
- 应对复杂业务场景:在业务逻辑复杂、数据模型不规范或多义词存在的情况下,配置知识可以帮助模型避免生成错误的MQL;
- 增强模型泛化能力:通过合理的知识配置,模型能够在面对新问题时,基于已有知识进行推理,提升泛化能力;
- 减少人工干预:通过配置知识,减少模型生成MQL后的人工修正工作,提升自动化程度。
3. 知识配置基本原则
3.1 配置原则
- 避免过度配置:不要过度依赖业务知识,避免让模型过于依赖外部知识而失去泛化能力。业务知识应作为辅助,而不是主导。
- 准确性:确保业务知识的准确性和时效性,错误或过时的业务知识会导致模型生成错误的SQL语句。
- 简洁性:业务知识应尽量简洁明了,避免过于复杂的描述。过于复杂的知识可能会增加大模型的推理负担,降低生成SQL&Python的准确性。
3.2 前提条件
- 明确业务需求:在配置知识之前,必须明确业务的具体需求,了解业务领域的术语、逻辑和规则;
- 数据模型清晰:确保数据模型采用维度建模,并且结构清晰,维度、指标等字段唯一且定义明确,避免因数据模型不规范导致的误解;
- 知识来源可靠:配置的知识必须来源于可靠的业务文档、专家意见或经过验证的业务规则,确保知识的准确性和时效性;
- 大模型能力评估:在配置知识之前,评估大模型的基础能力,确保大模型能够有效利用配置的知识进行推理和生成。
4. 知识分类及配置方法
4.1 知识分类
- 行业术语(名词):当行业业务领域有特定的术语或缩写时,需要配置业务知识来帮助模型理解这些术语的含义。例如,在金融领域“ROI”代表“投资回报率”。
- 业务逻辑:当业务逻辑复杂且不易通过简单的自然语言描述时,配置业务知识可以帮助模型更好地理解并生成正确的SQL。
- 多义词:当自然语言问句中的词汇有多重含义时,配置业务知识可以帮助大模型选择正确的解释。例如,股票“交易量”可以“交易数量”,也可以指“交易金额”。
- 业务规则:当业务有特定的规则或约束时,配置业务知识可以确保生成的SQL符合这些规则。例如,某些维度只能取特定的值,模型维度要剔除一些值。
- 专有词库:若问句无法命中知识,分析后是分词的原因,需要提供自定义专有词库。
知识分类参考:
序号 | 知识类型 | 分类描述 | 细分分类 | 细分描述 |
---|---|---|---|---|
1 | 业务知识 | 代表业务术语、业务含义、业务同义词,业务转换等 | 专业术语与定义类 | 指定义业务术语含义等业务知识,用于统一专业知识,便于大模型理解匹配指标; |
2 | 业务基础指标类 | 指针对核心业务指标计算公式(如比率类、汇总类)提供的统计逻辑; | ||
3 | 定制知识 | 除却包含业务含义之外,需要按照制定逻辑执行业务需求。 | 数据清洗与填充类 | 指对数据质量条件的预处理:如空值填充(如空值转0)、数据去重(如剔除空用户编号)等; |
4 | 关键词执行规则类 |
| ||
5 | 时间维度类 |
| ||
6 | 系统知识 | 代表系统默认配置的一些知识。 | 开发约束与规范类 | 指规定代码实现的边界条件(如禁止返回JSON_SQL)、表关联方式(仅LEFT JOIN)及字段严格匹配要求,以及其他系统需要默认配置的知识。 |
4.2 配置方法
- 知识名称:即key,能否命中知识与key高度相关,可用分号分隔key,如:(销售人员;客户经理),避免出现“情况”、“明细”、特殊字符(_%?*等)。
- 知识内容:即知识涵盖的详细信息,知识也是提示词的来源,该部分内容如果问句命中知识,会纳入提示词,由大模型进行理解学习。一般采用句式:
- “XXX”是指“XXXX”:,
- 当问句涉及或问到“XXX”,进行如下处理:xxx,
- 具体写法可参照1配置原则;
- 是否启用:分三个状态
- 启用:常用状态,知识默认启用。
- 禁用:弃用知识可选择禁用,或者删除。
- 必选:设置必须,该知识优先级高于启用。
- 嵌入问句:
- 是:嵌入问句是每个问句都会带上该知识,一般不用嵌入问句;
- 否:正常业务知识不用嵌入问句;
4.3 配置示例
业务方面,满足以下场景情况需配置知识:
- 存在同义词:尽可能列举相同含义但是不同问法的词语;
知识名称 | 知识内容 | 启用状态 |
---|---|---|
用户分布 | 用户分布是指“用户数” | 启用 |
销售人员;客户经理 | (销售人员;客户经理)是指“客户经理” | 启用 |
姓名 | 问句中涉及到**姓名**字眼时,**姓名**是指用户名称 | 启用 |
- 业务上特有的规范:一般是业务规则/规范,或则按照一定业务规则执行。
知识名称 | 知识内容 | 启用状态 |
---|---|---|
当月;本月 | (当月;本月)指上个月的月初到月末 | 启用 |
诉求 | 是指受理业务类别不为空 | 启用 |
去年12月份,150万-200万资产客户有哪些,他们持有产品的类型有哪些,分别持仓多少 | 问句:去年12月份,150万-200万资产客户有哪些,他们持有产品的类型有哪些,分别持仓多少 | 启用 |
- 同词根-多词组-不同义词或容易产生歧义的指标:如果各个单位能统一口径可以配置知识,如果不能就不配置知识,由系统反问;
知识名称 | 知识内容 | 启用状态 |
---|---|---|
缴费;现金缴费用户数 | 当问句中涉及**缴费**字眼时,根据**实收日期**来做时间条件 | 启用 |
工商业;一般工商业 | (工商业;一般工商业)是指用电类别为:工商业及其它用电、普通工业和商业 | 启用 |
5. 知识上架流程
- 知识采集:由知识团队获取业务知识;
- 知识评审:由技术专家和业务专家参与评审,对知识进行权威性认证;
- 测试与验证:在测试环境中配置业务知识后,充分测试和验证,确保生成的SQL&Python符合预期。通过人工审核或自动化测试来验证,保持稳定。
- 知识发布:将该知识发布到生产环境,并测试验证。