00:04
大家好,欢迎大家来到由腾讯云开发者社区,腾讯云香港数据库团队,安登团队共同打造的reg七天入门训练营系列课程的最后一期,然后在之前的所有的系列课程中,我们给大家详细的去介绍了rag以及rag是什么,以及rag各个过程中会涉及到一些什么问题,以及工程化的解决方案,然后在上一节课呢,我们也提到了目前嗯,腾讯安登的以及腾讯销量数据库也有这样能够去帮助各位开发者快速上手rag的一些呃辅助工具,然后在今天呢,在第7节课这儿,我们会会去以rag最佳时间上手,然后通过我们腾讯云相上数据库的AI套件,然后我们去写一些简单代码的形式,让大家快速的去感受一下,去上传一个快文档,然后我们快速构建了我们一个呃知识库,去实现我们的rag应用,然后在这儿呢,我就给大家去实际的去书写一下代码,然后使用上我们线上数据库的AI套件。
01:04
然后在这儿我们进入到编辑器界面之后呢,呃,首先需要您去做一些操作,就是首先需要在我们把腾讯云向上数据库那个官网的控制台界面去申请一个免费的向上数据库测试版实例,然后在这儿呢,我们每个用户都可以去申请一个免费测试版的实例,然后供大家去体验,去进行测试,然后申请完之后呢,你也需要去呃,开启一下咱们实例的外网访问,以及呃把我们的实例的密钥给记下来,然后在在我们稍后的代码演示中都会使用到。然后为了这演示的方便呢,我使用的是Python语言,然后在这儿我们也需要先去安装一下Python语言的SDK,然后我这呃,因为我本台电脑上已经安装好了,所以我给各位去演示一下呃,使用我们的pip工具去安装我们呃相数据库的。SDK.
02:01
然后因为我这是已经安装好了的,所以说它会报这个呃已存在我们这安装好了之后,我们先导入一下我们会使用的这一个SDK包,导入之后我们先为了后续的一个使用方便,我们把呃所有的后续需要需要使用到的一些变量信息都在这儿先一下,然后首先第一个呢,就是我们VDB的一个URL,这个URL呢,主要是呃,您在那个控制台开通了那个外外网访问之后,它会给您一个呃外网地址,然后需要您填充到这个地方来,然后第二第二个就是我们的呃向量数据库访问的一个密钥,然后也会在我们控制台上能够去获取到。然后这个密钥呢,配搭配上呃,我们这一个呃域名URL去使用,然后能够保证我们连接上这样一个项目数据库。那同时在这儿,因为是我是用了一个新的项上数据库实例,所以说我们在这儿会涉及到去对这一个实例里面去进行建库,还有建表,然后我们在这也去把我们相关的数据库的名称啊,还有我们后续会建的collection view那个集合的名称给定义在这儿,方便我们后续去进行使用,然后在DB name这name这呢,我就会去使用一个test DB这样的,然后你也可以去按需选择您呃想要配置的一个名称。
03:17
然后collection view的名称呢,我这儿也去,呃,设置一个,比如说我们在这儿去展示一个知识库,然后我这的命名就用knowledge这样一个名称去进行命名。然后因为AI套件里面,其实它是允许咱们用户现在直接上传原始文档这样的一个形式去进行使用,所以说为了这上传的方便呢,我这里有一个文件目录,然后在这个文件目录下,我是放了一篇,呃,像数据库相关的产品介绍文档,然后我把它这一个文件夹都直接。设置过来,然后如果各位老呃,如果各位开发者在后续的使用过程中,也可以按照这种方式,或是直接指定一个文件的一个路径就可以。
04:00
然后在这指定完成之后,因为我上面的URL和API稍后才会进行填,我们先把核心的一些呃代码步骤。给腹泻了。然后在第一步我们需要用到呃。SDK里面的VDB,呃,Ten v DB这样一个方法去创建一个连接,然后大致的一个书法数学效果呢,是这样子的,我这里去进行一个演示,然我们需要去创建一个VDB的连接出来。然后URL就用刚刚我们的呃,设置VDB的URL,然后API user的话,这每个默认的都是root,然后呃K的话就使用我们刚刚也是设置好的VDB的API。然后在这呢,我们就可以去新建一个VDB的连接出来,新建连接出来之后呢,也是呃,一个新的实例的话,我们都会有一些建表的操作,然后这我们首先去操作创建一个。呃,用我们刚刚那个连接去创建一个AI类的这出来,因为只有AI类的这我们才能够去,呃,使用AI套件这一系列相关的操作。
05:09
然后这里的database名称呢,我们就用刚刚的呃配置的DB名称,然后在这一个呃数据库database下面呢,我们再去创建一个collective view,我们就要集合视图这种呃AI类base下面有的一张表。然后在这个view里面,它其实存放的对象就是我们每一个一个的文件,然后在这我们的给他的命名也是使用我们刚刚已经定义好的click view name.然后其实呃,这三行代码呢,就完成了我们的连接建立,然后到建库建表,然后建库建表操作完成之后呢。就到下面的,我们可能会去上传一些文件,上传文件这我们就去稍微使用一个函数,我们这儿的。方法名叫做。闹得他这种。函数,然后去上传文件,然后因为我们刚刚指定的这一个fire,它其实是一个呃文件夹,所以说我们期望是把呃这一个文件夹里面的所有呃文件都给拿出来。
06:12
因为呃,这个文件夹里面,其实我还有很多其他的资料,所以说我在这儿可能会去做一些其他的处理,比如说我会用一个循环。呃,会去循环它的文件名,然后。然后我会去循环啊,这个文件目录下的所有。文件路径,然后因为这会涉及到使用到OS这个包,然后我们也再去导入一下。然后呃,每一次循环呢,我们都去判断一下,因为我现在只想要导入呃,PDF的文件,所以说。我去做一个判断,我判断一下它的后缀名是不是以这个呃点PDF结尾的,如果是点PDF结尾的话呢,那我就呃开始将这个文件去做一些上传的操作,然后我这输出一点友好的提示。
07:17
对,然后呃,在每一个文件视频以PDF后缀结尾的时候呢,然后我们就会去打印,我们目前正在上传这个PDF,然后真正的上传操作呢,就实际上就只有一行代码,那就是我们刚刚创建出来的这一个呃,集合视图这个对象,然后我们去调用它的load and split的方法。然后团参的话呢,目前为了去快速的实现我们这个知识库的构建,我们这团参就只需要去传一个啊,Local file pass,就是我们完整的一个文件路径,然后我们的文件路径呢,就需要我们这里去组装一下,就是刚刚我们拿到的一个文件路径,然后再加上它的一个呃,文件名称去组成一个完整的。能够访问到这个呃文件的路径,然后去做这样一个上传操作。
08:03
然后呃,所有的上传完成操作之后呢,我们也去打印一个比较好友好的提示。对,然后我们也去打印一个上传所有文件都成功的一个提示。然后在这儿就完成了我们对知识库的一个入库操作的,然后在知识库进行入库之后,其实啊,对应的第二步操作就是RA整体应用构建,第二第二个大的关键操作,呃,就是去对我们呃用户而言,我要去做拆分啊,对这个文件我要去做拆分啊,做向量化啊等等的一些操作,其实目前都是由AI套件来进行完成的,相当于我的文件上传上去之后,呃,我就可以不用管它,然后我就只用管去搜索就可以了,然后现在我们就去构建呃搜索相关的一些代码。然后搜索相关的呢,我们这也可以一个函数的方式去进行书写,然后我们这命名也叫呃,Search knowledge这种。
09:01
然后我们search knowledge这一个方法里面呢,呃,搜索的代码其实也是比较简单明了的,然后我们用一个的这样一个对象去接收一下,然后搜索的话,也是因为我们刚刚创建出来的一个collection view对象,然后调用它的search方法,然后在search方法里面的传参呢,其实呃最主要的就是传这个content,然后这个content我希望是呃,他每次都能够接受用户的提问,然后我这也去用一个。呃,变量去接收一下。然后让我每一个,呃,现在用户的每个问题过来之后,我都能够去去处理,然后这我想要搜索一个结果,就我搜索top k的一个,呃数量呢,我这也设置成3,然后尽量保证它的一个数量不是很多。然后呃,还有一个更关键的参数,就是我们提供了一个expand这个参数啊,这个参数设置的是我,呃目前一条。知识文档返回回来之后,我在这一个知识呃文档的前后去补充多少一个创口,就是比如说我现在是LINK3,它会返回给我三条数据,然后在每一条数据里面呢,我都还会再去向前向后给补充啊一部分的呃呛口回来去保证这一个上下文的完整性,然后我们这儿一般设置是一逗号1或者2逗号2,就是向前补充两个创口,向后补充两个创口,这样的一个形式就能够保证啊补充回来的一个知识内容是比较完整的了。
10:26
然后为了这代码演示的方便,其实呃,我这的书写可能就会简单一些,我直接呃,去把我们这个的接收到的一个查询结果去打印一下。看一下我们每每一条返回的这个,呃,查询结果里面都有一些什么内容。哦,这个呢,就是可以把我们呃用户这一条问题所查询到的所有相似性的知识内容都给返回回来,然后这呢,其实只会返回呃,原本查是查询到的那一条创,如果你要去补充上它上下的创客的话呢,啊需要。
11:04
在这个里面我们有一个preview这个。这个属性,然后还有点next这个属性,去用一个列表的形式存储了这些,呃,前后的,然后在这儿我就不去做一些补充了,然后有需要的话可以去自行补充一下。然后其实在在这个阶段我们就已经拿到了跟用户query呃,这个提问相关的一些背景知识内容,然后呃,在后面我们可以去构建PRO,然后对接上一个单元模型,然后。输入我们的背景知识,还有用户的提问,去生成一些回答,然后在这儿因为大元模型,呃,各位可能选择的都是不同的,然后我在这儿也不再去做过多的展示。然后我在这就简单啊,简单写一写。呃,简单。放一个在这就告诉各位大家,呃,也可以去再书写一个尖answer这样一个函数,然后把我们相关的呃,刚刚搜索到的知识,以及我们用户提问的问题都以参数的形式传给他,然后在这里面去调用单元模型的接口,然后生成回答,然后在这儿我们就直验是L套件,知识库构建好了之后,呃,我们去进行相关的一些内容检索。
12:16
知识内容的检索是一个什么样的效果,然后在这我们也去编写一下主函数的一些代码。然后在这我们需要去调用刚刚的我们knowledge那个函数,然后在这呢,我们也直接在以控制台的形式去接收一个用户的提问的问题。然后接收到这个用户的问题之后,我们也去尝试把它打印出来,方便。呃,我们去。
13:00
待会儿去进行一个效果的检查。然后在这我们也用一个分去分割一下,我们现在用户的问题提出来之后,然后呃,现在呃,腾讯相数据库的AI套件,然后把这一个知识库构建好了,通过传入这个用户的问题,我们能够得到一个什么样的回答,然后在这儿呢,我们就去,呃,以非常简单极致快速的一个方式去帮去使用A件,在这呢,我们也去做一些相关的演示。呃,我们也尝试运行这个代码,之前呢,还需要对应的把我们刚刚没有补充的,像我们的呃,URL,还有我们的A都给补充回来。然后在这两个信息呢,都可以从我们的控制台去进行一个获取,然后在这呃补充完之后,我们就可以去正式运行这个代码,然后看一下它整体的一个效果。
14:02
然后可以看到在这,因为我那个文件夹下面只存放了一个PDF文件,就是我们腾讯相数据库的产品介绍,然后他会把这个文档给直接上传上去,然后上传完成成功之后呢,他会这告诉你,我们现在上传所有的文件都是成功了的,然后我们这去,呃,对应的检索一下我们的问题,就我这简单问一下。腾讯云向上数据库。我这去提一个问,就腾讯向量数据库是什么,然后呃,可以看到在这个下面回来之后呢,他会把对应的知识内容都给我返回回来,就比如说他会反回给你啊,腾讯向量数据库是如何设计的,以及这篇文档里面介绍的为什么是腾讯云向量数据库,然后还会有其他的一些知识都会找回来,然后这一个原始文档的话呢。呃,各位也可以从我们的呃,腾讯相关数据库官网给获取到,然后也是我直接下载下来的一个PDF,没有做任何的一个修改,也可以去验证一下我们这一个效果。然后在这呢,就是我们简单快速的入门去使用我们腾讯数据库的AI套件,然后我也是以非常简单,以一个呃非技术的一个角色出发去使用我们的AI套件的,可以看到在整体的代码编写啊,以及呃整体的理解上是呃门槛也是比较低的,然后也是为了方便我们呃各位开发者快速去构建我们高质量的一个RG应用,然后我们腾讯项目数据库专门推出了AI套件这一个能力,然也是呃,目前呢,我们也支持了PDF word markdown,还有PPPT这种格式文件的上传,然后后续也会去更新更多的一些呃文件格式。
15:36
然后呃在后面呢,我们也会提供更强大的数据导入的方案,我们会去对接不同的数据源,比如说对象存储,或者是CFS,还有像呃关系型数据库以及芒go这种非关系型数据库的数据源的接入以后,我们的上传途径就可以直接从上传本地的文件到配置一个数据源,然后我们从数据源中。数据,然后再用。
16:01
AI套件目前现有的一个一些能力,快速的对我们的呃客户以及是个人的一些知识文档去做处理,然后快速形成一个知识库,然后方便我们各位开发者去构建rag应用,然后这里整体就是我们AI套件的一个代码演示的实操部分。然后再回到PPT来呢,我们在最终对整体我们这一次课程去做一个总结,整个RA应用的一个框架呢,目前主要是分为了两个部分,第一个部分呢,就是我们的呃数据层面,第二个就是我们的IG应用构建层面,在数据层面呢,我们目前呃,因为涉及到了向量的相似性检索这一则我们。难免的会遇呃,不可避免的会使用到我们的呃向上数据库,然后在向上数据库这一层呢,我们的数据库引擎,呃,目前腾讯向上数据库也是希望能够去呃。做到基础的一个向量召回,以及我们在后续会补充上BM25这种倒的召回,然后在索引,向量索引方面呢,我们也是支持了flat h SW,还有if系列索引。
17:02
同时在呃数据安全,还有SLA以及高性能低成本方面,我们都是有呃企业级的一个保障的啊。在后续呃,对于多租以及。更灵活的一些变配方面,像呃part提性,还有我们的呃升配,升降配节点,这些能力我们在后续都会去进行一个支持,然后在更上层一点的数据库服务,这呢就是我们目前提到的呃构建AI套件,目前已有的能力是能够完成我们的文档数据清洗以及文档解析,还有文档拆分等等的一系列操作的,然后能够快速的让我们的用户接入他们的原始的。文档数据能够用上腾讯相关数据库,快速构建我们的知识库,然后在更上层的呃下底层是我们数据库层面能够去做的一些工作,然后再更上层,需要我们的开发者,以及更多工程化实践的操作呢,也会分成两个部分,第一个部分就是我们的应用构建部分,第二个部分呢,也就是我们去准备更高质量的一个知识内容,在应用构建部分。
18:03
呃,在前面的课程中我们也提到了,我们会有意图识别以及多轮对话,还有query增强以及PRO,还有各种模型的这种。呃,实践,然后都是为了去把整体的RG应用的一个效果,还有我们的最终的一个准确性给做的更高,然后在准备高质量的知识内容呢,我们不仅仅是对于知识文档这一块,需要去做一些呃,简单的一些清洗啊,或者一些呃内部材料的整理梳理。在后续知识库补充这个阶段,其实更重要的还是啊,QAQA队以及FFQ这种后续累积下来的资料,去根据我们用户收集回来的一些问题去呃,更有针对性的补充我们知识库内容,能够保证说呃后续我们用户的问题都能够被覆盖到,而且呃目前召回回来的内容都是我们用户想要的。去提升我们整体rag应用的一个,呃可靠性,然后以及它的提升它的准确性,呃整体呢,这个就是我们这一期这一期呃,Rag课程的主要内容了,然后谢谢大家。
我来说两句