00:03
大家好,欢迎大家来到腾讯开发者社区,腾讯项目数据库团队共同打造的项目数据库快速上手训练营第4节,然后在上一节呢,我们以这种交互比较好的形式的。方式给大家演示了一下去搭建我们,呃,然后在这一节课里面呢,我们会在上一节课的基础上,我会延出来一些,就目前我们其实在第二节课里面我们也讲到了,我们现在数据库现在已经也提供了双检索加上rank能力,然后这一次呢,我们会在。呃,从代码这个层面,以及真正的上手使用这个层面,去从代码上给大家看一下我们的双录检索是如何去进行使用的,以及就是说我们双重检索现在搭配上我们inding服务的一个功能的一个能力,具体是怎么去使用的,然后在这里呢,就是我们先进入到文档这一个层面,然后去带给大家去代入一下。哦,然后进入到文档里面的话呢,我们其实也是如刚刚第三节一样的,我们在第4节就在吸收向量,就也是我们提到的这种双入混合检索里面,其实我们已经有比较完善的一个使用文档,以及我们的说明文档,去给到各位开发者以及用户去进行一个查阅,然后在系数向量里面呢,我们更多的呃,核心还是去会给大家去有一些基本的一些概念介绍,以及我们的快速开始,然后在这系数向量的使用呢,也是我们的关键字检索,这一轮的使用呢,也有一个比较关键的工具叫做我们的。
01:35
文本转稀疏的向量的一个工具,然后我们也也是一个呃,不同语言有不同语言的工具包,然后提供给了各位用户,然后从左侧呢,这里也可以看到我们有刚刚提到的介绍,然后我们快速使用的一个呃代码,以及我们系数向量转换的一个工具。然后同时如果是说咱们想要去进行一些高阶的。比如说我们需要去自训练我们的encoder,可能有一些开发者会比较了解的,可能我们默认这个encoder他的一个效果是通用的,可能在咱们垂类的这种。
02:08
在垂类的这种数据的呃场景里面可能效果不是不是很好,然后可能我们需要去自训练一下,然后我们也是提供了这种自训练的一个呃文档,然后去方便各位去进行一个操作,然后接下来呢,我们就是实际的从代码这个层面带给大家去快速上手,去使用一下我们的一个系数向量这个检索的一个能力,然后接下来的话,我们就直接转到我们的一个呃IDE里面去,然后去给大家上手去看一下。啊,然后我们进入到这个ID里面来呢,我们啊接下来先把我们这一次需要用到的一些依赖,然后都给复制过来,然后这些依赖的话呢,都可以在我们的官网文档,就刚刚给大家看的那个快速入门那个位置,然后大家可以去找到,然后这里呢,我们直接复制过来,然后这里呢,我因为有一些他没有使用到,会有一些提示,然后这个大家可以暂时去忽略掉,然后第二部分呢,就是我们需要去有呃连接我们项库和建立我们呃数据库的这一个操作,然后我这呢,我们也直接去复制过来,因为这个操作都是比较通用的,也可以去找到我们的呃官网文档,或者是说更多的一个呃接口和方法说明,然后去把我们的。
03:17
第一步是我们创建我们的连接,然后第二步的话呢,我们会去创建一个呃,名字为d test这个表,然后同时在创建之前呢,我们会为了去保障,因为我这个是个测试实力,为了去保障我们库里面存在这种同名的表,会污染这个数据呢,然后我们会先去做里遍,然后再去创建一个这个名字的表,然后去保证我们这一个,呃。数据库下面是比较干净的。然后在呃,在下面呢,我们会去创建我们这个库下面的一张带有稠密向量和系数向量的表,然后在这个表里面呢,因为我们这一次创建的呃索引的话呢,是包含了稠密向量索引和系数向量索引的,所以在接下来我们会去对索引去进行一个新增,然后在新增索引呢,我们会去有基础的索引配置,比如说呃,目前我们的数据的话呢,会存在一个primary key的这一个列,然后是名称是固定为ID的,然后同同样的话呢,我们会有。
04:17
之前比较呃,大家可能使用的比较熟悉的一个投密向量的这一个索引,然后我们就直接复制过来,然后密向量索引呢,目前这个是固定是然后相关的这种啊,这个维度话,维度的话呢,因为我们等会儿也去会去给他演示到,因为我们会去使用到。Inbding相关的一个能力,所以说在这里的话呢,我们呃,后面使用到那个inbding模型的维度是768尾的,就是我们的b GE base z h, 这个模型是七八维的,所以我们在这里把这个向量的索引的维度也给定义好,然后在接下来呢,我们就会去啊添加我们这张表的一个数向量所引,这个数向量索引呢,其实跟我们上面的方法是比较类似的,然后我们的name的话呢,就是SPA filter这种,呃,这个命名,然后呃,这里是举个例子,然后在下面的话呢,我们的fire,然后呃。
05:07
它的类型的话呢,是这个,然后同时我们这一个index type的话也是一样的,或者是SPA的这种,呃,索引类型同时在这个measure这各位需要去注意一下,目前的话是只支持IP这种相似计算方法的啊,如果是说这里不是传的两个都不是传的IP的话,目前这里后端是会报错的,这里可能需要大家去注意一下这个点。然后第二个刚刚我们也去给大家提到了,就是我们会去使用到inb的能力,然后这里呢,我们也去定义一下inbing相关的一个配置,然后我们在这里的话呢。呃,我们需要去向量化的那个字段名,呃,是叫victor。然后。原始的一个字段名呢,原始的fire。我们定义为test。
06:01
然后在这里刚刚也介绍到了,我们使用到了一个model name的话是呃,BT贝思H,然后这里我们也填入一下。然后这里就完了,我们整个,然后这里的话呢,就完成了我们整个这一块的一个配置,然后接下来呢,我们就会去真正的去创建我们的表,然后我们在这儿也定一下我们的collection name就叫做呃,Collection.ER.对,然后呃,在接下来呢,我们就是需要去把我们刚刚的。所有的配置都通过DB点这个方式给传入进去。稍等一下。然后在这个里面呢,我们就是有非常多的一些配置项,比如说我们刚刚的name的话,就等于我们的用我们的name,然后相应的一个配置数和replica的配置数,然后。
07:04
大家也都可以去参照我们的官方文档,然后去呃进行一个对应的配置,然后这下面的话呢,我们测试的话就可以去设置为1,然后的话呢,然后需要根大家根据我们的实例类型哦,比如根据它的实例类型和我们的节点数去进行一个配置。然后这里索引的话呢,我们就用刚刚已经创建好的这种索引的配置啊,直接给拿过来,然后embedding的配置的话呢,我们也是直接给填充到这里。然后这样呢,我们就能够去把这个表给呃,相应的给创建出来了,然后接在接下来的话呢,我们就是真正的会去往这一张表里面,我们先把所有的代码都给写完之后,然后给大家去跑一遍,看一下这个效果,然后再。然后在这里的话,在这里面的话呢,我们呃,先创建完一张表之后,我们需要在接下来去对这张表里面去写入数据,然后相应的我们因为要写入稀疏向量,所以说我们要先引入我们的PM25的encoder,然后把我们刚刚的编码器给引入进来。
08:12
然后我们的中文的编码器给引入进来,然后相应的一个text呢,然后我这边呃,根据文档里面的一个事例,然后也准备了两条,就是第两条数据啊,第一个的话呢,就是我们腾讯数据库的介绍,然后第二个的话呢,是我们腾讯项目数据库和以和单元模型,呃,LM搭配使用这两个两段文本。然后在接下来呢,我们也是去把我们的spas victors, 通过我们刚刚建立的这个编M25去做一个in code, 去把我们这个原始文本给转为吸收向量,然后最终存到我们的SPA filters这一个变量里面去。然后在这样呢,我们就完成了整个呃,我们这两条数据的一个系数向量的生成,然后最终存入到了这一个变量里面,然后在接下来呢,我们就是实际的对我们这两条数据去进行一个写入,然后在下面呢,我们就是直接。
09:04
调用我们client.ser这个方法,然后去传入我们刚刚的创建的一个DB和collection,然后我们的documents呢,就直接呃,把刚刚两条数据相应的对应的放,然后我们有ID,然后我们有这个text字段,就我们原始文本字段,这个原始文本字段的话呢。他就会直接去调用我们刚刚创建表时配置的这个inbding,然后去对它生成768维的一个向量,最终写到victor那个字段里面去,然后SP victor呢,因为我们刚刚上一步已经生成了,所以说他在这儿的话,对应会拿到一个系数向量的值,然后这一条数据也是一模一样的。然后这样的话呢,我们就呃完成了整个呃,建库建表以及数据写入的过程。然后在接下来呢,我们就是需要去进行呃,我们向量的一个相似性检索,然后用到我们的hyper search, 就是我们的混合检索的能力。
10:01
然后在我们去使用search里面呢,我们也会呃,先去用一个这个去接收一下我们最终搜,最终检索反馈的一个结果。然后同样的我们的database name的话呢,也是需要去定义一下。然后在我们接下来检索里面就会分为两个检索步骤,第一个检索步骤就是我们的an的检索,An的检索的话呢。我们的检索方式就是使用这样定义。呃字段去进行an检索,然后是通过我们的file去进行定义的,然后我们是去对,因为刚刚我们传的是原始文本,所以说我们要对原始文本呃这个呃维度去进行一个呃相似性检索,因为这这样定义的话,它会直接去将我们传入原始文本。
11:06
去转为我们的数据,然后在这个里面呢,我们就随便去啊传入一个。数据库。然后相当于我们对数据库这一个文本呢,会去转为向量数据,然后去进行相应检索,然后我们要求呃,向量检索这一路,它返回的一个limit米数呢是2。啊,这个也是可以让大家自己去自定义的。然后另外一个呢,呃,有an检索之后,我们还有一个比较,呃,跟ES比较类似的一个检索的方式是match这个地方,然后match里面呢,我们是用的qword search这个方式啊keyword search里面我们也会去定义对。Sports.这个字段去进行我们的关键字检索,然后另外的话呢,我们还会在这个里面去配置一些默认的参数,比如说我们在这个里面其实会有。
12:04
呃,After这个参数,然后大家可以去用,用上默认值,然后这里不配的话,其实也是可以的,然后关于有一个in after, 还有我们的一个cut offff frecaency这个参数,大家可以从官方文档上去,呃,检查一下这个参数的含义,然后大家也可以去实际的配一下,然后默认的不传的话呢,我们是有呃这个默认值会去给大家代入的话,代入的。然后有这样一个字段之后呢,其实我们还是需要去对。对应的我们的关键字文本去进行一个检索,然后在这里的话呢,我们传的是一个,然后也是会用BM2的Co textco queries, 然后这个去对它进行一个。进行一个编码,然后最终生成我们的query的系数向量,然后我们也也叫数据库好了。然后我们的也设置为2,然后这样的话呢,我们就完成了这个两路的一个检索,然后两路检索完成之后,我们之前也提到了。
13:08
我们会有rank的一个呃方式,去将这两路检索的一个果去进行一个规划,然后我们在这里呢,也是通过这种权重的方式去进行一个规划,然后权重方式呢,我们呃就举个例子,可能更看重的是我们这个呃的权重,然后我们先将设置为设置为5好了,然后这里的话我也去给大家配置一下。然后另外一个字段的话是。然后权重的话呢。就是0.9逗号0.1,然后就代表着我们的呃。同步向量这个的话呢,是用的。用的我们的呃,0.9的权重,然后吸收向量,这一路的话呢,我们用的0.1的权重。
14:02
然后接下来呢,我们呃两检索完成之后,我们的limit也设置为2号了,然后这样的话呢,就完成了我们整个检索的一个配置,然后检索配置完成之后呢,我们在后面就是需要去把我们这个do list现在接触到了所有的。结果然后给打印出来,然后在这里的话呢,我们也直接把这个每这个循环给大家放过来就好了。然后这样的话呢,就实现了,我们去。有相应的呃,建库建表对应的一个操作,然后最终的话呢,我们是能够去。这种话呢,我们是能够去呃。把我们的库表给建立好,然后最终写入我们的成密向量加通过原始文本的方式写入我们成密向量加系数向量呃两年的一个数据,然后最终呢,我们是通过这种呃hyper search的一个方法,然后最终能够去把我们的呃结果给用两路的方式给缩回来。
15:01
然后在这里的话呢,我们也是直接给大家去跑一下这个代码,然后看一下。好,然后呃,刚刚我们跑完之后呢,因为有一些呃,刚刚有一个参数名写错了,然后这我们跑完之后呢,也可以看到我们通过这种向量的呃,加上我们系数重复向量加上系数向量的一个混合检索的话呢,会把这两条数据给招回来,然后可能呃,因为刚刚我们检索用到了这一个呃词语可能不太好,然后在这里呢,我们也去换一个给大家去演示一下,然后在这儿呢,我们用的这个query的话呢,就用an。就这个这个关键字,然后同样的话呢,上面的话呢,我们也是用这个L这个关键字,然后去给大家去看一下直观的效果,然后来说的话,这一条应该是会排到前面。重新去看一下。对,可以看到我们去换了一条之后呢,整个呃,第一条数据就是包含这个大语言模型的缩写就是L,这条数据的话呢,是排在前面,然后这个分数的话呢,也会比第二条数据这个会高上不少,然后通过我们去创建这种。
16:08
带有系数向量的一个表,然后同时使用上我们B m2的能力去把我们原始文本去转成这种呃,系数向量的数据之后再存入到我们带有系数向量的表里,然后我们就可以去使用直接传入原始文本,然后去做相应的一个啊,我们数据的和我们最终通过原始文本去进行一个。相关的一个查询,然后在这里呢,大家也可以去看一下我们整体的一个效果,然后更多详细的一个方面的使用呢,各位也可以去参照一下我们腾讯相关数据库,就是我们的混合检索啊,对应的不同SDK的使用方式以及文档。好,然后在这节课里面呢,我们也是去创建了这种带有系数向量的collection表,然后去给大家演示了一下我们重密向量加上系数向量的一个两路检索的使用方式,然后在这个例子里面呢,各位也可以看到了,我们可以去直接传入这个原始文本,然后是一方面是使用上我们embing的能力,第二方面是用我们提供了BM25的encoder的方式,然后我们能够去生成对应的一个重复向量和系数向量,最终写入到我们的。
17:09
同一张表里,然后在同一张表里呢,我们也是提供了这种an的检索,还有match检索的方式,然后一路可以去进行呃,同一向量的一个相似性检索,另外一路的话呢,可以去进行这种关键字的一个精确匹配,然后最终再搭配上权重的一个rank的能力,然后最终我们可以去得到一个。混合检索最终的一个检索的结果,然后啊,这一些课的内容呢,主要是这些,然后在下一节课的里面呢,我们会去给大家带来腾讯上数据库在图收呃,应用方面的一个事件的落DEMO的教程,然后希望大家可以观看,谢谢各位。
我来说两句