00:04
大家好,欢迎大家来到由腾讯开发者社区、腾讯销售数据库、腾安登团队共同打造的RG7天入门训练营系列课程的第一期。在整个训练营课程系列中,我们将会由浅入深的给各位介绍并讲解rag技术以及其中的困难点,然后也会在后续引入我们腾讯内部已经落地生产实践的安以及我们目前腾讯向上数据库提供的AI套件去为大家详细的介绍RA。然后今天我们。进入到章节的第一个课程,消灭我们大语言模型换取的利器rag相关的介绍。在介绍rag之前,我们呃在过去的几年时间内,大家都有了解到大圆模型带给我们的影响,大模型在一定程度上去改变了我们生活生工作的思考的方式,然后也越来越多的个人还有企业在思考如何将大模型去应用到更加实际的呃生产生活中去,希望大圆模型能够呃有一些更多企业级别生产落地的实践,然后去帮助我们解决一些业务上的问题。
01:11
目前大圆模型的问题呃主要有三类,第一类就是幻觉问题,大圆模型因为是一个预训练的模型,它已有的一些知识储备会是呃,我们提的问题跟他的知识储备呃不相符的时候,会产生一些幻觉问题,去做一些呃。看上去正确的回答。然后第二类问题呢,就是我们新鲜度的问题,大元模型预训练出来之后,是不能感知到我们实时更新的工业数据,还有企业内部的一些私域数据的,所以在这儿也会,呃,有第二个新鲜度的问题,第三个就是数据安全的问题,大圆模型的训练依赖了很多的训练数据集,然后为了保证大语言模型的效果更好,然后呃,这儿训练集的质量以及数据量越多对于大语言模型的一个训练。最终的一个效果会更好,但是实际上我们呃又期望着大圆模型想要去帮我们解决一些垂类的问题,然后又是希望在数据安全这儿会有一些防范,就比如说像企业的一些内部的敏感数据以及敏感文档是一定不能够暴露出去,让公有的大语言模型去进行训练的,所以在这一块也是大语言模型具备的一个问题。
02:17
然后为了去解决单元模型刚刚提到上说的3个问题呢,我们提出了rag检索生成增强这个概念。这个概念呢,呃主要的一个逻辑是通过将我们呃企业内部的一些私域数据,以及实时更新的一些公域数据,通过一些处理之后,变成呃我可以进行相似性搜索的向量数据,然后存储到向量数据库中。在我们跟大约模型进行交互的时候,然后用户的提问。首先在我们的相同数据库中去进行相似性检索,然后检索出与这个提问相关的知识内容,然后检索出来之后交给大圆模型,连同的用户的提问一起让大元模型去生成回复,然后这个整个就是rag技术的一个核心观念,然后使用到rag这个技术呢,可以去帮助我们的个人以及用户去把企业内部的一些知识数据,很快的去构建出一个庞大的知识库,然后结合上我们目前已有的单元模型的能力,可以快速去。
03:14
制作类似于智能问答机器人这此类的一些应用。然后在下一页呢,我们会去详细讲解一下,呃,R一个rag应用实际上是怎么构建的,以及它的主要步骤是什么,OK,看到左边这张图里呢,我们也去呃演示了一下,就没有使用到rag,还有使用到l rag的一个链路是怎么样子的,所以我们重点去看使用到rag这一条链路,如我们使用到rag的这一条链路之后,呃,用户现在目前出入的一个问题,会先去我们的构建好的知识库,也就是我们向量数据库里面去进行相似性检索,然后啊,带出一部分的。知识呃,知识文档,然后这一部分知识文档呢,会跟用户的呃query进行结合,然后我们通过PRO技术,然后组装成一个最终完成的一个输入给到单元模型,然后让单元模型去生成回复,然后在这个里面最关键的一步其实就是在我们的知识库生成这一步,因为在知识库生成这一步主要涉及到了把我们的知识文档去做内容的提取以及拆分,还有去进行向量化,然后存入到我们数据库中。
04:20
在右侧呢,我们去主要列举了一下主要的一个RG的步骤,然后前两步呢,都是去提到的我们知识库生成的一个步骤,然后后三步呢,都是呃,字库生成之后,我们在检索方面需要做的一些核心步骤。目前我们呃市面上已经有了开源的一些框架,像嵌这样一框架,能够去快速的构建一个rag应用,然后在同样在左边这一张图里,可以对应着刚刚上一页PPT里面的图,呃郎茜他的思想核心是把我们刚刚核心提到的呃五个步骤,然后拆成了每一个不同的组件,然后由每一个不同组件去做相应的一些处理,让用户去编写自己的呃业务逻辑的代码,然后去把这整个过程给串起来,也非常好的体现了郎中念这一个词。
05:08
基于浪嵌去构建一个rag应用呢,它的优点和痛点都非常明显,我们使用浪嵌,它的一个优势主要是可以快速构建一个DEMO起来,帮助我们的开发者去理解rag应用,然后同时因为其开源的一些属性,它会提供非常庞大的一个社区支持,比如说会有一些插件啊,或者啊它的一个版本更新迭代都会非常快,但是痛点也非常明显,我们通过开源框架构建出来的一个rag应用,其实本质上它通用性是非常的强的,为了保证这样的一个强的通用性,它首先在效果层面不一定能够做到最好,同时因为这一个通用性导致的效果不能做到最好,我们就需要呃,企业或者是个人投入比较大的精力,然后比较多的研究去把这一个整体的rag在召回层面的一个效果给提升到最佳,所以在这儿的投入会变得很大。在下面我们也会通过3个bad case去给各位介绍一下我们呃,在整体构建整个RA应用过程中会遇到的一些问题,然后我们这遇到了3个bad case的问题呢,都会在我们后面的课程中有一些工程化的解决方案,然后在这我们先思考一下这三个问题。
06:15
第一个case的问题是,我们现在呃构建一套RA应用,然后用户提问是,请问A产品分析报告多久分析一次,然后我们召回的相关知识呢?是A产品的分析报告会分析近30天的数据分析结果。其实这个bad case它主要的呃原因是我们用户的问题,它其实在相关的知识中是没有明确提到的,只是有一定的相似度,但跟我们用户的问题是不直接相关的,这样的相关知识以及用户的问题组装之后交给大语言模型去进行回答,其实是本质上是人为在。给大语言模型制造干扰,然后大语言模型不能完全理解,就会进行胡说八道。然后在这一块我们会在后续会提到,呃,有一个工程化实践叫做聚答,如果我现在发现我相关知识与用户快乐提问是不相关的,已经没有明显的一个关系,那会引导大约模型去拒绝回答。
07:12
第二个bad case是呃,我们现在用户是提问的A课程适合多大年龄的小孩,然后现在呢,知识库里面会召回回来两条数据,然后其中一条数据呢,是我们期望的一个知识,就在呃A课程的文档中,它可能会有一段话是跟我们这一个提问相关的,但是还会召回其他的一个干扰知识,比如说在其他文档里面的呃一些内容,像该课程适合3~7岁的小孩,适合6~8岁的女孩,这种知识内容也会被召回回来。这个better case存在的原因主要是期望的一个召回的知识内容呢?他携带一部分干扰信息,然后呃,可以看到这个干扰信息里面其实是没有A课程这个关键字的,然后也会回回来了,然后在这两个,呃,知识内容如果交给大圆模型进进行处理的话,他也是无法理解哪一个知识内容是正确的。
08:02
在我们更希望是在召回这个层面就能够有比较好的一个手段去进行处理,然后在这儿我们后面就会讲呃工程化的实践里面,我们会对用户的query去进行改写,会去增强它呃query的一个效果,然后同时呢,我们也会用到类似于BM25这种倒排索引的一个方式,然后去提升关键字在这里面的一个权重,比如像在我们干扰知识里面是没有A课程这一个呃关键字的,那它的一个像素分数就会比较低,然后导致召回不回来。很好的处理这一个问题,然后最后一个case呢,是我们目前,呃,可能有用户的疑问是类似于服务器连接不上了,应当如何解决,但我们现在给知识库里面注入的文档呢,都是类似于连接服务器应该有哪些步骤?然后第一个问题呢,呃,其实。将这些知识内容召回回来,然后交给大元模型,也能够去引导用户,但是实际上也并不能去直切要害,就用户更希望的是我现在连接不上了,我有什么样的一个排查手段在这儿更好的一个情况还是我们通过去补充一些专门的P队文档,然后去增强整个呃知识召回内容的准确性。
09:15
然后还有第二个问题呢,这一类比较特殊,就是我们用户可能会问一些跟他实力相关的一些问题,比如像是为什么我这个实力的CPU占用变高了,或者是内容内存变高了。然后直接一个搜索结果呢,可能是我们支持文档里面的,呃,一些处理方案,就是我现在内存变高了,会去怎么处理,其实用户现在想要知道为什么变高了,然后第二个问题呢,我们在后面会提到,我们会有一个呃意图识别的模型,然后去判断我们现在用户他想要的问题具具体是一个什么类的,需不需要用到RA技术,然后也是会去判断它是不是需要用到诊断引擎这一路,然后如果是类似于呃用问题2这个为什么内存变高了,需要用到我们诊断引擎的,那我们会调用。呃,其他跟R无关的一段一诊断的。
10:02
相关的技术,然后去为用户排查问题,并且给用户反馈一个结果。然后在整体里面,呃,通过刚刚的一些介绍可以看到我们目前在呃整体构建一个R应用,它的从呃DEMO容易上手难。这种比较明显的一个特点可以看出来整体的一个效果呢的一个计算方式,目前公认的都是以文档处理的个效果,乘上embedding的一个效果,再乘上retra的一个效果,再乘上大圆模型的一个效果,然后得到我们rag整体应用的一个效果。能够做到DEMO容易上手的一个主要原因是因为呃,像long还有index这种框架比较的一个盛行,然后去很快的接入的话呢,就是一个比较初初级的一个状态,可能能够只能做到35%。如果为了去提高这一个,呃,整体的效果,整体一个准确率呢。我们也是可以去通过,比如说在拆分,那会拆的更更加合理。以及说我们提取内容的时候,把整个内容提取的更好,还有在我们去做呃向量化的时候,去选择我们的向量更好的一个模型,还有在最终我们去跟大元模型交互的时候,选择效果更好的大语元模型,然后把这个效果给提升到更高。
11:16
但实际上60%的一个准确率还是达不到我们生产环境落地的一个呃期望值的,我们期望在这生产落地的一个效果呢,是我们的准确率能够达到90%,然后在右侧也可以看到,为了能够去达到这个90%。其中在rag应用构建的各个阶段,我们都会有很多工程化的一些。手段去进行实现,然后因为右侧的一些呃,提出的可以优化RG的效果的方式比较多,然后在整个课程里面,我们也会去挑取一些比较核心,比较关键的一些点,然后去给各位去介绍,以及怎么去把这个效果给做的更高。另外一个问题呢,我们目前rag整体应用在界内的,呃,比较关注的一个地方就是在于召回,那召回内路因为涉及到了知识文档对我用户问题的一个补充的范围,我们会思考两个方向,第一个方向就是我是去优先保护保证这个召回率,还是去优先保证这个精度,这两个问题可以从这个层面去理解,我IG现在召回回来,是希望获得更多的跟用户提问相关的知识内容,还是说我只需要更关键的知识内容排在最顶上。
12:27
目前也可以透露一下,我们腾讯向上数据库的AI套件是选择了前面这一,我们希望是召回回来更多跟用户相关的呃,提问的内容,然后呃,精度这一方面,我们也是尽量去保证我们召回内容能够在TOP3 top top5以内的位置去进行。出现这一个考虑是因为。召回回来一些内容确实会有一部分干扰信息,但是目前大圆模型能力也尚可,他对于这种干扰信信息的一个排除能力也是比较好的,我们也去测试了一下,即使我们在召回来的5条的数据里面有2条是干扰信息,然后结合上用户的query去交给大约模型去进行处理的时候,他也能够是很好的把那两条的干扰信息给排除掉,然后通过已有的有用的信息,然后。
13:14
结合用户的query去生成一个比较好的回答。然后这一节课呢,就主要是介绍我们目前去消灭大圆模型幻觉的一个利器rag,然后在下面我们会呃,下面的课程中我们会通过。刚刚提到的rag里面的核心关键步骤,然后去给各位讲解在每一个步骤里面需要注意哪些事情,以及每一个步骤里面会遇到哪些问题的解决方式。在下一节课呢,我们会讲rag应用的第一,第一门课就是我们的内容提取以及拆分,谢谢各位。
我来说两句