【Coze实战教程】用知识库搭建“房产销售助手”(一)——文本类型知识库篇
因为知识库类型有三种、文本类型、表格类型、图片类型,为了深入的探索各种类型的知识库的用法,我将会把这部分内容分为三篇,文本类型知识库篇,表格类型知识库篇,图片类型知识库篇。
前言
目的
搭建一个房产销售助手,用户可以通过助手咨询小区的基本信息以及户型信息,目前只是针对一个楼盘信息来实现。
目标
了解处理知识库的方法和思路;
了解Coze知识库的使用方法,包括文本,表格,图片类型的知识库;
可以查询楼盘详细信息和物业信息等,比如停车位,物业费;
可以查询户型信息和户型图。
思路
使用coze的Agent,通过人设和回复逻辑prompt,直接查询知识库信息。
内容概述
- 设置文本知识库探索了如何设置文本分割策略和召回设置策略才能获得满足要求的知识库召回结果。
内容文本
需要处理的知识库内容:
内容主要是是文本信息,都是关于楼盘的一些数据。
特点
内容之间的关联度不高。
每一个知识点的内容不多。
策略
文本分割策略
其一,以知识点来分割。
优点:消耗的token少,作为上下文的干扰信息也少。
缺点:当用户问多个问题时,需要设置更大的召回数量。
并且每条的匹配度分值会比较低,需要降低最小匹配度分值,不然会导致无法找到对应的知识点。
其二,以文token数量来分割,同时保持信息的完整性。
例如,使用500个token作为一个chunk(块),并且保持每一个知识点是完整的。因为这里信息不多,是手动实现的,所以很好控制。(以后用代码实现分割的时候,我们再讨论自动分割的策略)
优点:因为多个知识点在一个chunk 里面,所以无需设置过大的召回数量。
缺点:可能会有更多的干扰信息,需要消耗更大的token数量。
召回策略
策略类型 | 可选值 | 定义 |
---|---|---|
调用方式 | 自动调用,按需调用 | 自动调用:每一轮对话都会调用知识库,使用召回的内容辅助生成回复。 |
按需调用:根据实际需要来调用知识库,使用召回内容辅助生成回复。此时,需要在左侧的人设与回复逻辑区域明确写清楚在什么情况下调用哪个知识库进行回复。 | ||
搜索策略 | 混合,语义,全文 | 混合:结合全文检索和语义检索的优势,并对结果进行综合排序召回相关的内容片段。 |
语义:像人类一样去理解词与词,句与句之间的关系。 | ||
全文:基于关键词进行全文检索。 | ||
最大召回数量 | 默认值:3,可选值:[1-10] | 一共最多召回多少条满足匹配要求的知识库中的chunk |
最小匹配度 | 默认值:0.55,可选值[0.01-0.99] | 要求召回的chunk的匹配度分值不能低于多少 |
测试
以知识点来分割的策略
分割后的chunk效果:
问题1:提问一个知识点
召回设置
调用方式 | 自动调用 |
---|---|
搜索策略 | 混合 |
最大召回数量 | 3 |
最小匹配度 | 0.55 |
知识库召回的知识点
回答
token消耗
分析:能够正常召回准确的信息。
### 问题2:提问两个知识点
召回设置
调用方式 | 自动调用 |
---|---|
搜索策略 | 混合 |
最大召回数量 | 3 |
最小匹配度 | 0.55 |
知识库召回的知识点,因为是两个问题,知识点的匹配得分只有0.60
回答
token消耗
分析:因为召回的知识点没有包含开发商信息,所以未能正确回答。
没能正确召回开发商信息的原因是Score分值低于最小匹配度设置的分值。
尝试降低召回设置的最小匹配度分值,设为0.3
再次尝试
知识库召回的知识点
回答
消耗token
分析:确实是Score的分值低于预设值,降低召回设置中的最小匹配度就可以查到所需信息。
总结
采用以知识点来分割chunk的策略,如果提问横跨多个知识点,就需要降低召回策略中最小匹配度的分值,增加最大召回数量的数量。具体分值和数量需要通过测试来寻找最合适的数字。
文本分割策略二
分割后的chunk效果:
问题1:提问一个知识点
调用方式 | 自动调用 |
---|---|
搜索策略 | 混合 |
最大召回数量 | 3 |
最小匹配度 | 0.55 |
知识库召回的知识点
回答
消耗的token
分析:能够查到所需的chunk,和按知识点分割策略相比,消耗了更多的token数。
问题2:两个知识点在同一个chunk里面
知识库召回的知识点
回答
消耗的token
分析:能够准确的获得所需的chunk而且多个问题都在这个chunk里,所以匹配分值更高,更准确。
所以消耗的token更少。
问题3:两个问题不在一个chunk里
知识库召回的知识点
回答
消耗的token
分析:没能准确召回想要的chunk,分析原因应该与策略一的情况一样,是匹配分值低于预设值,因此需要降低最小匹配度,将其设为0.3
再次尝试
知识库召回的知识点
回答
消耗token
分析:能够召回所需的chunk,不过因为是按照token来分割文本的,所以一个chunk中可能不只是包含一个知识点,因此会导致更多的token消耗,以及有可能产生的混淆信息。
总结
在我们做知识库应用的时候,需要考虑两方面的策略,一个是chunk的分割策略,一个是在执行召回任务的召回策略。我们既要考虑能够召回所需的信息,又要保证效率和token的消耗。
根据这次的测试结果,我认为,如果文本,每条知识点内容较少,且相互之间没有关联,使用按照知识点分割chunk的策略并设置更高的召回数量和更低的最小匹配度的分值,然后由大模型,再处理这些查到的信息。这样既能够保证召回信息的完整程度和准确度又能很好的降低token的消耗数和运行效率。