1. 什么是知识
知识(Knowledge)是指在自然语言到SQL(NL2SQL)转换过程中,用于帮助大模型理解业务领域特定术语、逻辑、规则等的辅助信息。
知识的配置旨在提升模型生成SQL/MQL的准确性和可解释性,尤其是在面对复杂业务场景时。
2. 为什么要配置知识
- 提升模型理解能力:通过配置业务知识,模型能够更好地理解业务领域的特定术语、逻辑和规则,从而生成更准确的MQL语句;
- 应对复杂业务场景:在业务逻辑复杂、数据模型不规范或多义词存在的情况下,配置知识可以帮助模型避免生成错误的MQL;
- 增强模型泛化能力:通过合理的知识配置,模型能够在面对新问题时,基于已有知识进行推理,提升泛化能力;
- 减少人工干预:通过配置知识,减少模型生成MQL后的人工修正工作,提升自动化程度。
3. 知识配置基本原则
3.1 配置原则
- 必要性原则:
- 只配置大模型无法正确理解的知识
- 优先通过模型自身能力解决问题
- 最小化原则:
- 用最简洁的语言表达知识
- 限定最小适用范围
- 避免包含无关信息
- 准确性原则:业务知识应尽量简洁明了,避免过于复杂的描述。过于复杂的知识可能会增加大模型的推理负担,降低生成SQL&Python的准确性。
- 确保知识内容描述准确
- 定期验证知识有效性
- 一致性原则:
- 同类知识采用统一表述方式,如条件允许,尽量将同类知识合并在一条知识中
- 避免知识间矛盾冲突
- 泛化性原则:
- 设计可类推的知识结构
- 避免针对特定问句的定制
3.2 配置流程。
4. 知识分类及配置方法
4.1 知识分类
- 业务术语:业务领域特定的术语或缩写时,需要配置业务知识来帮助模型理解这些术语的含义、计算等内容。例如,在金融领域“ROI”代表“投资回报率”。
- 代码知识:防止大模型生成的代码出现错误、缺失,或者要求大模型按照我们指定方法来生成代码等。
4.2 配置方法
- 知识名称:即key,能否命中知识与key高度相关,可用英文分号分隔key中的关键词,如:(销售人员;客户经理),避免出现“情况”、“明细”、特殊字符(_%?*等)。
- 知识内容:即知识涵盖的详细信息,知识也是提示词的来源,该部分内容如果问句命中知识,会纳入提示词,由大模型进行理解学习。一般采用句式:
- “XXX”是指“XXXX”:,
- 当问句涉及或问到“XXX”,进行如下处理:xxx,
- 具体写法可参照1配置原则;
- 是否启用:分三个状态
- 启用:常用状态,知识默认启用。
- 禁用:弃用知识可选择禁用,或者删除。
- 必选:设置必选,该知识将作用于该模型的所有问句。
- 嵌入问句:
- 是:嵌入问句是将知识放入重要知识中。
- 否:该知识放入额外知识中;
在提示词中,重要知识的位置距离问句近,效果较好。在系统中要合理规范嵌入式知识的数量,避免过多导致的效果下降。
4.3 配置示例
业务方面,满足以下场景情况需配置知识:
- 存在同义词:尽可能列举相同含义但是不同问法的词语;
知识名称 | 知识内容 | 启用状态 |
---|---|---|
用户分布 | 用户分布是指“用户数” | 启用 |
销售人员;客户经理 | (销售人员;客户经理)是指“客户经理” | 启用 |
姓名 | 问句中涉及到**姓名**字眼时,**姓名**是指用户名称 | 启用 |
- 业务上特有的规范:一般是业务规则/规范,或则按照一定业务规则执行。
知识名称 | 知识内容 | 启用状态 |
---|---|---|
当月;本月 | (当月;本月)指上个月的月初到月末 | 启用 |
诉求 | 是指受理业务类别不为空 | 启用 |
- 同词根-多词组-不同义词或容易产生歧义的指标:如果各个单位能统一口径可以配置知识,如果不能就不配置知识,由系统反问;
知识名称 | 知识内容 | 启用状态 |
---|---|---|
缴费;现金缴费用户数 | 当问句中涉及**缴费**字眼时,根据**实收日期**来做时间条件 | 启用 |
工商业;一般工商业 | (工商业;一般工商业)是指用电类别为:工商业及其它用电、普通工业和商业 | 启用 |
5. 知识上架流程
- 知识采集:由知识团队获取业务知识;
- 知识评审:由技术专家和业务专家参与评审,对知识进行权威性认证;
- 测试与验证:在测试环境中配置业务知识后,充分测试和验证,确保生成的SQL&Python符合预期。通过人工审核或自动化测试来验证,保持稳定。
- 知识发布:将该知识发布到生产环境,并测试验证。