探索COZE知识库的使用方法与设计原则——图片型知识库篇
在知识库中,无论是文本知识库、表格知识库还是专门的图片知识库都可以上传图片,我们需要通过一些实验尝试他们之间有什么不同,该在什么场景下使用哪种方案。
目录
- 一、前言
- 目的
- 目标
- 二、测试过程
- 三、实验结果
- 文本知识库中的图片
- 特点
- 应用场景
- 设计原则
- 表格知识库中的图片
- 特点
- 应用场景
- 设计原则
- 图片知识库中的图片
- 特点
- 应用场景
- 设计原则
- 文本知识库中的图片
一、前言
目的
- 了解图片在不同的知识库中有什么不同的作用,有什么相同的作用。
- 了解在什么场景下该使用哪种方案。
目标
测试图片在文本知识库中的效果。
测试图片在表格知识库中的效果。
测试图片在图片知识库中的效果。
二、实验过程
实验1:图片在文本知识库中
在文本类型知识库中插入图片。
思考:知识库chunk的分割方案有两种(按知识点分割和按token数分割),图片在每个chunk中没有特殊标识,所以插入位置和分割方案都会对其产生影响。
实验1.1:在“按知识点分割”的chunk中插入图片,且插入在文本上方
用户输入
知识库执行结果
返回结果
结论
- 图片会因为次chunk被使用而显示
实验1.2:在“按知识点分割”的chunk中插入图片,且插入在文本下方
用户输入
知识库执行结果
返回结果
结论
- 虽然看似都能返回相同的结果,实则影响甚大,图片的插入位置影响的是知识库召回时匹配度的分值,图片在知识点上面时,匹配度分值更大,而在下面时更小,因此,我们如果需要给文本知识点配图,要将图片放在文本的上面。
实验1.3:在“按知识点分割”的chunk中插入多张图片,且都插入在文本上方
在上方插入了三张图片
用户输入
知识库执行结果
返回结果
结论
- 可以看到图片在上面不论几张,匹配度分值依然很高,而且会将这几张图片全部显示出来。
实验1.4:在“按知识点分割”的chunk中插入多张图片,且都插入在文本下方
在下方插入了三张图片
用户输入
知识库执行结果
返回结果
结论
- 虽然匹配度分值是远低于图片在上面,但是却高于插入一张图片时。(原因在以后研究)
实验1.5:在“按知识点分割”的chunk中插入多张图片,且都插入在文本周围
上面一张,下面两张
用户输入
知识库执行结果
返回结果
结论
- 将一张图片移动到上方,就确实提升了匹配度的分值,因此还是建议将图片放到对应文本的上方。
实验1.6:在“tokens数分割”的chunk中插入一张图片,插入在最上方,用户输入图片下方的知识点。
用户输入
知识库执行结果
返回结果
结论
- 在其上方的图片没能显示,应该是大模型判断这两个元素关联度不高,或者没有明确的联系。
实验1.7:在“tokens数分割”的chunk中插入一张图片,插入在最上方,用户输入图片非下方的知识点。
用户输入
知识库执行结果
返回结果
结论
- 影响不大。
实验1.8:在“tokens数分割”的chunk中插入一张图片,插入在两个知识点中间,用户输入图片上方的知识点。
用户输入
知识库执行结果
返回结果
结论
- 没能显示图片。
实验1.9:在“tokens数分割”的chunk中插入一张图片,插入在两个知识点中间,用户输入图片下方的知识点。
用户输入
知识库执行结果
返回结果
结论
- 大模型没有给图片和知识点之间建立连结,没有能认识到他们的关系,所以不显示图片。
实验1.10:在“tokens数分割”的chunk中插入三张图片,插入在两个知识点中间
将使用与上面相同的方法尝试是否能够显示图片。
由于测试方法类似就不在展示测试过程,直接给出测试结果。
结论
- 查询时同样都不会显示图片。
实验1.11:在“tokens数分割”的chunk中插入一张图片,插入在一个知识点中间
返回结果
结论
- 可以显示图片,因此判断,知识库判断图片是否属于某各知识点的方法,是根据这个知识点的明确的范围。之前的测试之所以无效,是因为图片在知识点的上方或下方,大模型判断知识点已经结束,无法判断图片是否与知识点有关联。如果将图片放置在知识点中间,则大模型可以明确的知道图片和文字的关系,因此会显示图片,尝试多张图片依然可以显示,原理相同。
实验2:图片在表格知识库中
给表格添加一个列,类型使用image类型。
上传数据,它存储的是一个URL。
实验2.1:在查询时显示图片字段
用户输入
知识库执行结果
返回结果
结论
- 可以作为一列被查询出来。不过图片本身并不能作为查询条件被体现,只能作为表现得手段。所以应用场景应当主要是展示用。
实验3:图片在照片(图片)知识库中
照片(图片)知识库,创建后,只需要上传图片数据即可。
知识库会对图片进行处理,处理的方式就是识图,并将图片中出现的元素用文字描述出来。例如:
识图生成的描述信息可以修改,并且可以重新生成。
不过,识图的结果通常也就是对图片的一个简单的描述。
在图片知识库下,图片和图片的描述的关系更加紧密和直接,且这个知识库的主体就是图片,而描述则是作为查询的载体出现。
结论
- 识图的自动标注能力适合需要识别图片实体的场景,例如识别图片是什么。
- 也可以对场景进行描述,例如某人在做什么事。
- 还可以手动的添加图片的描述。
- 适合根据某些情况的描述来查找图片的应用场景,比如给文章配图等。
例如:
实验3.1:通过描述查询图片
用户输入
知识库执行结果
返回结果
结论
- 可以通过描述直接查询到匹配的图片。
实验3.2:通过描述查询多张图片
用户输入
知识库执行结果
返回结果
结论
- 可以进行多张不同描述的图片的查询。
- 查询多张不同描述的图片时,会出现查询到的chunk匹配分值比较低,而导致无法找到想要的图片的情况,所以最好还是不要尝试一次查询过多图片,两张还可以顺利查询出来,多过两张就会出现差不多某张图片的情况了。
- 可以进行同一描述的多张图片的查询,这个的匹配度要高于不同描述的多张图片,多张依然可以正常输出。
实验3.3:通过图片查询图片
用户输入
返回结果
返回结果
结论
- 不能以图搜图
- 如果想要实现查询类似图片,就要先通过插件来识别图片信息,将图片转为文字,然后再进行查询。(可以通过插件和工作流来实现)
三、实验结论
文本知识库中的图片
特点
图片是知识库的一部分,作为知识点的一部分内容显示,默认情况下返回知识点的时候会显示这些图片,即使没有明确的表明要显示图片。(因为本质上是找到对应的chunk作为上下文,然后通过大模型输入,所以可以通过prompt控制显示和不显示图片)。
应用场景
一些介绍性的信息,比如查询某种动物时,里面可以插入图片,作为动物知识点的一部分,用户在查询时就能一起返回。
或者作为操作手册,不只返回操作步骤,同时返回该操作步骤的操作图片。
设计原则
- 如果一个chunk中包含多个知识点,那么图片需要在知识点文本的内部,不能在知识点文本前面插入也不能在知识点文本后面插入。
- 如果一个chunk中包含多个知识点
- 如果一个chunk中只包含一个知识点,那么需要将图片插入在知识点文本的前面。
- 如果一个chunk中只包含一个知识点,那么知识点中插入了几张,就会显示几张,大模型无法识别这些图片的区别。
- 可以通过prompt来控制图片的数量和是否显示。(prompt的数量不能大于返回知识库中图片的数量)
表格知识库中的图片
特点
图片是列表的一个属性,在查询表格信息的时候,查询要求没有明确的要求时,通常是不会返回图片。这个图片就是对应这一行。可以有多列,可以有多种图片。图片和本行的其他信息并没有很紧抿的联系,他们的关系就是他们都属于同一行。
应用场景
作为一些辅助信息来使用,例如,商品图片,户型图等
设计原则
可以作为一列被查询出来。不过图片本身并不能作为查询条件被体现,通常只能作为表现信息的手段。
图片知识库中的图片
特点
知识的主体时图片,文字是对这个图片的描述,或者说你希望查询图片时需要用到的词语。这个知识库的类型就是用来保存和查询图片。你可以对图片进行丰富的描述,以便在实际应用场景中
应用场景
查找某些类似的图片,比如查询相似场景的图片。
给文章配图,根据文章的内容生成对图片的要求,然后匹配图片。
设计原则
- 最好不要进行多描述对多图片的查询,如果必须要也最好控制在2个以内,并且需要根据实际情况降低最低匹配值的大小。
- 可以进行同一描述的多张图片的查询,不过召回数量收到最大召回值的限制。
- 不能以图搜图
- 如果只是需要查询图片中的实体或者图片中的场景,那么可以使用自动标注图片描述
- 如果需要对图片所代表的意义进行个性化设置和要求,那么就需要手动设置。