Skip to content

知识

什么是知识库

大模型的训练数据,是公开而普世的知识数据,当你问它你的企业、或者某个领域非常专业的问题时,它无法给出准确的回答。知识库相当于Agent的“外部资料库”,当被问到不懂的问题时,Agent先去知识库里查询一番,根据查询出的内容,自己总结以后再回答给你。

我们可以类比“人工客服”的场景,用户来询问一个产品问题,接待的客服人员,如果他不知道如何回答,会先在企业的知识库里查询一番,有了一些信息以后,自己整理再回答用户。Agent也是同样的工作方式,这个过程被称为RAG(Retrieval-Augmented Generation,检索增强生成)。

使用场景

  1. 智能客服,上传你公司产品的知识文档或者QA问题对,Agent可以成为你公司的AI客服,回答常见的客户问题,你给的资料越丰富,它能回答的问题就越多
  2. 领域专家,上传某个领域专业的材料文档,Agent可以成为这个领域的专家,你可以参考我们的模板应用杭州老蒜苔汽车维修,它的知识库里有100多个汽车专业的文档,让Agent马上成为一个汽车维修领域的专家

大致工作原理

image 在过程中,有几个关键的概念:

分段

文档被存入知识库时,会被分成很多段落,每个段落在500-1000个字之内,这样做是为了方便检索。可以参考下图,左边是原始文件,右边是实际分段后的效果 image

向量化

把文字内容,变成类似[0,10,3,32,..]这样的数组,这是大模型能够理解的数组形式,这是背后的工作方式,可以先暂时不用过多的理解。

向量匹配

拿“阅读的层次” 和所有段落进行向量匹配,判断这句话和哪一段的语义最接近,每一个匹配都会有一个“相关度”,相关度越高,代表语义越接近。如下图所示,左边的三个段落,和查询的语句,相关度是最高的。但是如果直接把这三个段落直接返回,是混乱无法阅读的,这就需要Agent的重新整理 image

Agent重新整理

知识库查询到了三个段落后,他会根据自己的理解重新整理,让用户更好的阅读 image

Agent里使用知识库

新增知识库

  1. 你可以直接上传文件,系统会自动为你创建一个知识库,并且和这个Agent关联在一起
  2. 也可以和现有的知识库直接关联,这样在问答时,Agent会查询这里的内容 image

查询时机

  1. 强制查询 每次询问的时候,都会先查询这个知识库里的内容,如果匹配度高的段落,就整理回答内容。如果没有匹配到,Agent会根据自己的训练数据或者调用技能回答用户的问题。
  2. 按需查询 让Agent根据聊天的内容,按情况触发是否要查询知识库。例如某个Agent的知识库是关于读书学习的,那当用户问读书相关的内容时,查询知识库。当用户问最近的新闻时,应该调用“网络搜索”技能。

这种情况下,和“技能说明书”一样(详细请参考技能这一章节),也需要一个“知识库说明书”,告诉Agent“当问到读书相关内容时,请调用这个知识库”。当然,我们会根据你上传的内容自动帮你生成这个说明书,你也可以自己定义这个说明书 imageimage

知识查询设置

为了回答的更加精准,我们提供了三种查询方式:

  1. 语义查询 就是上文提到的查询方式,通过两段内容“相同意思”的程度,来帮你检索知识库。但是这种方式,不适合做“人名”、“地名”这种非常精准的查询。
  2. 关键词查询 更加精准,适合查询字数少要求精准的场景。它和语义查询像是硬币的正反面,无法做长句的模糊匹配,例如你想查询“阅读的层次有哪几种”,但是文档中的内容是“阅读有四种层次”,用关键词查询就无法查询出结果。
  3. 混合查询 为了能够让“鱼和熊掌”兼得,你可以使用“混合查询”,把两种方式都去尝试查询,结果一股脑都输出给Agent,反正它有自己智慧去重新整理,当然这种方式会更加的耗时。

查询结果设置

  1. 知识匹配最大结果数
    定义知识库最大给Agent返回几个段落,如果你认为Agent回答的不够理想,可以增加这个数字,给更多的内容给Agent,Agent有可能回答得更好。
  2. 结果重排算法 知识库有时候会返回很多段落,如果全部都给Agent,它反而不知道什么才是准确答案。这个重排算法,相当于一个图书馆的小助理,把找到的内容个Agent之前,再整理一番,去除掉不用的内容,给Agent更精准的答案。这些设置,都可以提高回答的精准度,要付出的代价,是成本和时间。