<< Click to Display Table of Contents >> 知识库编写指南复制链接 |
在产品中,知识库是智能问答的关键工具,也是提示词的重要组成部分,能为大模型提供灵活的领域知识,辅助其准确回应用户提问。编写好的知识库支持以支持xlsx和csv两种格式上传。本指南将详细介绍知识库的相关内容,帮助您更好地进行知识库编写。
1. 知识库使用场景
•行话解释
例如:出货额,指的是销售额。
•概念定义
例如:高净值人群,即为存款高于500万的用户。
•问题映射
例如:当提到“东西卖的如何?”或类似问法时,等同于提问“咖啡销售额总和为多少?”。
•难点引导
例如:当提到“展示销售额大于800的订单ID,并绑定产品种类、市场分布和市场级别。”或类似的问法时,则按以下的示例进行思考。
1.筛选销售额大于800的内容。
2.在1的基础上分别绑定销售额|||订单ID|||产品种类|||市场分布|||市场级别这些字段。
2. 知识库如何定义
知识库中包含knowledge(知识描述)和keywords(关键词)两部分。具体来说,知识描述是对某一特定主题或问题的详细解释和背景说明,通常以较为清晰、全面的语言进行阐述。例如,如果问题涉及某一技术领域的概念,知识描述可能会涵盖该概念的定义、应用场景、历史发展等内容。而关键词则是对对应知识描述中核心概念的提炼和聚焦,它通过提取出关键字词,帮助系统在处理问题时进行精准匹配。
2.1 定义
•knowledge的具体定义为:
一切有利于辅助模型正确地回应用户提问的信息;
知识是提示词的构成部分,是施加给大模型的外挂记忆信息。
•keywords的具体定义为:
会在用户提问和答案中使用且来自知识中的词语对应的标准化词,通常是一般词组、字段名、字段值。
2.2 知识类型
类型 |
示例 |
---|---|
只含有字段名 |
年度这个字段的取值格式都是数字,比如2023、2025之类的。 |
只含有字段值 |
A类风险需要邮件通知相关人员特别关注, |
只含有一般词组 |
何春涛是北京永洪商智科技有限公司的创始人,CEO。 |
只含有字段名、字段值 |
当使用到成本字段时,只考虑华北地区的情况,且需要同时查询对应的产品名称和市场级别。 |
只含有一般词组、字段名 |
收益率=(期末价值-期初价值)/期初价值。 成绩优秀指学科成绩平均在90分以上的。 |
只含有一般词组、字段值 |
一线城市是指北京、上海、深圳 |
只含有一般词组、字段名、字段值 |
低绩效,指绩效评级为C、D的情况 |
2.3 知识库示例
2.3.1 行话解释
各行业有不同的行话,这些行话在图表上的展现可能会使用到若干字段、值才能实现。知识库可以通过文字描述的形式解释行话的行为。
1)单对单解释
根据下图1、图2的演示,数据表中虽然没有出货额这个字段,但通过知识库单对单的解释,可以使智能问答了解出货额就是销售额,建立解释关系。
2)单对多解释
这里的单对多解释和下面的多对多解释通常指的是:将行话所要使用的若干个字段、或值额外绑定在图表中。根据下图3、图4的演示,可以看到出货额与咖啡销售额建立的解释。
3)多对单解释
根据下图5、图6的演示,与单对单解释同理,多对单解释可以为字段建立多种行话。
4)多对多解释
根据下图7、图8的演示,多对多解释可以绑定更多的字段,能展现的内容更加灵活。
➢说明:
行话解释与别名的功能相类似,但比别名更加灵活。别名仅能为字段建立解释,而行话解释不仅可以使用上述四种解释方式,还可以在解释过程中描述详细的问题。
2.3.2 概念定义
概念定义类知识用于对某一专业术语或业务核心名词进行准确、简洁的解释。它回答“是什么”的问题,通常包括概念的定义、特点、适用范围等。例如:“高价订单,即销售额高于200的订单”
2.3.3 问题映射
问题映射包含四种:单对单映射、单对多映射、多对单映射和多对多映射,可以使用用户比较习惯的问法去映射到规范的问法(规范的问法有利于大模型正确识别用户意图,生成更准确的图表)。用户习惯的问法可以不带任何关键字、值等信息,方便用户问询。由于多对单、多对多与行话解释的类似,因此不过多赘述,仅介绍前两种映射形式。
1)单对单映射
根据下图9、图10的演示,规范的问法被映射到了一个日常化的问法。
2)单对多映射
如果用户的业务中同一个问题包含不同种需求,则可以使用单对多映射,将不同的需求存储在知识库中,使用固定的问题触发,随后以单选的形式问询。根据下图11、图12的演示,可以在问询“我关注的重点问题有哪些?”后获得知识库提前规定好的若干问题,回答问题标号即可做出等同于问询的操作。
2.3.4 难点引导
性能较弱的大模型有时会难以理解用户的问题从而做出不符合预期的回答,这时可以在知识库中对难点问题进行引导。根据图13的演示,可以发现大模型仅仅是理解到绑定这些字段,却没有识别出“销售额大于800”的意思。
使用知识库前:
难点引导知识库:
使用知识库后:
3. 知识库填写最佳实践
1)各个知识描述要尽可能独立,不要存在类似的概念。如果存在类似的概念,应该将其合并为一个知识,并用特殊的标记区分。
每次能够提供给大模型的知识是有限的,因此提问对应的知识越少越好。假设能给大模型提供的知识仅有三条,一个知识库内某条提问相关的知识有十条,那么会导致给大模型提供的知识会丢失七条,如果我们想要的知识在这丢失的七条内,那么就会造成图表不符合预期的问题。
2)知识如果模型的效果不好,尽量使用难点引导的例子将知识描述写的更加详细,比如使用哪些字段和值、过滤的细节、图表类型等。
3)描述内使用的字段要与数据表中字段完全一样。
如果产生偏差可能会影响图表的准确性。
4)不建议使用链式知识。
如上图所示,某知识是在若干条知识的基础上实现的就被成为链式知识。想要提问“今日库存额”就不得不使用“库存额”的知识描述。链式知识会给大模型产生一定的理解难度,影响图表的准确性。
5)关键词的确定方法。
如果不知道如何分解提问的关键词,可以直接根据“识别提问关键词”的结果获取。值得注意的是:如果不同的两个问题获得了同样的关键词,那么需要适当改变问题的问法,以防相互影响。
6)知识库是否被使用的确定方法。
如果不知道想要的知识是否被提供给了大模型,可以在日志中搜索“知识描述”,后面中括号内的部分就是提供给大模型的知识,可以根据知识是否符合预期适当调整知识描述和问题。