粉丝122获赞667

大伙好啊,今个呢,我们聊一下如何在本地哈部署这个拉玛 c p p, 那 么它的作用是什么呢?各位,先说一下啊,它能让我们在本地哈运行啊这个语言类推理的大模型。 那么为什么要在本地部署呢?有几个情况哈?第一个呢,就是最近哈,呃,这个网上都说这个豆瓣要收费了啊,对吧?呃,收费之后呢,有一些功能,可能我们正常用的挺好,再用可能就要付费了,对吧?然后再有一个是什么呢? 就是我们如果在做项目的时候啊,比如说有一些东西涉密了,不方便在网上传,对吧?这个时候我们就需要在本地,是吧?构建自己的这个资源库,对吧?各位,那么这个时候我们就需要在本地有一个可以类似于像豆包啊,这个 deepsea 啊这种的服务类大模型,对吧?所以呢,今天我们聊一下如何在本地哈部署这个拉玛 c p p, 它呢实际的作用就是可以让我们在本地哈运行啊这个语言推理类的这个大模型,大家看啊,现在我已经部署好了,非常简单哈。那么再有一个情况是什么呢?各位,我们有一个自己的这么一个批量管理软件,是吧?目前有一个环节就是题词词的来源 目前很严重的依赖于我们外部的这个呃, ai 工具,对吧?现在呢,我们如果在本地已经构建了一个可以用来进行语言推理,生成对应任务的这么一个大模型之后呢,各位大家看啊,我们就可以把这个东西直接集成到这个平台当中,是吧?提 着此这一块,我们就最后一个环节就已经集成到这个行当中了,这个就是后续啊,就是大概是四点一之后是吧?呃,继续优化的一个功能,大家先知道这么个事就行了 啊,再有一个是什么呢?目前千万三点六是吧?这个三十五币出来了,然后呢,号称是一个能干活的大模型,对吧?各位,那么我们把它在本地运行来之后呢?第一可以构建自己的私有资源库是吧?更安全,第二呢效率更高,对吧?各位, 那么话说回来啊,怎么去部署这个拉玛 c p 啊,它其实就是一个能让我们运行这个语言推理类模型的这么一个工具啊。不大,我们首先来到这个 github 哈,这个网址,好吧,这个网址哈,然后来到这里之后,各位,简单的一种方式哈,我们找到右侧这个 release, 好 吧,找到这个 release, 然后往下翻哈,这里边有对应的版本,那我是 windows 系统,我们往下翻啊,这里边有一个 windows, 好 吧,在这里哈,各位,呃,我是酷达十二的,所以呢,我就找这个酷达十二哈, 找这个酷大十二,大家根据自己的情况啊,显卡情况去选择好吗?有很多这个类型,大家根据自己的情况选择就行了,那么我选择酷大十二,然后把它下载到本地之后,大家看好,我把它下载到本地之后进行解压,解压完了之后大家看进入到这个文件夹当中,这个就是项目下载之后的效果, 好吧,不大哈,大概是看一下啊,五百多兆,好吧,不大哈,然后呢,别着急启动,各位,我们启动的时候呢,可能要需要设置一下参数,怎么去办呢?大家看,进入到这个 lama 啊,解压之后的这个文件夹,然后注意新建一个文件,比如说我叫 start 啊,我已经有这个 start 了,那我就 start new, 新建一个文件,然后大家注意把这个后缀名啊,各位,把后缀名啊改成点 byte, 好吧,有些同学这个小那个小伙伴的电脑可能这个看不到后缀名,是吧?这个很简单,我们打开这个文件夹之后,这上面有一个查看,大家点击查看,点击显示后边有一个文件扩展名,就是文件后缀名,你把它点上之后就能看见了啊,也能修改了。那我们新建这么一个 bug 启动文件之后呢?大家看啊,我把我之前这个打开, 大家看在里边输入这么一句话啊,比如说这个是拉马,搜索这个拉马的这个文件啊, 调用谁呢?大家看啊,这里边有一个这个,好吧,拉玛告诉搜索点 e s e, 实际上就是调用它哈,然后后边杠杠 host 四个零好吗?它指的是开放远程调用,因为我们后期啊,各位,后期要把它集成到这个批量管理软件当中,我们需要通过这个软件远程去调用啊,这个拉玛 c p p 好 吗?各位,所以这个位置我们给它开放远程调用,后边 pos 端口八零八零,大家看啊,就这个端口,根据自己情况设置就行, 好吧,自己设置一个端口啊,然后后边杠杠 models 杠 d i r, 它指的是我们的大模型存放的文件夹地址好吗?比如说我存在 cf ui 的 这个 l l m 目录当中了,那我就找到哈这个 cf ui 找一下啊,找到 comui, 然后找到它的这个 models, 找到 l l m, 把这个上面地址复制一下,粘到这里边就行,好吗?这样呢,我们这个启动文件就配置完成了,很简单,对吧?各位?然后呢,大家看啊, 翻回头来,来到这个启动项,好吧,来到这个 lama 的 这个解压文件夹目录,找到我们刚才设置的这个 star 的 启动文件,好吧,里边的内容刚才展示过了啊,开放远程端口,设置模型存放的目录,然后前面是调用的这个 lama server, 然后双击一下 打开,双击完之后啊,这个老板就启动了,他默认的啊,启动端口啊,是刚才我们配置的那个八零八零,对吧?然后呢,我也,我之前已经启动过了,翻回头来,我们在网址上输入,幺二七点零 点零啊,多了一个点啊,幺七点零点零点一,然后冒号,英文的冒号八零八零,大家看,这样呢,我们就把这个网页打开了,大家看,其实他就是个小豆包哈,他的这个能力跟你选的大模型有关,那么我选的是千问三点六啊,目前号称能干活的大模型,好吧,一会说这个事啊,然后呢,我们点 第一次,我们可以点击加载一下这个模型,然后输入你好,是吧,他就进行推理了,然后给我们这个答案,这个模型确实能干活啊,各位,大家看啊,这个是我之前用这个千分三点六,然后拉拉本地部署的这个 呃软件哈,然后呢,生成了一个贪吃蛇的这么一个小游戏,里边大概七百多行代码,我就告诉给我生成一个网页版贪吃蛇啊,大家看,双击完之后,这个游戏还挺好玩的啊,效果还不错的啊,好吗? 好了,不解释啊,就是挺好玩的哈,然后千万三点六的模型在哪里下呢?大家看,我这里有一个网址,这是国内的网址哈,大家看, 根据大家的显存实际情况去下载对应版本就行了。那我是二十四 g 显存,所以呢,我下的是这个 q 四 k m 的 二十二 g, 好 吧,大家尽量啊,下载这个模型小于大家的这个显卡的显存,因为什么呢 啊,就算大点也没事啊,比如说你十六 g 显卡,然后你下个十八 g 的 模型,实际上也没事,它会把一半啊,它会把一部分资源放在内存当中啊,但是各位 用这种模型啊,大家看啊,这有一个 token 的 输出速度好吗?就是它运行,你可以把它理解为运行的效率啊,有一半资源在显存啊,在内存当中,这样会拖慢你的运行效率,但是它也能运行,就算你没有这个显存,纯靠 cpu, 它也能运行,就是奇慢啊。各位, 这种模型大家注意啊,还是注意下效率的,所以我们把这个模型都加载到显存当中,这样的运行效率是最高的啊,大家做这么个事就行了啊,尽可能的选择这个模型小于你的真实显存占用, 是吧,这个千分三点六,三十五 b a, 三 b 指的是三十五 b 的 参数,但是真啊,一次使用的时候只激活三 b, 对 吧,但是你也需要把这三十五 b 参数加载到显存当中啊,然后一次用里边的三 b, 对 吧,这样的效果是最快的。 好吧,各位大家说这么个事就行了啊,然后呢,其实呢,大家不止可以下载这个千问三点六号,也可以下载其他的推理大模型,放到对应的目录当中,是吧?在这里大家看啊,在这个位置我们是可以选模型的,我之前还有千问三点五号。 好吧,各位大家知道这句话啊,知道这么个事就行了,那么部署完,启动完之后,就可以跟它进行对话,然后完成任务了哈,然后呢,这个不是重点啊,因为我们刚才开放了 api 的 远程调用,对吧?大家看啊,就是以后怎么把它集成到这个软件当中呢?大家可以看一下啊, 现在我模型是加载的,我给大家演示一下啊,这里边我写了两个 api 啊,第一个是卸载模型,是吧? 就是我可以通过远程调用去控制这个软件加载或者卸载模型,大家看好好 success, 然后我们看一下显纯一下就下来了,这样呢,我们就完成了模型的卸载,对吧?然后下边这个是加载模型,大家看 是吧?加载成功之后,显示一下就上来了,对吧?证明这个远程调用是可以的,那么我们就可以通过远程调用的形式啊,把内容发送给这个软件,然后得到结果之后,是吧?然后我们把结果配合的使用到对应的软件当中去,是吧?就完成了调用。 好吧,这个只是一个初探啊,各位,这个只是个初探,大家学会安装,学会下载模型,然后把它启动起来就行。好吧,后续我们会有深入的这个使用教程啊。然后呢,视频当中说的一些使用细节,包括网址啊,包括这个启动文件怎么配置啊?大家可以来到主页哈,找到对应的视频,在视频下方大家可以查看一下。

ok, 好, 那说这么多,我相信大家对这个拉玛 index 的 整个框架呢,应该是有些自己了解了,那么接下来我们就上手来进行实操,那么整个实操的这个部分呢,哎,我们会先啊带大家快速的来围绕拉玛 index 的 来进行一些这个运行啊,来上手来进行使用。然后呢,我们 在第二部分啊,就会跟大家介绍介绍这个黑科技,哈哈,看看怎么样啊来进行一些啊,在既定流程上的这样的一个优化。 那首先啊, mark index 呢,我们需要先部署的基本环境,对不对啊?那么都是一样的,我们在 python 环境里面来进行运行,这里面我们创建一个虚拟环境啊,然后呢来进行 mark index 的 这样的一个这个安装啊,然后呢这里创建虚拟环境,由于我们之后是要在 jupiter 里面来去运行对应的代码的,所以呢,这里是需要 在对应的虚拟环境里面进一步安装 jupiter 的 啊,这个呢是需要一步一步啊来进行安装啊,这个呢是在呃这个命令行里边来进行运行啊,不是运行当前 jupiter 里面这个 sale 哈, 然后呢,我们现在的 python 版本是三点一二啊,选择一个比较高的这个版本,以保障更好的兼容性。然后接下来啊开始安装拉玛 ingax 啊,安装拉玛 ingax 其实非常简单,你只需要安装这个包就行了,然后呢,这个包里边其实包含很多个这个入门级的捆绑包的啊,当然入门级捆绑包里面其实它各自是有不同的这个 功能,但是呢,前期我们在进行使用的时候,基本上你只需要去安装好一个 mark index 就 可以了,然后呢,对于 mark index 来说,它能够匹配的这样的个模型其实很多,目前市面上所有的主流的模型基本上都是能够来进行匹配的。 mark index 其实接口非常非常丰富, 它去匹配这些呃对话模型啊,或者 embedding 模型啊,或者些词向量数据库啊,都是呃,基本上市面上所有这些呃大家看到主流这工具哈都是匹配的啊,都是没有问题啊。那我们公开课呢,为了简辩起见,我们实际上是使用 openai 的 api key 来进行运行, 但这里面 openai 的 api key 呢,你也可以把替换成就比如说 deepsea 的 api key 来进行对话啊,然后呢,使用 dashboard 啊, sorry, sorry, 使用这个阿里百联平台上的这个 embedding 模型,然后呢来进行这 embedding 的 词向量化,这样操作也是可以的。 只不过大家需要知道的是,在我们搭建 rap 系统的时候啊,实际上是涉及到两方面的模型的,这个调用一个呢是 chat 模型啊,就对话类这样的个模型啊,负责啊,生成啊,回复啊这样的东西。 第二个呢,还有 embedding 模型啊,负责把你的啊输入这样的一个文本,对不对?转化成词向量啊。所以呢,一般来说是要有两个模型啊,只不过呢,现在目前来说呃两种模型,如果你想用一个公司的这个产品的话,那么 openai 其实提供了非常好的对话模型和 embedding 模型, 目前 ingame 模型,可以说 open i 的 这个第三代的 ingame 模型仍然还是全球名列前茅的啊,这个 ingame 模型现在非常好啊,所以呢,一般来说我们在讲 reg 的 课程里边,可能默认都是使用这个 open i 这样的模型啊,但确实你也可以替换成别的模型了,好,没有任何问题。 那么使用 open i 这个模型呢,对在国内的使用方法,要不然你可以去注册 openroot, 我 们之前就有讲到过,对不对?好那样的一个中转平台,要不然的话,你可以 直接去某宝上啊,买一个这个 open i 的 官方的 a p i t。 然后呢,我们的课间里边实际上是给他提供了一个叫 base url 的 一个这个东西啊,那这个 base url 呢,是一个我们专门给大家准备的一个国内返乡代理地址啊,这个之前听过公开课同学应该知道,我们其实是 专门给我们的公开课还有付费课程,学院是搭建了一条国内可以直连 oppo 爱服务器的这样的一个专线的啊,也是没有任何的网络门槛。然后呢,只要你说 apikey, 就 可以直连访问 oppo 爱的官方的这样的一些,这个官方的服务器也可以调用它的官方的模型来进行运行啊。这个呢,都在我们的课间里面有啊,大家这个还如果还没领到课间的话啊,可以直接扫描屏幕当中二维码啊,添加助教老师 就可以领取。然后呢,在咱们的大模型进入社区里面也有非常详细的啊,就是去讲解关于国内的这个反向代理地址如何来进行使用的这样的问题。 总之就是你现在啊,有了 apikey, 有 了这个 base url 啊,就是国内返向代理地址之后呢,你需要创建一个点 e n v 文件,然后把它写进去啊,然后就可以了,方便我们后面呢在代码环境里面影视的去调用啊,这样的一些这个比较敏感的 apikey 的 这个信息 好,这个呢啊是第二步,然后紧接着就进入到 j b t 里面来啊,大家就可以在 j b t 里面来进行运行了啊,看看你现在有没有安装成功啊,对不对啊?你的这个拉马 index 有 没有安装成功?目前最新版呢是应该是零点幺四点幺零。 然后紧接着啊,我们就可以尝试着来进行一些模型测试的调用了啊,当然首先上面这段模型测试调用呢,是从我们当前的 e n v 啊,就是点 e n v 那 环境变量里边去读取我们啊这个给大家单独准备的国内的返现代理地址啊, base ur l 和 这个 open ai 的 api key 来进行一个读取,读取完了之后呢,创建一个 open ai 的 client。 然后呢通过输入 model list 看一下你当前能调用哪些模型啊,熟悉一下哈有哪些模型可以来进行调用。 那么这里其实对于 open i 来说啊,它其实呃有很多很多不同类型的这样的模型,那我们在进行普通的对话测试的时候,你可以使用 g p t 四五呃, g p t 五点一啊,或者是一,或者是这个 g p t 四 o 啊,都可以。 然后呢比较需要注意的是,对于 open i 的 模型来说,它目前的两个最呃最核心的 embedding 这个模型呢,实际上是 text embedding 三 small 啊跟三 large 啊这两个模型。 那么这两个模型呢,它其实是一个模型啊,只不过,呃,它其实是一个这个架构,只不过呢,它这两个模型输出的磁限量的长度不一样啊。然后呢,当然这个 large 它输出的磁限量长度会更长,也代表着它对于很多精细的这个语义的这个分辨会更加清楚一些哈,这么来理解, 然后 small 呢,运行速度更快啊。然后呢,呃,它的这个精度呢,肯定不如这个 large 这个模型这么强啊,是这么一回事儿。当然其实还有一个模型啊,对于 open i 来说,还有一个叫做,呃 text inviting ada 零零二啊,这其实是上一代的 inviting 模型了啊,当然这个模型也是可以来进行使用的啊,也是没有任何问题。 ok, 这个呢,是我们先先需要啊,大家看一下 open i 有 哪一些这样的一个模型?当然除了啊,这些在线模型之外呢, laplace 也支持一些开源模型啊,这个其实完全没有任何问题。 然后呢,像啊,如果你要接入像这个千问系列的 in bidding 模型啊,使用阿里云百链平台的 apikey 也是完全没有问题的啊,只不过我们公开课呢,可能,呃没有时间展开讨论啊,我们就赶紧推进后面的这个内容。 好,那么紧接着啊,对 lma index 来说,哎,它有一个非常有趣的功能啊,大家可以简单看一下啊,但是,呃,选学啊,就它的这 agent 的 功能啊,它这 agent 的 功能呢? 呃,这怎么说呢啊,他因为他在官方的这个文档里面会很多的地方都会推荐这样的 agent 的 功能啊,也是怕大家之后如果去读这个拉玛,呃,如果去读拉玛 index 的 这官网这文档的话,可能会呃遇到他这个 agent 的 这个代码可能会有点迷糊,这样的情况啊,所以我们就大概快速的给大家看一下他的这个 agent 的 功能怎么实现的啊,总之呢,先导入一些库啊,然后呢创建一个外部函数,对不对啊?这一样的哈,也是一个 react agent 的 这样架构, 然后呢读取本地的啊, a p i k 跟 bashur, 然后呢创建一个大圆模型,然后呢创建一个这个 agent 啊,它的 agent 创建的这个语法叫做 function agent, 那 么也是一样的,这个 tools 工具搭模型跟 system prompt 给它封装到一块,然后它就是一个 react agent 啊,就这么回事,然后呢你只需要一步的啊,让一下,然后就可以运行得到结果啊,就能看到它最终反馈结果,就这么一回事。 但是那么 index 它的这个 agent 的 开发功能呢?其实大家了解一下就行啊,这个没有必要进行非常深入的这个学习跟掌握,因为它 整个 ag 呢开发的 a p i 确实呃不太够,哈哈,然后呢,性能也不太够啊,这个丰富程度也不太够啊,这么样的情况,当然它还有啊,什么历史对话管理的这样的功能啊,实力化一个什么 context 啊,然后接下来就可以来进行运行了,它就会直接呢记住你每一次啊运行的这个历史这个对话啊,就这么一回事啊,这个大家简单了了解一下就行了, ok, 好, 那么重点的是关于是 lama index 的 rack 功能如何来进行实现啊,那这个精彩的就来了,那么我们都知道啊,要实现一个 rack 功能,如果大家使用别的框架的话,哎,非常之复杂啊,你先要读取文档, 然后呢读完了之后就来进行切片,对不对啊?切片完了之后呢,接下来你需要把它 embedding 这个操作啊,然后 embedding 操作完了之后呢,接下来你还需要来进行存储啊,存储完了之后呢,还需要来进行回答啊,需要有非常长的这样的一系列这个环节,但是你发现如果你使用 lama index 的 话, 在默认情况下啊,只需要五行代码就可以完成一整个啊,这个 rek 这样的一个流程啊,这个其实是老马 index 他 们的这个呃,工具,怎么说呢啊,一个开发开发方面的一个巧思吧,啊,就是入门的门槛非常非常低,什么意思?比如说我们现在啊,有一个 名叫科技创新公司员工手册的这样的 txt 文档,然后呢是保存在本地的一个叫 data 文件里边啊,文件夹里边, ok, 然后这个文档在我们的可见网盘里面会有啊,大家可以自己去下一下。 然后呢这个文档啊,他就是个员工员工手册嘛,对不对啊?总共呢是四五千字的一个员工手册,然后里面呢非常多的啊,关于呃,公司的一些规章制度啊,这个什么人事制度啊,请假制度啊,这个薪酬策略啊,等等等等啊,这个激励的这些方法,等等等等啊,就是一个公司员工手册啊,大家这么样的一个这么样的一个状况, 然后呢注意哈,需要需要先准备好这样的文档哈,但是这个文档是个比较简单的一个 txt 格式这样的这个文档,然后接下来啊,我们就看看 lma index 它是如何来进行这个解锁的,总共呢就这么五行代码,还包括一行导入的这个代码,哈哈,就这么回事儿, 首先我们需要从浪漫 index 的 core 里面导入啊,这个 vector store index 和 simple directory reader 啊,这两个库,这两个库,其实啊,为什么刚刚念出来啊,是因为这两个库非常重要啊。首先第一个这个 vector store index 啊,它呢是专门用于啊来进行构建锁影的一个东西,所谓构建锁影,就指的是 它会把文档片段注意好,一步到位的来进行切分, embedding 词向量化啊,或者是它会把文档片段注意好,一步到位的来进行切分功能合在一块的啊,这样的一个库。 然后呢这个啊, simple directory reader 啊,它的本质上呢是一个 reader 啊,那么在 lama fact lama index 的 这个体系里面, reader 是 个什么东西啊?它呢实际上是一个叫做数据提取器的一个东西,然后其中呢,这个 simple directory reader 呢,就是目前用的最多的,然后同时也是一个极大成者的一个数据提取器。 我们这里面啊,在最简单的事例里边是让它读 txt 文档,但实际上它的能力非常非常强,它不仅可以读 txt, 它还还还还可以读这个 markdown jackson, pdf, word, html 哈,和一些视频文件都可以读啊,所以呢,它实际上是一个非常强的一个这个啊,数据读取的一个这个器,然后它里面其实包含了非常多的一些功能啊,这里面大家需要记住啊,你之后还会用到 好,那么这两个核心功能啊,给大家读进来,然后接下来呢,首先第一步,数据导入,对不对啊? reader 哈,这个 loading, 哈,这个读取下我们的这个数据, 同样啊,使用我们的 simple directory reader, 然后呢 data 这个文件夹啊,点 load data 来进行一个数据的读取,那么当我们执行完这一步之后呢,那么接下来我们就会把啊,你现在这个 txt 格式的文档数据呢,给它读进来,并且保存是一个,保存成是一个这个 document 这样的一个对象。当然如果你有一个文档 进来的,这个就是列表里面包含一个元素啊,如果你是两个文档进来,就是两个元素啊,就这么一回事。好,紧接着接下来第二步,构建锁影,对不对?非常简单,我们直接呢把刚才已经导进来的这样的 documents 这样的个文档呢,哎,来进行一个这个 ingaxing 啊,锁影的构建这样的这个流程, 那么这个锁影构建的流程呢,其实它就包含了很多个小的步骤哈,包括说,哎,把你的这个原始的长文档来进行切的啊,总之就是把它切成短文档。 那么在切分成短文档的过程当中,哈拉玛 index, 它其实有一个非常核心的一个概念,叫做把原来的 documents 变成现在的 notes 哈,就是变成一个一个节点, n, o, d, s 啊,变成一个又一个的这个节点啊,所以呢,现在啊,我们整个的这个 indexing 的 过程当中,第一步就是把长文档切分成短文档啊,就是把 documents 变成 notes 的 这样的过程,这第一步, 第二步还需要把短文档来进行词向量化啊,就是你现在短文档之后,你需要把转换成一个又一个的词向量啊,是这么一回事,总之呢,它就是要构建缩影的过程。好,那么第三步来配置这个, 呃,来配置这个,呃回答的这样的个引擎,它,它的这个名字叫 curry engine, 哈哈,然后呢,其实它就是配置一个回答的啊这样的个回答器,你也可以这么来进行理解。那么什么叫做回答的这个引擎啊? 它呢是要指的是接下来用户提的这个问题诶,会带入到我们刚才的这个 indexing 啊缩影里面去,然后呢来进行一个相同的词向量化的这样的操作,和围绕着我们刚才已经切换好等等来进行匹配啊,来构建一个叫 query engine 啊,这样的一个呃,回答的这个引擎啊,是这么一回事,好, 那现在核心的就全部都结束了啊,这配置完了,那么接下来我们就可以直接呢围绕这个配置好的回答这个引擎来输入一些用户的问题了哈,比如说问他,请问我们公司有病假政策吗?啊,对不对?然后呢来进行回答,回答完了之后呢,他 就会把最后回答的这个结果放在啊这个 response 这样的对象里边, ok, 我 们就可以看到啊, response 点 response 啊,里面的一个属性,对不对?能看到他说啊,现在公司呢是有病假策略的啊,员工可以享受最长六个月的这个病假啊,具体待薪比例 根据工龄来进行计算啊,就是它,它相当于是围绕我们现在这个文档呢来进行个解锁,解锁完成之后呢, ok 来进行回复啊,就是这么样的一个情况。好, 那总的来说,我们说对于现在这个代码我觉得非常有意思的一点地方就在于说,对于初学者来说,仿佛感觉好像他是可以接受的啊,对不对啊?导入文件嘛, 构建锁影嘛?啊,然后配置这个解锁引擎嘛?然后呢?来啊,配置这个问答引擎嘛?然后呢?来进行一个 query 就 结束了,感觉好像它这个流程和 graphrek 是 一样的,对不对? graphrek 也是啊, indexing, 然后 query 啊,然后就结束了,但是我相信如果对这些有基础同学啊,看到这段代码可能头都大了, 这很多技术细节里面都没有啊,对不对?那正常来说,我们使用比如说 longchain 啊,使用 agent 的 scoop 来搭建 rack 系统的话,那我好歹得确定一下你 怎么切分的对不对?你切分的文档片段 talking 是 多少啊?然后呢,如果你是滑动切分的话,你这个重叠的窗口又是多少?然后你是使用什么 inviting 模型在进行的 inviting, 你 又是使用了什么模型在进行的?这个 回答对不对?这里面有一系列的问题它都没有解决,包括呢,你现在 inviting 这个词条量是保存在内存里呢?还是保存在本地呢?还是保存在词条数据库里面呢?啊?这属于一头雾水,哈哈。 ok, 好, 那么接下来我们再来看看啊,那么 index 再往下一层,它是怎么解决这些问题的? 对于呃 lama index 来说哈,其实我们刚刚说这问题呢,其实都是问题啊,都是作为每一个 rank 的 这个流程,我们都需要考虑清楚这样的问题。 只不过啊,对于 lama index 来说,刚才这些流程呢,它都隐藏起来了,它有一个默认的一个取值啊,对于开发者来说,我们可能不需要了解那么多,然后你立马就可以完成这样的所有的操作的话,那么刚才很多忽略的细节都是需要抓出来一点点来看的。 首先啊,我们需要知道的是第一步它来进行数据导入的时候,导入的这个结果啊,当然就是这个 documents, 对 不对? 那么对于任何一个这个 documents 来说呢,其实它这里面内容你会发现啊,导入读取这样这样的文档啊,当然是一个一个文档来进读取哈,读取这个文档之后呢,它里面是包含了这个 text 啊,就包含了你完整的这个文档的字不串这样的信息。 然后同时呢上面还有很多的一些原数据的这样的一个信息,然后同时呢上面还有很多的一些原数据的这样的信息,然后呢这个文档的 什么这个 type 啊, size 啊,这个 file name 啊等等等等啊一系列的这个源信息。那么这源信息呢,其实也是非常重要的一些这个信息哈,在我们之后去讨论啊,比如说这个路由解锁的时候,其实就需要用到它的这样的源信息啊,这个呢是它第一步啊,读取进来 documents 哈,然后呢现在只有一个文档啊,所以它 documents 的 这个 list 就 只有一个元素。 然后呢你这里面呢也能通过啊, documents 一 些属性呢,能够看到。说啊,现在它的很多的一些这个基本信息啊,源信源数据啊,是个什么样这个情况? 然后接下来比较重要的啊?是它就是 indexing 的 这样的过程,那么 indexing 这个过程呢,它其实有很多默认的一些这个参数啊,那比如说它默认呢,实际上是来进行滑动窗口切分,然后呢它的这个窗口的这个 size 呢?是两百啊,这里这里写错了啊,这个不是二十,这应该是两百。 然后呢所谓滑动窗口切分,指的是它的第一刀哈是零到两百个 top 啊, sorry, 零到一零二四个 top, 然后呢第二刀是八 八零二四,然后再往后加一零二四个 token 啊,是这么一回事啊,它是这样的一个这个切分的这个策略啊,它所谓的滑动窗口就指的是它这个一边滑动一边来进行切分,然后呢每两个切分的这个片段中间,它存在一个重叠的这样的区域,以保障它的核心信息呢,不会被切分到两段里面去 啊,是这样的一个这个切分的这个策略,哎,对不对?大家都知道了啊,他原来是这么来进行切的,当然他怎么切的呢?你也可以通过下面这代码来进行一个查看啊,他跟你说现在总共呢切分成五十八个节点啊,在这节点就切分成五十八个片段,就是五十八个 node, 然后呢你可以看每一个切分的片段分别是什么啊?都可以通过上面这个代码呢来进行个查看,然后同时接下来呢我们的 query engine, 对 不对啊?问答这样的引擎, 这里面呢有两个非常非常核心的啊,也是会直接影响我们最终它 rap 效果的。这两个参数一个呢是解锁策略,是 top 几啊,这个相对来说还比较简单一些,就是根据你的词条量的这个相似度,然后呢就找到呃最相关那么几个文档片段,然后除此之外呢,它还有一个叫做合成策略啊,这个就很有意思了,什么叫做合成策略? ok, 所以 很多策略就指的是,我现在假设解锁出了两个文档片段,我是怎么样带入到模型里面来进行回答呢?啊,那默认情况下是大家都能理解的啊,将康叫 compact 的 这样的策略,就把两个文档片段呢合到一块,然后带到文堂里面来进行回答, 然后但是如果你解锁的文档片段太长了,没有办法带到一次模型的回复里面去的话,那么他的这 compact 的 执行模式呢,就会变成,我先带入一部分文档片段,让模型先回复一次, 然后呢再把后面文章片段再带入到下一次的回答当中,再让模型回复一次,然后呢把这两次模型回复内容再把它封装成啊,是一个 system message, 再带入到第三次的模型回答里面去,让它再总结一次,然后再来进行回答。 啊,是这么样的这个情况,所以呢,对于像浪漫 index 来说,它其实规定的很细哈,很多的一些这个 api 啊,有非常多的一些功能啊,我们这就再大概带大家去看一下, 然后最后再再进行查询的时候,对不对啊?它就是我们刚刚所说的啊,转,把用户的这个问题转换词向量,然后呢啊去计算它的相似度,找找出最相似的这个 top 二,然后呢带入到啊它对应的这个提示词模板里边啊,来生成回复,然后最后呢?对不对啊?有一个这个 response, 大 概就这样的一个这个过程, ok, 好, 那下面啊,就这个具体的关于刚才这个回答啊,然后它到底是找到了哪一些对应的这个 nodes 啊?然后它的相似度呢?分别是多少啊?比如说现在我们是 top 二,默认情况 top 二,然后它现在就找到了这么两个文档片段,对不对?上面这文档片段的相似度呢?是, 呃,零点八三啊,下面的文档片段也是零,也是零点八三啊,找到两个这个相似度结果差不多的啊,这两这两个文档片段,然后来进行回答啊,就这么一回事。 ok, 好, 那这个呢,就是关于我们 lama index 的 一个最基本的这样的一个使用的过程啊,当然下面还有一个这个 lama index 的 这个 erotic 的 啊啊啊, erotic rag 的 这个使用过程啊,这个大家就可以自己去看一下啊,总之呢,我们也是可以把 这个拉玛 index 呢给它封装成是一个这个外部工具啊,然后呢把这外部工具呢直接带入到这个 agent 这里面去,然后呢 agent 呢就会根据现在用户提的这个问题,然后呢灵活的事实的来进行回答啊,就这么一回事啊,这个呢是所谓的拉玛 index 的 这个 agenterrag 的 这样的一个流程啊, 稍等,我们搞搞,刚刚重载了一下,再给大家看一下啊,把它先呢封装成是一个外部工具,对不对?然后呢把它放到啊 tools 这列表里边去,接下来它就会根据用户提的问题啊,灵活的来进解锁啊,就这么一回事, 当然到这我们还没有结束,比较重要的是我们需要知道他现在的啊,这个我们刚刚所看的这些参数是他是这样的参数,但是这些参数到底是怎么设置的呢? 对不对啊?这个会非常非常重要啊,因为我相信大家肯定都是这个,肯定是需要知道这些参数该怎么设置,然后才能够比较好的去完成啊这个呃灵活的设置各式各样不同的参数,然后呢完成最终的这个解锁的过程。 那么这个参数设置其实非常简单,首先对于 lma index 来说,它有一个这个 settings 的 这样的一个这个 api, 然后呢在这个 api 里边我们就能看到它的 chunk size 啊,它的这个每个切分的文档大小, 然后呢还有啊这个 chunk overlap 啊,就是每次在进行切分的时候呢,它的这文档片段的重合的这样大小,然后呢还能看到它的这个默认的 embedding 这样的模型, 当然在这里面其实就可以自由的来进行修改了哈,通过它的这个 settings 的 这个全局变量,你就可以直接比如说 settings 点 chunk size 直接修改这个属性。那么接下来呢,它在进行切分的时候啊,可能就会换不不同的这么个切分的这样的个策略, 然后呢它有啊这个默认的这个存储的这样的一个机制,它呢是保包含在这个 vector store index 这样的一个对象里边的一个属性,就比如说我们现在默认情况下是保存在内存里边儿,那么除此之外呢,你可以把它保存在本地也是可以的, 这里面它可以不借助任何的这个磁枪量的数据库,然后就可以来进行存储,也是没有什么问题的啊,当然它你也可以这里面去指定任意不同类型的这样的这个磁枪量数据库啊,可以来进行本地的保存,保存完了之后呢,也是可以来进行读取来进行的使用, 然后同时它的默认的这个 topk 啊,是怎么样来进行设置的?默认 topk 呢?是在它的这个 s engine 啊啊 siracure engine 啊里边来进行设置啊,就是这里面你可以设置 topg, 对 不对啊?作为最相关的这个文档 来进行解锁,然后同时它还有啊关于回答的过程当中,它有个系统默认这个提示词,那系统默认这个提示词呢,就长这个样子 啊,但是这个提示模板看着比较复杂啊,实际上它是专门用于我们进行回复的时候,怎么样把解锁出来的文档片段来进行个拼接啊,然后呢来进行回答。这个提示模板大家也是可以自己来去修改,比如说你想把它改成纯中文的也可以啊,就改成这个样子,然后它就会始终使用这个纯中文来进行回答啊,这个呢都是可以的, 然后同时呢它还有啊,什么这个合成响应的这样的策略,那默认情况下呢,是把所有的啊这个文档片段塞到一块来进行一个回复。除此之外呢,你还可以分层来进行回答,就比如说一个文档片段先 让模型回答一次,然后呢逐层来,呃,然后呢?最后呢?把模型回答总结这内容,再来进行一层回复啊,也是可以的啊,这样的话它就可以吸收更多的更广泛的一些文档片段这样的信息啊,这是所谓的合成的这样的一个策略, 当然这里啊可能害同学问到,比如说更多的切分策略有没有啊?我要不同类型的数据格式的切分有没有啊?能不能够进入不同不同不同类型的这个数据集啊?当然是可以的啊,下面有一段就是,呃具体的每个环节的这样的个拓展 啊,比如说数据集,那你可以去拉玛哈这个拉玛哈普上去看一看,有很多很多各式各样不同类型的数据源啊,都可以来进行一个读取啊,包括什么 ppt 呀, word 呀,甚至视频啊,都可以啊,来进行个读取, 然后呢在进行缩影的时候呢啊,他也有很多的这样的个缩影的这样的方法跟缩影还有切分的这样的方法啊,比如下面啊,有很多各种不同类型的切分方法,你都是可以 来进行一个这个选择啊,来甚至是来进行个自定义也都是 ok 的, 然后呢在查询的时候呢,你也可以,对吧?我们刚刚所说的啊,去设置一些这个提示模板啊,自由的来进行不同类型的啊,你可以自定义这个提示模板,和他 实际响应合成的这样一些关键环节,都是可以人工来进行影响的。当然像这一些东西哈,实际上是给大家先看一看啊,他在这三个环节里边呢,哎,其实是有很多可以操作的这样的个地方的, 然后,哎,咱们在下一小节就会看看拓展一下我们刚才所说的这样的一个比较普通的这个流程,对不对? 从我们最一开始的普通的这个 rack 流程基础之上,哎,来找一找啊,有没有一些进阶的这样的一个这个策略,就比如说啊,这个 small to big retrieval, 对 不对啊?这样的一个进阶的策略,怎么样来进行实现啊?比如说混合解锁啊,如何来进行,如何来进行实现,以及智能路由解锁如何来进行实现。 而当我们学会了这些东西怎么样进行实现之后呢?就可以进入到下一个更复杂更深刻的这个选择题里边去了啊,就比如说像 c s v 的 文件啊,怎么样进行,怎么样来进行剪啊?像动态文档如何来进行剪啊?像这个比如说视频的数据如何来进行剪等等等等。 好,那么到这我们这一小节内容呢,就全部结束了啊,我们这小节呢,相当于是给大家做了一个非常详细的深入系统,并且是零基础的关于拉玛 index 这样的框架上手的一个 基本的使用流程,那么下个小节我们还会有更多的实操的这样的内容。当然在我们这小节结束之前,还是一样的打一波广告啊,又到了这个激动人心的广告时刻了,对不对? 哈哈哈,那现在看到的我们在讲解的关于拉玛 index 相关这样的内容呢,实际上是节选自我们的二点五大模型 a g 的 智能体开发实战课这样的一门付费课程,这门课程是由我和暮雨老师共同来主讲的一门一百个小时以上的完整体 系大课,那么这门课程啊,当然我们刚也说了,对于像 reg 方面这个技术,实际上是所有大模型开发工程师必不可少的啊,一项这个基本的这个技能啊,然后呢在我们的课程里面,其实从第一期开始就有非常丰富的关于 reg 方面技术的内容这样讲解, 然后也是伴随着现在啊大家使用 reg 逐渐进入了深水区,所以呢我们在我们的十二月班里边实际上是新增了啊拉玛 index 相关的非常系统的这个内容的讲解跟介绍, 那么 index 呢,作为目前最强的啊这样的一个 rek 解锁这样的 api, 那 么在刚刚啊咱们这部分内容讲解过程当中呢,相信大家是大概看到了一些啊,对不对,它的这个功能和它的这样的一个潜力啊,当然之后呢还会有更多的这方面的啊,它实战效果这样的演示, 但是大家如果想要深入的系统的学习关于啊所所有的这个 rec 系统的这个技术的话,那么也欢迎大家啊报名我们现在正在开设的这门付费课程啊,这门课程呢是可以帮大家零基础入门,然后直达目前顶尖大厂的中高级的岗位能力要求的。 我们这这本课程里面有非常多的关于一些 rex 系统的定制化开发的相关的这样的一个内容。那么这本课程总共呢是六大模块啊,第一个模块呢是关于如何零基础接入全球最顶尖的大别模型,然后第二个模块呢是在重点介绍啊,关于 微调和蒸馏相关的内容啊,当然所谓微调和蒸馏,实际上就是围绕大表模型呢,来进行一个后训练哈,来围绕它的某一部分参数呢来进行修改,然后呢永久的去修改它的这样能力啊,用可以用于去提升大模型的,比如说角色扮演啊,比如说知识贯注,比如说代码能力的这样提升,或者 a 帧的性能的提升等等等等各方面这样的能力。 然后同时我们在微调领域里面也会啊,在十二月班里面也重点新增了叫 ag 的 性能啊,用于去提升模型整体的 ag 的 性能, 然后同时第三个模块就是我们的大模型的 rack 系统啊这部分这个内容了,然后在我们的课程里面会来讲解关于 rack 系统的搭建, rack 系统的性能的评估和优化,以及基于制图谱的 graph rack 企业级的落地应用。然后同时也包括啊,我们刚刚所说的像多模态的 rack 系统啊,包括像这个 啊,来我要表格来进行的啊,这个解锁的这个 rack 系统啊,甚至是原生的这个图片进图片出的这样的讲解,甚至我们系统里面啊,沐雨老师还围绕着 graphreg 啊,基于知识图谱的解锁增强的这样的一个微软官方的 graphreg 这个库号来进行了二次开发啊,使得它能够围绕着一些多模态的这个信息来进行解锁。 ok, 那 这个我也相信是我们课程里面啊,但这个是我们课程里面独家给大家提供的这样一些这个方法哈,当然也是业内啊,可以说去解决目前的 graph 性能瓶颈的非常前沿的一些技术方案。 好,紧接着第四个模块啊,是关于 m c p 的 全体系技术实战啊, m c p 我 们上上公开课才讲过啊,对不对?包括啊,零代码就是 m c p 工具啊,包括三大类的 m c p server 的 开发呀,包括 m c p 的 a 阵的开发等等等等。 那么第五个模块啊,是关于十个主流的 agent 开发工具的这样的实战,包括啊,低代码开发框架啊,像 kose, defy 和阿玛尼。也包括主流的代码开发框架啊,像 longchen, long graph, 还有 auto gen。 当然也包括我们新兴的一些代码开发框架啊,像 open i 的 agent sdk, 谷歌的 adk, 还有这个阿里同意发布的这个 agent 的 scoop 等等等等。 当然我们课程里面还有四大项,十万行代码级别的企企业级项目实战啊,分别是 forkchat, 对 不对?第一个项目就是企业级定制化的 rack, 自助库解锁引擎的开发啊,这其实我们课程里面的 第一个大型的这个项目啊,也是,呃,可以说目前来说市面上复杂度非常高的啊,这样的一个 rack 系统。那么同时第二个项目呢,是一比一还原 minus 通用智能体 a 智能项目开发实战。第四个呢是 mate 政啊,企业级的 ai 编程跟数据分析智能体啊,项目开发实战。 那么所有的这些内容,我们在十二月班呢,我们的课程还进行了这个全新的改版和升级,新增了更多的这个内容,包括啊, longchain, 一 点一的 这么三个模块啊,这个 long graph 啊, longchain 啊,还有这个 deep agents 啊,相关内容这样讲解和全套的 longchain 应该是一点一哈,全套的这个实战案例的实操教学,以及我们现有的所有的案例呢,全部都升级和匹配到了啊,这个 longchain 一 点一 同时呢还新增了啊, jameson 的 智能开发实战和 nintendo pro 啊,这样的纹身图的项目应用开发实战, 然后同时我们还新增了啊,这个 agent 二幺,对不对啊?这个 agent 自适应啊,这个,呃,强化学习后训练的啊,这样的一个这个模型训练的完整的这个流程,然后同时最重要的是我们还新增了十四项啊 agent 实战的开发的实操案例, 能够覆盖啊,目前各个主流的大魔性技术应用的啊,非常核心的热门的场景,包括像多模态的这个 pdf 检测啊,光是多模态 pdf 检测,我们课程里面大概做了四套 这个教程适用于不同的这个情况啊,因为多模态 pdf 检测,呃,怎么样,怎么说呢啊,这个情况其实很多啊,然后我们课程里面实际上是有很多套不同的这个检测的这个方案,然后对应不同的场景啊,比如说这 这个多媒体 pdf 扫描呀,啊,比如说多媒体 pdf 羽翼扫描呀,对不对?比如说这个图片到图片的这样的个解锁呀,啊,甚至还有这个音频的这个解锁等等等啊,这样的一些解锁的这样的一个内容, 然后同时还有非常多的啊,包括 ai g c 的 这个场景的实操案例啊,纹身图啊,纹身视频啊,包括这个纹身 ppt 啊,对不对?还有实时语音啊这样的一些这 agent, 然后同时啊还有非常多的啊,关于 ai 数据分析的这样的一个实战,包括 n l to circle, n l to python, 对 不对啊?还有像这个 chat data 相关的一些这个应用,当然同时也包括文本类生成和审核的这样的一些这应用啊,包括什么小说报告公文的编辑呀,包括 这个文档啊,是否合规的这样的审查呀等等等相关的一些 agent 的 这样的一个这个开发。那么现在我们的十二月班啊,是已经正式发布了,并且呢啊,我们现在呢是在双十二的这个 活动特惠的期间,那么在我们所有直播间里面啊,大家可以享受我们整个的啊双十二的这个活动特惠的啊,这样的一个特殊的折扣优惠, 当然啊,我们直播间里的这个五折特价呢,呃,也是全年最低的这样的一个价格啊,是双十二的同价的这个秒杀的特价是可以承诺保价一整年的啊,因为现在这个双十二的这个活动期间,我们的直播间呢也是呃, 可以啊,这个给到大家的这个双十二秒杀的这特殊的特惠价格,并且同时呢我们直播间前十名下单啊,还有额外的超值的啊特惠的福利,包括赠赠送全年三百六十五天星星的 技术技啊,新技,新技术持续追根的啊,这个特殊的福利和一次机会免费升级到下一期啊的特殊福利,以及一对一学习路径规划和三十个小时速通的就业路径学习规划,以及一对一简历精修和最新的一百道面试高频问答模板等特殊的啊,这个特惠福利,当然这个福利呢, 是指在我们直播间报名同学啊,前十名能够享受的到。那么大家现在如果对我们课程感兴趣啊,欢迎大家扫描现在屏幕上二维码,添加我们的助教老师,然后呢 大模型就能看到这门课程完整的课程介绍和现在正在进行的特惠活动了啊。当然其实对我们的课程来说呢, 现在啊,大家如果是在我们小通的这个直播间里边,也能看到我们现在弹出的啊,这个五折特价的这优惠券啊,大家点进去之后呢,就能看到这门课程完整的课程介绍。 但之前也有同学会问到啊,说我们的课程啊,这一百个小时是怎么算的啊?是不是包括就比如说我们现在正在讲的这样的公开课的这个内容其实不算啊,我们公开课内容其实只是作为我们正课的一个啊,加餐啊或者辅助 不学习的这样的一个定位啊,所以我们公开课呢,一般来说要不然是入门啊,要不然是一些比如说比较新的这个前沿的技术的这样的一个讲解和加餐啊这样的一个定位。然后呢我们课程里面的一百个小时是不包括,那我们现在比如大家看到的这样的一些直播啊,或者 b 站上的一些视频,也不包括我们赠送的啊,我们继续给大家赠送这个 入门教程跟深度学习的这个入门教程哈,也都是不包括的啊,是纯硬核的这个干货的一百个小时独立的这样的一个内容。当然同时啊,我们在双十二的活动期间呢啊,这个其实是今天晚上单独给大家申请的额外的一个这个福利哈, 我们之前啊说双十二的活动期间呢,我们老师是给大家准备了十五套原创的热门 a 证的项目的原码,那么有哪一些 a 证呢?大家可以看看啊,大家就这些 a 证啊,这个名字都写在这名字都打印在这个屏幕上, 然后呢,这十五套项目原码呢?原来啊,是我们啊参与到我们每天晚上的这个答疑的活动当中来,如果有三次被老师选中了你的问题的话,那么就可以来进行一个这个赠送啊,然后呢,但是老师们每天晚上的回答的这个问题的时间确实也是有限啊,因为,呃主要还是在这个讲课嘛,所以很多同学可能不一定能够拿到这么 多的十五项的这个完整的这个项目模板。然后现在呢,是我们所有今天晚上报名我们课程同学也都会全部来进行一个赠送啊,所以大家如果是呃报了名我们课程之后啊,也是可以找我们的助教老师来来去领取这十五套项目的项目模板。 然后这十五套项目啊,其实,呃,跟我们刚刚所说的十二月班新增的什么项目啊,还有我们公开课讲的这个项目啊,都不一样啊,它是额外的十五个实操的这个 demo 机的这样的个项目啊,大家可以自己呢来进行下安装部署使用,然后来进行个调试,那么我们课程里面所有项目也都是 后代分离的啊,这样的个独立的这个开发项目啊,其实尽管我们今天的课程实际上是属于一个 lama index 的 一个入门的啊,完完全全零基础入门的这样的课程啊,但实际上呢,在我们的付费课程里面,其实啊,当然入门的课程肯定有,对不对啊,因为我们本身的课程就是一个完全零基础可以来进行学习的这样的课程。 那么除此之外,我们课程里面从今年的第三季度开始,也是不断不断不断的在给大家增加很多的一些前沿实操类这样的内容,其实也是因为大模型的 agent 的 技术呢,也是逐渐趋于落地啊,所以呢,在我们的课程里面, 其实会更多的围绕着不同类型的场景,给大家提供一个可以拆包即用的解决方案啊,包括像多模态这个解锁,对不对?我们刚刚已经说了什么 啊,动态 pdf 剪辑呀,什么动态的这个羽翼剪辑呀,什么这个图片到图片这个剪辑啊,还有动态的这个呃语音的这个剪辑等等等等。我们课程里面其实每一个不同的场景都会有一个不同的这个案例啊,能够帮大家直接呢来进行拆包即用。然后同时呢,这里面大家看到的赠送的这十五套的这个内容啊,十五套的这个 a 证的项目原码也是 应该算是我们课程里面给大家来进行课后练习的这样的一些这个案例啊,所以呢,在我们课程里面总共啊算下来的话,应该是有这么几十项啊,三四十项的这个实操的这样的一个项目啊,前后段分离的这个实操的这样的项目,所以这么课程确实啊,我觉得一方面呢是能帮大家完整的啊,从零到一呢去学习跟掌握大模型的这样的个 体系的技术,然后同时也是能够啊给大家提供很多的啊企业及落地的这个解决方案啊,能够帮大家做到啊,这个拆包即用。

兄弟们直接上大实话,二零二六年了,别再以为会调个 openai 或者本地 api 就 自称是 ai 应用开发工程师了, 现在的 ai 就 业市场不是卷,是严重的断崖式断层等。一边是只会写两句 prompt 的 套壳侠正在沉迷事业,另一边是真正懂模型落地的架构师,月薪五十 k, 被大厂抢到手软,想吃这碗饭,你的能力结构必须拿捏得清清楚楚。 先说底座,这个没得商量,拍层滚瓜烂熟只是入场券,拍 touch 你 得能闭眼手写,别跟我提你天天调用别人的库。面试官一个问题, transform, the self 减 attention, 底层矩阵怎么算? forward 潜向传播怎么传?答不上来,直接坐实吊包侠标签卷铺盖走人。底层的机制你不懂,模型稍微出点 bug, 你 得直接抓瞎基础打完。想拿高新企业级的四大核心板块, 少一块都进不了大厂。第一块,端测小模型与 reg 的 工程化。二零二六年企业最看重什么?降本增效? 你天天无脑调用千亿大模型,老板看到偷啃账单直接掀桌子你,你得懂怎么用千问七逼拉玛三这类开源小模型,千金业务流怎么搞定?向量数据库怎么做?剪辑增强生成 rap 高递发,低延迟审算力,这才叫工程能力。 第二块,垂直大模型的微调与量化通用大模型谁都会用,企业要的是私有数据的深度,适配 lora, qora 这些高效微调方案你必须实操过。微调完不算完怎么做?四减 bits, 八减 bits, 量化怎么压?显存怎么做?推理优化,这是直接拉开差距的护城河。第三块, agent 与多兵种协同开发。现在傻瓜式的单向串联 api 已经淘汰了,现在是 land graph、 凹凸镜这类基于图结构流程编排的天下。你要玩转工具调用、长短期记忆机制和自我纠错,循环设计一套可控的决策链。这块能力决定了你是不是应用层架构师。第四块,底层推理加速,这是你冲年薪五十 w 加的 底牌。 vr、 m、 skunk、 flush、 attention 3 这些高阶关键词面试必考,多卡并行怎么分? prefer 和 decore 的 阶段怎么优化? 这部分认知就是你和普通马农的分水岭。说实话,学技术最怕的不是难,最怕的是没有地图瞎乱撞。方向错了,你熬夜到脱发也是白搭。这个行业现在 不缺听说过 ai 的 人,极度缺乏能让 ai 落地帮企业省钱的稀缺人才。我熬夜把二零二六最新 ai 应用开发工程师做成了四阶段黄金学习路线图,从基础原理到迁移模型微调,哪阶段该看什么书刷什么开源 项目写的明明白白。想要路线图的点赞关注,在评论区扣个破句,我直接发给你。二零二六年卷,时间没用,卷对结构才能活下来。

当 ai 掀桌时,没人会等你学完好了 world。 如果你不知道从哪里开始,接下来请和我速通九个 ai 必学的顶级知识点,掌握四种以上的人,可以胜任百分之八十的 ai 岗位。开发 ai 应用到底该选 luncheon 还是 lma index? 很多人第一反应可能是看谁更火,谁更勤快,谁功能多。 但我先抛个更直接的问题,你的项目到底卡在知识怎么进来,还是卡在事情怎么做完?这才是今天真正要比较他们的原因。更多大模型学习物料和全套面系课在这暴走。大家好,我是彭宇,你先看我这个首页标题,我放的是 lanchen 和 lma index 选谁, 副标题是 agent 开发指南。为什么这么起?因为今天我不是想讲一个工具介绍,而是想讲一套 ai 应用的分工逻辑。到二零二六年这个时间点, lioncheng 和 lama index 都还在持续引进,而且方向已经很清楚了。 lioncheng 更偏向 agent 编排和执行控制, alama index 更偏向文档知识和剪辑增强,也就是说,他们早就不是早期那种谁就是一个 regoku 的 简单印象了。所以这场分享我会按几个问题来讲,先看他们各自到底擅长什么,再看这背后行业发生了什么变化, 然后落到怎么选,最后讲 agent 真正怎么落地,最后给你一个一句话结论,这样你听完之后应该就能比较清楚的知道自己的项目到底该站哪边。先说定位,你可以把 lama index 理解成知识层,或者说数据层, 他最擅长干什么?就是把各种乱七八糟的数据接进来,像 pdf、 合同、手册、报告、网页、数据库表格,甚至还有 ocr 扫出来的图片内容,然后做解析、切分、缩影、剪辑, 最后把这些内容组织成模型。能真正用上的上下文,他强的地方不在会不会调用工具,而在知识能不能进的来,进的准,找的对。所以如果你在做企业知识库、文档问答、制图助手、资料查找、条款定位 这类场景, lama index 往往会特别顺手,因为它解决的是拿什么知识来回答问题的问题。那 long chain 呢? long chain 更像执行层,尤其是它和 long graph 放在一起看会更清楚。它擅长的是 agent 编排、工具调用、状态流转、 多步流程重试、恢复、人工介入这些事情。比如说一个任务,不是回答一句话就完了,而是要先分析,再查数据库,再调接口,再做判断,再写回系统,最后还得能追踪、能恢复、能接人工确认。 这种场景就特别适合 long chain 或 long graph, 你 可以把它理解成怎么做事的引擎,它更关心的是流程怎么走、步骤怎么拆,状态怎么保存,工具怎么接,失败怎么回退。 所以一句话概括, long chain 更像怎么做事。 lama index 更像拿什么知识做事,这不是谁覆盖谁,而是天然分层,一个管知识,一个管执行。那接下来就要问了,为什么二零二六年了,我们还要认真比较这两个框架? 这就要说行业影响了。第一个变化其实是 ai 应用开始分层了。以前很多团队喜欢把 rag agent、 workflow、 文档处理全堆在一个框架里,觉得这样省事。但现在你会发现这种方式越来越吃力,因为知识接入是一类问题, 流程编排又是另一类问题,工具调用和状态控制又是另外一类问题。于是行业开始慢慢形成共识,知识层归知识层,执行层归执行层。也就是说, lama index 更像知识底座, long chain 更像执行引擎。 第二个变化是 agent 开发已经从做 demo 进入工程化阶段了。以前大家看 agent 可能就是一个会聊天的机器人,能回答几句就觉得很厉害。 但现在企业真正要的是这个 agent 能不能完成任务,能不能失败后恢复,能不能中途差人功能不能被观测,能不能审计、成本多少,成功率多少,重试多少次?这些问题已经不是模型聪不聪明这么简单了, 而是整个执行系统稳不稳。所以你会看到 long chain、 long graph 这类方向越来越强调 durable, execution, streaming state, human in the loop 这些能力,本质上就是把 agent 变成一个真正可控的系统。 第三个变化是,企业需求已经从知识问答往知识加动作走了。以前大家最常见的 ai 应用就是问答查制度,找文档、看手册、搜资料。现在不一样了,很多企业希望 ai 不 只是回答,还要能读文档、抽字段、理解上下文,调用系统、发通知、改公单、推进流程。 换句话说,未来主流不是会答题,而是会干活。这也是为什么 lama index 和 long chain 的 组合越来越常见, 前者负责把知识变成可用上下文,后者负责把上下文变成实际动作。讲到这里,咱们就可以进入最实用的一部分了,也就是选型标准。先记住一个最简单的判断,不要问谁更强,先问你的系统卡在哪,你如果卡在知识质量,那就优先看 lama index。 你如果卡在流程执行,那就优先看 long chain。 如果两边都重要,那就组合起来。比如说,第一类场景是文档芝士库 rag, 这个时候优先考虑 lama index, 因为这类场景最重要的不是模型会不会说, 而是模型能不能找到对的内容。文档多不多,格式杂不杂,解析准不准,切分合不合理,缩影好不好,照回全不全,这些直接决定最后答案的质量。像企业知识问答、制度助手、技术资料查找、合同条款定位,这些都属于 lama index 很 擅长的范围。 第二类场景是多工具多步骤 agent 型任务,这个时候优先考虑 lama chain, 尤其是 line graph, 因为这类场景的核心不是找资料,而是执行任务。 比如运维助手、业务自动化、自动分析、公单流转、跨系统操作,这些都需要规划、调用工具处理状态、分支判断、失败重试。你会发现,问题不在于有没有知识,而在于怎么把事情做完,这时候量权的价值就很大。 第三类场景是知识和行动都重要,这个时候最常见的做法不是二选一,而是组合。 lama index 负责数据接入、解析、缩影和剪缩增强。 lunching 负责工具调用、流程编排和任务执行。比如企业 ai 中台文档驱动、自动化、业务助手, 这些项目通常都不是一个框架单独能搞定的。说白了, lama index 管知识层, long chain 管执行层,这套分工最自然也最稳。那接下来就进入 agent 开发指南了,这里我想强调一点,做 agent 千万别一上来就想着全自动, 很多人一开始就想做一个什么都自己干的 agent, 结果最后往往不可控。更好的方式是什么?先从单轮工具调用开始,再做多步 workflow, 最后再慢慢走向自制 agent。 这个顺序很重要,因为工程上最难的不是让他会说话,而是让他稳定做事。 真正落地的时候,我建议你把系统拆成五层来想,第一层是用户目标,也就是用户到底想干什么,是问答、查询、分析,还是直接执行动作。 第二层是知识层,这层可以用 lama index 来做,把文档、数据库、网页、多模态内容接进来做解析、切分、缩影、解锁、增强,让数据变成可用知识。第三层是共享上下文,也就是模型真正要看的工作台, 这里面要放检测到的知识片段、任务目标、历史状态、业务规则、工具参数、结构化输出要求。第四层是执行层,这一层用 line chain 或 line graph 来做,把任务拆解、路由调用工具处理分支保存状态,做长流程执行。 第五层是业务结果,也就是最后输出的不只是答案,而是结构化结果,处理过的文档、工单通知或者真正完成的系统动作。这里面还有三个很重要的原则。第一个原则,先做 workflow, 再做自制 agent。 也就是说 先把可控的流程做稳定,再去加智能,不要反过来。第二个原则,先拆层,再集成。知识层和执行层分开,后面维护起来会轻松很多,不然你的提示词和业务逻辑全缠在一起,后面很难救。 第三个原则,先做观测,再谈智能。你一定要能看到日制链路成本、 token、 工具调用成功率、失败重试路径、任务完成率这些东西看不清, agent 很 容易变成黑盒。所以你会发现, agent 不 等于聊天机器人,真正的 agent 核心不是说的像不像人, 而是能不能完成任务,能不能失败,恢复,能不能被控制,能不能被审计,这才是工程落地的重点。最后我们收个尾,给你一句最简单的选型建议,如果你今天主要做的是 reg 文档知识系统,就先看 lama index。 如果你今天主要做的是多工具 agent 和流程编排,就先看 luncheon 或 lun graph。 如果你做的是企业级 ai 应用,大多数情况下答案不是二选一,而是两者协同。在压缩成一句话就是 lama index 更像知识底座, lama index 更像执行引擎。所以回到今天的标题, lama index 选谁,不是看谁更热,而是看你的项目更需要知识还是更需要执行。 如果是知识偏 lama index, 如果是执行偏 luncheon, 如果既要知识又要行动,那么就一起用,那么下次再见啦!

面试官问,在企业级的 rack 系统里, lama index 到底扮演了什么角色?哎,同学们注意了, 这时候如果你只回答它是一个数据连接器或者调 api 的 工具,那面试官心里可能已经给你打叉了,因为这种理解还停留在玩具阶段。更多大模型学习物料和全套面试课在这暴走。大家好,我是彭宇。在专家眼里, lama index 根本不是什么简单的搬运工, 他现在是整个 reg 系统的数据操作系统和智能调度中书。今天我带大家对着这张架构图,把 lama index 的 四层核心逻辑彻底拆解清楚。我会把每一层最细节的子模块都讲透。 如果你能在面试时把这套架构行云流水的划出来讲明白,那大模型架构师的 offer 基本就稳了。咱们先看第一层,数据社群与解析枢纽。大家想一想,做企业级 reg 最头疼的是什么?是数据太乱了!面试官经常会考你 如果原始资料全是乱码错位表格模型胡说八道怎么办?这时候你要指着架构图上的第一个模块说, lama index 扮演的是数据翻译官。首先针对最难啃的复杂 pdf 和各类文档,它能进行像素级的解析。 接着它不只是读文件,还能直接对接企业级数据库,把 sql 里的结构化信息实时拉取过来。更厉害的是,它内置了大量 api, 能直接去 slack 或者 notion 这种办公协助平台里翻箱倒柜, 把碎片化的聊天记录和笔记抓取回来。大家看这个最关键的图标图表与表格结构化。很多同学问为什么模型看不懂财报里的表格,因为你以前为的是乱马。拉玛 index 通过智能解析,能把表格还原成带语义的格式。 记住给你们总结的难点解决方案,传统解析会导致数值丢失,但拉玛 index 通过多模态解析引擎,维持了文档的视觉结构这一关,它保证了进入系统的全是高质量干货。好数据拿到了, 直接塞进向量数据库就行了吗?面试官会接着考。如果用户问的问题需要跨文档推理,单纯的语义搜索搜不到怎么办?这时候你要展示第二层,结构化锁影与存储管理。这里 lama index 是 逻辑架构师, 它不仅仅由我们最常用的向量锁影来处理模糊匹配,还提供了树状锁影,专门用来做跨长文本的层级摘药。 更硬核的是属性图谱,它会把文档里的实体,比如公司高管、财报日期像蜘蛛网一样连起来。你看这个原数据提取器,它会自动给每一段文字打上标签,比如这段话属于哪个部门、哪一年。这里的难点是纯向量剪索,存在上下文碎片化的问题。而 lama index 的 方案是结合 graph rag 技术 构建实体联系。当你问去年谁主导了某个项目时,他不是在库里瞎撞,而是顺着图谱的线索精准定位。有了锁影,怎么搜最聪明呢?这就到了全场最烧脑也是最有含金量的第三层, 高级解锁与动态工作流编排。这里 lama index 进化成了智能指挥官。首先他有一个意图路由,用户提问时,路由会先判断你是想查某个具体数据,还是想做权威总结,从而分发给不同的解锁策略。 接着是杀手锏,从小到大剪索,搜的时候只搜一个极短的、特征明显的小句子来保证精准度,但在未给模型时,系统会自动带上这一段话周围的一大块背景,这叫降维打击。大家再看这个动态工作流, 以前的 reg 是 死板的直线,现在的 lma index 是 事件驱动的,它支持多步查询与自我修正。比如用户问的太模糊,指挥官会启动 agent 模式先反思。哎,我没听懂, 我是不是得先反问一下?或者检测出来的质量太差,我是不是得重新拆解问题再搜一遍?这种会自我纠错的能力, 才是目前大厂最看重的工程进阶能力。最后一步,生成答案,很多同学觉得只要调用个模型就行了,那你就太天真了。面试官会问你怎么量化 rgg 的 好坏,怎么保证他不产生幻觉? 这时候我们要看第四层推理引擎与评估闭环。 lama index 扮演的是品控官,他封装了多轮对话上下文引擎和提示词模板,让你写代码时不用去操心历史对话怎么拼。绞索回来的资料可能有噪音,所以他引入了混合绞索重排序, 先大范围搜,再用金牌模型把最相关的结果推到模型嘴边。最精妙的是 regtrad 自动化评估, 他会像考官一样问三个核心问题,第一,解锁出来的东西跟问题相关吗?第二,生成的答案真的是根据解锁内容写的吗?有没有幻觉?第三, 答案最后有没有真正解决用户的问题?有了这套数据驱动的评估体系,你才能理直气壮的跟老板说,我的系统准确率提升了百分之二十,是有数据支撑的。好了,讲到这,咱们给面试官来个漂亮的回马枪,做个总结。下次你面试的时候,一定要记住拉玛 index 的 这三个身份。第一, 他是数据大管家,用智能解析和多维度所引,搞定了复杂文档读不懂的问题。第二,他是逻辑架构师,通过属性图谱和原数据提取,让剪辑具备了深度推理能力。 第三,它是高级指挥官,用事件驱动的 workflows, 把 rag 从死板的现行炼录变成了会思考、会自愈的代理系统。同学们,现在的 ai 行业不缺会写 prompt 的 人,缺的是能把数据和模型深度缝合在一起的架构师。 lama index 就是 那把最锋利的手术刀。 如果你面试时能把这四层的逻辑聊到这个深度,保管面试官听完只点头,那么下次再见了。

逼自己一个月学完,其实你很会 ai 大 模型,存下吧,很难找全的,本系列视频耗时两个月制作共计一百二十小时,带你一口气学完,吊打大模型面试官。这应该是目前抖音仅有从入门到进阶 全套系统 ai 大 模型教程,本期带你搞定浪漫 index 还整理了大模型面试题目,简历模板,学习路线,公开试听课,需要的话直接拿去。目前业界做大模型应用开发有两款比较适合于 agent 智能体应用开发场景, 那还有一款叫 lama index, 比较适用于做 rock 应用的一些场景。那我们今天的话就给大家来分享一下 怎么样基于 lama index 快 速地去构建一些 rock 的 一些应用啊,带大家快速入门。那首先我们来介绍一下这个 lama index 啊, lama index 是 一个专门用于这个大模型应用开发的一个数据框架 啊,它最开始的话是规划专门用来去做一些欸 rock 的 这种场景的,但是现在发展越来越快了,那不仅仅局限于这个 做 rock 的 一些这个功能啊,但是它 rock 的 功能确实比 long chain 要强啊,但是它基础的一些功能基本上跟 long chain 啊差不多了啊,但是它以前最开始规划的话是作为一个数据框架啊,主要是做一些数据的一些加载啊,结构化呀啊,跟大模型做一些整合呀,然后做一些这个大模型的一些本地部署啊啊,所以 说它的功能其实非常强大啊,但是我们今天主要重点的话给大家来讲它在 rock 这一块的一些组建方面的一些优势啊, 那么大家可以去看一下这个官方文档啊,这个是朗这个 lama index 的 一个官方文档地址啊,当然是纯英文版的,但如果看不习惯的话,我给他找了一个中文的一个翻译文档啊,这个页面跟这个官方文档差不多啊,然后有配套的这个翻译啊,大家看这个的话会比较的好理解一些啊。 那么讲 lma index 之前,咱们得简单说一下这个 rock 这回事啊。 rock 的 话就是因为大模型目前都是基于这个预训练的啊,也就是说它的那个数据集是有截止时间的,比如说即使是目前最新发布的这个模型的话,它到发布那一天可能训练的话,它的时间是有截止的。那对于最近发生的一些新闻的话,乐点, 或者说大家公司里面的一些行业的一些数据的话,它是没办法感知的。那如果说要解决这个问题啊,因为我们做大模型开发都是需要整合到自己的业务里面去,或者说放到企业内部做一些 o a 系统的一些整合呀,一些工作上面的一些提效啊。 哎,这个就需要大模型去了解我们的一个业务,那怎么来了解呢?那我们需要把文档喂给他是吧?就是哎,公司内部的一些 一些资料啊,是吧? word 文档, excel 啊,或者技术文档, markdown 啊,或者 pdf 文档啊,这些东西的话,你都得喂给大模型,那怎么来喂呢?这个整个一个过程啊,咱们就叫 rock, 这个叫剪缩增强生成啊,也就说相当于开个挂挂啊,就是把那个我们的一个知识库的文本啊,就公司的内部资料啊,或者是行业的一些知识, 干嘛呢?把这个东西转换成向量啊?因为向量做相似度匹配,一般有两种算法,一个叫欧式距离, 一个叫这个余弦相似度。欧式距离就比较好理解了,比如说我们这个二维的向量,这个是 x 轴,这个是 y 轴啊,那么比如说有一个点啊,比如说这个是啊,二四这个节点,是吧?然后还有一个点叫三啊,三三这个节点,那么计算这两个节点的话,假设这两个节点,哎 它的欧式距离,就计算这两个点它之间的坐标,它的距离是多远啊?还有一种的话叫余弦相似度,就计算两个点之间的一个夹角啊,如果说这个夹角 接近于这个一的话,就意味着什么呢?就是无限接近,是吧?就比较重合,相似度非常高啊,就是他的一个得分会比较高一些啊,这个就是用来去啊转换成项链的一个目的。那既然有了项链,咱们这个文本又这么多,那你肯定得存到一个数据库里面去啊, 由此就产生了这个向量数据库啊。向量数据库就是我们可以存储很多由文本转化过来的一个向量坐标点啊,然后存完之后,哎用户去查询的时候,那我用户会输入一段文字,对吧?那这段文字也会转换成像量,那我们要计算用户输入的这个文本向量,跟我们 当前哎向量数据库里面的一些向量做一些相似度的匹配,匹配完之后他会拿到一些啊文档,但是文档列表啊,因为里面可能存了大量的文本嘛,它是文本块,所以说这里面会有个东西叫解锁召回啊,解锁召回就意味着咱们匹配能匹配到哎,比如说 top 三啊, 能拿到三条最匹配的那个文本啊,文本段拿到文本段之后丢给大模型,让大模型参考这些文本段依次去总结归纳输出啊,这整个过程就叫 rock, 也就是让大模型学习啊,了解到你的一个知识的一个情况,那么他回答问题的时候就会,哎,更加的什么呢?比较接近于你想要的一个答案啊,就这么个意思。所以说做 rock 的 话,其实会涉及到一个过程啊, 有几步,首先啊,我们做文档加载的话啊,你你首先得得把这文档给漏得进来说,比如说你 pdf 得用 pdf 加载器吧, txt 得用专门的加载器, markdown 也用专门的加载器,这个里面就涉及到一个东西叫 document load, 那么整个 lama index 咱们要等一下讲的一些组建的话,其实说白了就是去实现这些功能啊,它在不同阶段有不同的组建去完成啊,所以说大家都要对这个流程有一定了解 啊。然后文档加进去之后,哎,那文档如果很大,比如说一百兆的话,你不能把一百兆的文件都丢给大模型吧,或者都存到现场数据库里面去吧,你不能把整个一个大文件一次性转吧,这样的话性能上啊,会有一些问题,所以说咱们得做什么呢?分块,并且大模型它也有 token 限制的啊,就是你, 你如果用在线的大模型把文本转换成像量的话,他是要是吧耗费 token 的, 如果说你的算力不够的话,或者说你的对成本有要求的话,你不能把整个一百兆的文件都丢过去,是吧?这个成本会比较高,所以说咱们分快,分快之后的话,哎,性能问题也解决了,那成本问题的话,其实也可以得到缓解啊,因为你 你不一定要这样很频繁,是吧?而且中间要是报错什么的话,那之前的 token 可能都白费了啊。所以说分快之后,哎,用异步的方式去把它做加载,加载完之后什么呢? 哎,把它存到邮箱数据库里面去啊,邮箱数据库就是大家看到的一些这个坐标点啊,就是我们这这个是二维的啊,就把它存进去,存进去之后把它存到邮箱,然后之后干嘛呢?解锁啊,解锁的话就是用户会输入一段提示词,这个提示词的话咱们干嘛呢?哎,拿到这个提示之后, 哎,把这个也转换成向量,做一个相似度的匹配,匹配完之后会拿到这个向量数据库里面的一些文本块啊,就列表。拿到这个文件列表之后,哎,去干嘛呢?去,去给大模型作为一个提示词的方式去参考,参考之后最终给一个答复啊, 所以说它的作用的话,就是在于,哎,让大模型了解到我们的一个行业知识啊,所以说基于此的话,那个 lma index 啊,就是 为了解决这些问题的话就诞生了啊,它主要就是为了去解决一些领域数据跟大模型相结合的一个问题啊。所以 lama index 最初的一个核心组件的话啊,主要是面向路由的一个场景。首先第一个叫数据连接器啊,这个很好理解,就数据源加载嘛, 那这个的话,比如说它目前支持很多种数据源,比如说文件式的是吧? pdf markdown, 然后,哎,还可以连接在线数据库啊,比如说 my sql 啊,还有一些在线的这个协助平台文档库啊, nation, google 文档啊, 这个的话大家可以看一下官方文档里面有一个东西啊,大家,如果是你是英文版的话,在这个里面啊,有一个叫 component gods 啊,就是一个组建的一个 啊这样的一个指南,然后在这个里面有一个东西叫 loading 啊, loading 下面有一个 data connectors 啊,这个里面是吧?它就定义了各种的什么组建啊?它有一个 lma hop, 这个里面定义了各种各样的一个文件加载的一些方式啊,比如说文件图片是吧?包括 pdf 啊,各种各样的都有啊,都有, 这个是那个数据加载器啊,就是相当相当于官方给你写好了一些库,完了,你就很方便的去加载这些文档啊,然后一个的话叫数据缩影。数据缩影的话,这个也很好理解啊,就跟我们查询数据库一样啊,查字典一样,你得有一个编号是吧?快速的去找到哪一页吗?那这个 lma index 去帮你做 解锁之前,它首先也得把它做缩影啊,那缩影的话,比如说就有向量缩影,有列表缩影,有数值的缩影,因为要有有些场景,它要展示层次化的一些接口啊,还有包括一些关键字表的一些缩影啊,这个它都会帮你做各种各样的缩影啊。好,然后有了缩影之后,接下来就查询了嘛,查询怎么做呢?它引入一个组建叫引擎 agents 啊, 这个引擎的话就是用来干嘛的呢?就是哎,他会帮你去做一个什么事情呢?做查询的一些逻辑判断啊,就是比如说这个什么呢?哎,有些场景是做聊天的,是吧?问答的, 咱们做聊天机器人的时候,他会要用到聊天的一个引擎,还有一个场景叫查询,查询的话就是简单的一个企业内部的一个,比如说文档剪辑啊,内容匹配啊,啊,所以说这个应用场景不一样啊,主要就是聊天要么就查询啊,会用的比较多一些。然后的话是这个数据代理啊,数据代理的话是大模型里面这个叫什么呢?叫 知识的这个工作者,是吧?他通过这个工具增强可以去执行一些任务,比如说一些什么研究啊,数据提取啊,说白了就是 这个数据代理的话,就是很方便的帮你把数据可以干嘛呢?作为一些这个提取啊,比如说我要提取 markdown 里面的一些标签,是吧?一些这个标题啊,或者 html 里面的一些标题啊,或者是里面那些图片啊,就是这个里面它可以帮你做一些数据代理。 数据代理这一块找一下,在这个 load 里面数据代理 next storage, 找一下啊,数据代理这在哪个里面? data nodes agents 个 data agents, 看一下这个啊,看一下这个名字, document 的 nodes 找不到也没关系啊,大家知道这个概念就行了啊,就是这个里面有一个东西,专门就是用来做数据抓取的,它可能这个因为这个里面升级也比较快啊,你看刚刚那个 quarry engine 是 吧? java engine 在 咱们在这个里面啊,数据代理 quarry 这个应该是做持久化的吧,看一下做数据的一个工具,增强数据代理,看一下中文里面有没有评估代理用法工具,一级别代理查询 存储,所以这样子 找不到也没关系啊,他可能是一个这个,呃,要,要么就是改了名字啊,要么就是有时候他这个只是个逻辑概念啊,他可能跟有些组建合并在一起啊,然后是应用集成,应用集成的话就是咱们可以去做一些向量数据库的一些哎,这个连接啊,然后包括一些外部的一些接入啊,这个是在这个里面有一个 存储里面,有一个叫向量存储啊,向量存储里面,大家看啊,它目前支持这个叫二十多种向量存储啊,就是不同的数据库它都支持啊,比如说主流的那个 crama faucets 啊,还有那个 l、 s, d b 啊,还有这个各种各样的一些 d b 啊,啥? 还有 yiv 啊,是吧? milliv 啊,就是基本上主流的都支持二十多种,非常丰富啊,还有包括一些外部的一些这个 api 接口啊,这个的话我看一下。在哪里啊?就是一些 api 啊,这个应该是在快手里面找一下啊,说白了就是你看在这个里面啊,大模型,你看使用大模型 有很多啊,看一下,你看 gpt 模型是吧? gpt 四 cloud 啊,很多大模型都支持啊。 messes 很多主流大模型都支持啊,应用程序集成那一块啊。好,然后是 lma index, 一个核心概念啊, 这首先第一个概念是 rock 啊,刚刚有讲过啊,这个就不重复了,首先我们第一步要构建缩影,是吧?要构建数据库啊,你要把文档加载进来之后构建一个缩影啊,要有这个数据库的概念,然后我们就执行查询的时候就是去做什么呢?类似的一个向量的相似度匹配啊,然后另外的话就是到这个什么呢?这个, 哎,数据连接器啊,数据连接器里面相当于咱们得加载,是吧?加载文件啊,然后去建立,所以嘛,所以这个里面会用到一个组建,叫什么呢? data collector 啊,就是做数据加载啊,注意加载, 然后完了之后你得做一个文档的一个加载啊,文档的一个加载,这里说起来有点抽象啊,我给大家看这个代码啊,这个是这个 lma index 提供的一个文,这个代码示意啊,我们来看一下,从代码上来说的话,首先啊, 我给大家从头开始说啊,比如我们现在有个知识库啊,有两个文档,这个 news 点 t x t 是 一篇关于人心机器人的一个新闻文章啊,在这个里面有一段描述,是吧?关于人心机器人的,然后还有一个叫 techmd, 是 关于大模型的一些这个 技术文章啊,什么 agent 的 智能体什么的啊,一段这个文文档,我们现在的诉求就是我们先要把这这个 data 里面什么呢?把它做做一个知识点啊,把它加载进来,加载进来,怎么来加载的呢?来,大家看啊,你需要引入一些东西啊,首先第一步你得干嘛呢?你得有一个啊,过程 什么呢?哎,叫文档加载啊,大家看这里有一个叫 simple vector 啊,叫文档加载器嘛,这个东西的话就是在那个 lama index 里面是一个核心组件啊,就是它是用来加载文档,比如说我现在通过什么呢? 哎,通过一个路径啊,就 data 这个 data 目录里面呢,把它全部加载进来啊,所以说这个里面就会涉及到刚刚讲的一个 data connectors 啊,就连接器嘛, document, 那 这个 data connector 的 话,我们在这个里面啊,有一个加载啊, 找到,呃,数据连接器啊,大家有可以看这里面的视力啊,你看这个里面有各种各样的 load 是 吧?我刚刚的话是一个本地的啊,一个叫什么名字呢?叫这个 simple director 是 吧? great 啊,在这个里面,大家看啊,我是用的这个本地文件目录的方式加载的,所以说我要用这个库去做加载,大家如果说你用的是 google docs 吧,你得换一个这样的一个库啊,还有 nation 的 话,你也得换啊,这个是需要注意的啊,第一步咱们先得把,是吧数据,哎,拿到,所以说你得连上去啊,然后第二步叫 documents nodes 干嘛的呢?这个是你拿到,通过第一步你会拿到一个什么东西呢?拿到一个叫 documents 的 一个东西啊, documents 的 一个东西,然后拿到这个 documents 之后,哎,接下来你干嘛呢?接下来你可以干嘛?做一个分快啊,分完快之后就相当于我一个 document, 比如说是一百五十兆啊,那你得分快,比如说我按这个 啊,这个一 k 是 吧?一 k 就 做一个分块的话,那你 note 就 相当于,哎,你要做 n 个是吧?这个按一百五十兆拆分成多个 nodes, 做一个拆分啊,做一个拆分,做一个拆分就是它会得到多个啊, list 的 一个 nodes 啊,多个,那这个怎么来拆分的呢?在这个里面啊,找一下啊, 我们可以去看啊,在这个里面有一个,大家可以看这个文档啊啊, document store index, 其实就是就是一个分割嘛,是吧?分割的一个过程,数据连接器加载,找一下啊啊,节点解析器跟文本分割器,看一下是不是这个啊? load, 大家看啊,其实这个里面就是用到一个什么呢?叫分割器啊,分割器就是你可以什么呢?比如说我简单,我这里用的应该就是 simple 的 一个,看一下啊, quick range, 我 这里我我其实没分割,我是全部加载进来的,那你其实可以干嘛呢?你用了那个有一个 simple 啊, simple 这个加载完之后对不对?你会得到一个 document, 你 得到一个 document 之后干嘛呢?你可以做一个 load 啊,就是做一个 split。 分 割啊,在这个里面大家看啊,有个 simple file node path, 你可以把这个东西干嘛呢?做一个分割啊,分割成多个 nodes 啊,就是我一个文件啊,比如大家看这个 t x t, 是 吧?这个 t x t 文件, 比如说第一行一块,第二行一块啊,就一块、两块、三块,比如说你按房行分割的话,就是有多少行就分成多少块啊,这个叫 nodes, 一个块就叫一个 nodes 啊,这个在 long chain 里面叫 trunks 啊,其实都是一样的意思啊,就是分割啊, 好,这分割完之后干嘛呢?哎,要建立锁影了啊,建立锁影就是目的就是为了后面咱们去做项链搜索匹配的时候查询可以用项链的方式去做匹配,所以接下来会用到一个东西,叫什么呢? 叫做向量数据库啊,向量数据库,所以你得有一个干嘛呢?存到向量数据库的一个逻辑啊,这里咱们会用到一个东西叫 vector store index 啊,就是要把文本转换成向量,变成一个缩影啊,变成一个缩影,所以这时候干嘛呢?这时候得有一个什么呢?叫向量数据库的一个概念啊, 在这个里面啊,大家看,咱们有一个东西叫哎,叫 store context 啊,就是叫存储的一个上下文啊,存储的一个上下文里面,这里大家可以看得出来啊,我们需要干嘛呢?把这个向量数据库哎跟下面的一个逻辑什么呢?做一个关联啊,做一个关联, 把它,哎,这里做一个查询的时候,咱们要把它存到向量数据库里面去,怎么来做的呢?首先我向量数据库用的是 crm 啊, crm 啊,说到这个运行代码,我先说一下这个环境啊,大家首先需要把这个, 哎,我建议是用扩展啊,专门装一个 lama index 这么一个环境啊,建议是三点幺零版本,然后装两个库,一个叫 klamata db 啊,把这个库给装了,然后把 lama index, 我 用的是零点八点三这个版本啊,把这几个安装给它,装一下这个环境代码,它就能跑起来了。 然后咱们需要引入到一个 crala d b 这个啊, crala d b 的 话是一个开源的线上数据库,大家需要把这个东西库先装好,装完之后咱们得连接上 crala 这个库,这个库在哪里呢?大家看我用的是它一个本地数据库的这种存储方式,在当前运行代码的这个根目录下面有一个 crala 的 一个文件夹 啊,有个 karma 点 sql 三的这么一个文件,这个是一个本地的一个数据库文件,这里大家可以双击啊,如果说你是拍 chum 的 一个专业版的话,你可以打开这个向量数据库啊,在这里大家可以看到它有一个表格,这个表格里面就是你文本转换成向量的一些库啊。首先它有个 collection, 大家可以把它理解为一个表,一个表表里面有个什么呢?一个 是吧? quick start 啊,就 collection 这 collection 里面,我们专门就把项链存到这个这个 collection 里面去啊,就这个集合里面去,然后在这个 embeds 里面大家就可以看到啊,啊?不是 embeds, 看 made a date 找一下啊, embeds collection, make date sentence。 哎,我刚刚还没有执行啊, forgot search, 我现在只创建了一个 collection 啊,但是我没有往里面去存东西啊,这个没关系啊,咱们先说啊,也就说大家,哎,你它其实就是把向量数据向量存到这个里面去了啊,存到这个里面去了,那首先你得什么呢?你得去跟这个什么呢?建立到这个数据库里面啊,就是你得 建立一个连接啊,就是咱们这里有一个判断逻辑啊,如果说这个 karma 最开始没有创建的话,它就会执行一个,叫什么呢? 叫 create 啊,创建向量数据库的这么一个过程,它会帮你生成一个文件啊,如果说你已经创建的话,它就会拿到数据库的一个连接 啊,不管最后怎么样,它最后都会拿到一个 colama 的 一个 collection 的 这么一个实力对象,有了这个东西之后,你就可以干嘛呢?做向量的一个存储啊,它就是拿到这个东西去做存储的啊,做存储的,所以说这个就很好理解了啊,这个里面就会做一个存储的一个逻辑啊,在这个里面有一个存储啊,大家看 向量存储啊,向量存储的话,它就会执行一个代码逻辑啊,文档存储,向量存储,文档存储,它就会做一个持久化啊,持久化, 所以说这个里面我会用到一个方法,叫什么呢?叫 vector 啊, vector store 啊,然后会去做一些这个存储的一些逻辑啊,这个里面官方的话,这个势力里面其实也有在写啊,也有写关于一些这个存储相关的啊, 这个文档有时候也没法访问啊,因为一些网络原因啊,可能会影响这个访问一些逻辑啊,就大家其实也可以自己去看一些这个文档啊,你看这个关于向量存储上面 其实也有很多的这个实际的个例子,比如说我们现在要看一个这个库拉玛 db 的 这个存储,是吧?他每个向量数据库存储啊,其实大部分代码都是一样的啊,只是稍稍会有一些区别啊,大家就可以看一下他的一个存储逻辑啊,存储逻辑这个里面都有写啊,其实 你看这个势就是一段势力嘛,用这个向量数据库去存储,是吧?这个里面,哎,它其实就是怎么关联的呢?在这个里面来看这个存储上下文里面它会干嘛呢?把这个向量数据库转到这个里面去啊,有一个叫 store context 啊,就是做存储的一个逻辑啊, 存储的一个逻辑,这个就会是把向量数据库哎往里面去存,然后这个里面有这个文档加载的时候啊,在这里面有个 from document 的 时候,看一下这里可以干嘛呢?把刚刚那个地方给它传进来啊?在这里面大家看,就我把我刚刚的那个在这里面啊,这里还加个东西, 就是我加载文档的时候我需要干嘛呢?把这个哎咱们的存储上下文跟这个向量数据库给关联起来, 关联起来之后接下来可以干嘛呢?就可以去查询这个向量数据库了啊,查询向量数据库了,这个东西就是建立,所以啊,并且进入到一个查询阶段啊,这个就比较好理解了啊。然后下面还有几个阶段啊,第一个阶段的话就是 reterer, reterer, reterer 的 话就是咱们要去做剪缩啊,就是你输入一段,是吧提示词, 对,它需要把这个提示词转换成向量,这时候咱们需要从向量数据库里面去做查询。比如说我们现在你看我 qr 啊, qr 里面,我现在问一个问题,我问人形机器人包含什么行业,那现在这个 这个问题的答案是在这个里面啊,但是我也不知道答案是什么,我现在就是让哎用 rock 的 方式让他去回答这个问题。来,我们来跑一下,先看一下效果啊, 它的一个整个过程就是你看使用已存在的本地数据向量数据库啊,也就是说什么呢?我现在啊, 我第一次是没有存储的啊,我,我把这个给大家删掉啊,删掉啊,来跑一下,我的删掉数据没有了,大家看第一次的话它会什么呢?使用创建一个全新的本地数据库,对不对?然后干嘛呢?然后大家可以看到这个数据就在这个里面啊,但是它有时候直接会报一些错误啊,没关系,咱们再多跑一下,有有时候会报错啊。嗯, 藕线的,它有时候可能因为这个 lma index 的 话,它对这个中文知识有时候不是很好啊。看一下这个,把这个问题去掉啊, 偶尔会报报错是吧 啊? got, 看是不是这个代码这里写的有问题。这个这个里面有个 store context 啊,这里好像用这个英文去问的话就会好一些啊,有时候会有一些问题啊。 是啊,再跑一下啊,那我就问个人型机器人呢,偶尔会报错啊。 quick start, got, it, well, 我 不加这个试一下。那是加了这个的原因啊,那你先先我把它代码撤销啊。 机器人包含哪些行业?来试一下。 好,现在大家可以看到,你看工业家庭服务,这个是不是就可以了啊?解锁就可以了啊,刚刚那个参数其实不用传啊,就是这个不用管它传了的话有时候还会报些错误啊。就是咱们去解锁的时候啊,你看啊,我直接去什么呢?去这个向量数据库里面去解锁了啊,解锁之后发现拿到一个内容,然后做一个反馈,我们搜家庭服务啊, 家庭,大家看这个里面是不是有涉及到家庭服务,是吧?公共服务特种行业,是不是?我这个 rug 已经参考这个里面的文本了,对不对? 这个就是整个我的一个逻辑,哎,就是我进到一个查询阶段啊,然后这里有一个隐藏的一个阶段,就是一个 node play post processors, 就 后置处理,这个里面会涉及到一些文档转化过滤排名。什么叫文档转化呢?就是文档它这个里面的话,哎, 这个节点里面的内容,比如说一些编码,一些逻辑,你是不要做一些转化,是不是过滤做一些处理啊?比如说我加了一些条件,只筛选, 只保留 top 三的啊,只保留 top 三的,那你后面的数据,你说是得过滤掉滤这些平那个相似度的一些排名,对不对?所以说这个在 node post processor 里面去完成,然后响应处理器是干嘛的呢?就是它这个里面可以定义格式啊, 就是我返回的内容,我可以自定义,比如说我希望是 jason 的, 我希望是什么呢?希望是这个叉 mail 的, 这个可以做一个拓展啊,在 response 里面做一些控制,然后我也可以做一些这个什么呢?叫 chart engine 啊,我这个里面有个 chart engine 啊,在这个里面代码上面代码都是一样的。最关键的逻辑就是在这里啊,有一个 s chart engine, 还有一个,是吧?这里就是方法不一样啊,就 chart 这个是适用于聊天场景啊,就一对一对话,也就是后续你可以把一些对话记录给它灌进去,那个的话就简单的是只是做一个查询啊,所以说这个场景会有些不一样啊。 好,然后是一些个性化的一些配置啊,就是大家可以,哎,你把那个向量数据库什么呢?也可以做一些窗口的一些区分啊,比如说在这个里面有一个 from default, 搜一下啊,在这个里面大家看这个窗口 size, 我 这个分块大小是可以自定义的啊,我可以自定义啊,做一些处理,并且的话我可以不只应用这个大模型啊,不只应用大模型, 这个里面就相当于我用大模型的这个引碑顶的这种方式去做嵌,我也可以不用大模型啊,所以说就大家根据自己的一个需要去设置啊,然后是自定义项链存储,这个里面的话,就是我可以哎自己加一些这个参数啊,就是 比如说我创建了一些逻辑,这个项链输入库的那个 correct 名称是什么,是吧?然后做一些参数,一些配配置,并且可以打印一些日期啊,然后包括一些自定义,一些剪辑啊,就在这个里面我可以加一些参数,比如说你看 top k 只保留前五个啊,只保留前五个, 这个结果的意思就是因为最终他还是会给一段完整的文本描述的,只是说他参考的内容,你只取前三条还是前多少条,这个参数大家看,你看相似度的一个 top k 啊,就是只取五段啊,有匹他给你匹配到十段,但是你只要五段,这个相似度排分最排名最高的啊,就那个分值,相当于他给你做一个排名,哪个分值最高啊?你像他刚刚那个问题去问这个 人机机器人的时候,他会觉得,哎,后面那个什么什么家庭服务那个问题会更贴切一些,所以说他帮你匹配了那个比较接近的前五个,前五个内容,前五个文文本快啊,这个是需要注意的啊, 然后并且我们还可以什么呢?使用定义一些机机座模型啊,就是这里你可以用 open ai, 也可以用 deepsea, 各种各样的模型都是支持的啊,这个都没有问题啊,以上的话,就是这个 lama index 大 模型应用开发的一些核心的一些概念,还有一些组建啊,这个大家客户可以去自己去写一些代码去体验一下啊,其实也非常好理解啊,非常简单啊, 最后去做一个小总结吧啊,就是首先大模型应用开发,就是对于啊,我们目前来说啊,相对于机座模型开发的话,它是要求很高的算法 基本功的啊,但是我们现在啊,做应用开发的话,其实要求没有那么高了。未来啊,大家做大模型开发的一个方向的话,基本上就两块,第一块叫微调,第二块叫 rock 啊, 我们今天讲的 rock 的 话,就是以这种文档加载这种方式啊,他的一个特点就是他试签不训练模型,但他需要让模型去直接根据我们的一个数据去来作答啊,他可以让大模型啊理解我们自己私有化的一些数据,相对于微调来说,它的成本更低,风险更小。 如果不涉及到模型问答的风格的话,我们仅需要对当下的思维化数据做一些回答,那么就用 rock 啊,也就说大家如果说是做什么呢?只要不涉及到模型风格的变化的话,你就用 rock 就 可以了。什么叫 模型风格呢?比如说啊,你是做电商行业的客服的,那个大模型的这个场景它是涉及到什么呢?一些回答语气方面的一些东西,比如说,哎,他回答的时候 他需要给你一些什么呢?友好的提示,比如说亲啊,就是您的什么快递啊,即将送达啊,他是有这种行业属性的一些这个特色的啊,就是他会用一些网络的一些用语,对不对?他是带有行业属性的,但是你如果说做做政府部门一些应用的话,他就对用词的话,他就比较是吧有要求了,不能随便啊 啊,就是玩笑不能随便开啊,就是他的用词就要比较严谨了,特别是在法律行业啊,用词要非常之严谨啊,这个就啊你要用微调的方式了,微调的话就是去改变,哎,大模型自身的一个特性,他的风格啊,他不是能力啊,能力没有任何变化,智商没有任何变化,但是, 哎,他的风格会有一些变化,比如说你微调那些数据啊,你从你反复去训练,他是一个比如说法律行业的,那他回复的时候就应该有板有眼的啊,非常公正啊,就是 标准啊,不能说回答错了啊,对,准确性,因为一个误判的话,很可能就会有严重的结果后果是吧。就说不同行业的大模型的话,对于要求是不一样的,有的行业它是可以用 rock 的, 有的行业可能它比较适合于微调啊,在不同的业务场景下也会有区分啊,有的业务场景它就可能必须要用微调 啊,那有些可能要求不那么严格的场景的话,比如说做剪辑,比如说你做技术文档,公司内部的一些信息的一些剪辑的时候,它用 rug 的 话可能会更合适一些啊,它效率可能也会更高啊。好,这个就是这个,我们基于这个 lama index 去做大门应用开发的这个一个方向的话,目前主要就是基于 rug 的 这种场景啊,微调的话,我们 啊后面这个再给大家去做一些更细的一些分享啊。我们在使用大模型的时候,经常会遇到一些幻觉问题,也就是所谓的答非所问,这非常影响用户体验。那么怎么来解决这个问题呢?今天就给大家来分享一下,基于 lama index 引入 rock 技术来彻底解决幻觉问题,然后我们会基于本地的一个 deepsea 部署啊。 好,那首先我们来说一下啊,就是所谓的一个幻觉问题的话,会有一个什么样的一个情况呢?就是大模型在生成文本的时候啊,它会输出与事实不符,并且是逻辑错误啊,完全无关的内容,这严重影响了一些关键场景,比如说一些问答系统,知识解锁等它的一个可能性,它可能会 会误导用户啊。那为了解决这个问题的话,我们来引入这个 rug 技术啊, rug 的 话是目前非常主流的啊,去解决大模型幻觉的一个技术 啊,它是一个三个英文单词的一个缩写啊,就是这个 re travel arguments generation 啊,叫解锁增强生成 啊,也就是说去引入一个外部知识库,跟咱们那个大模型相结合啊,让大模型去学习到我们啊业务的一些特性啊,我们知识库里面的一些信息,从而的话去提高生成内容的一个准确性跟可能性啊。 那么 lama index 的 话,它最开始是设计用来做一个数据框架啊,就是去连接各种各样的一个数据,去解决大模型与外部数据的一些连接问题啊,实现更加精准的一些知识解锁跟深层啊,所以说我们本次啊,我们会讲解这个 lama index, 结合这个 rug 有 效地去缓解大模型的一些幻觉问题。 好,首先来介绍一下 lama index 啊, lama index 的 话,它是一个用于快速构建这个 rock 应用的这么一个框架啊,它特别适合于做 rock 啊, 其实类似的一个框架还有一个叫 long chain 的 啊,跟这个 long chain 目前功能比较接近啊,那么 long chain 比较适合于做一些 agent 的 一些场景啊, 然后大家可以去看一下这个官方文档的一些资料啊,对于这个 lma index 的 一些组建做了非常详细的一些介绍,还有包括一些视例啊,然后用户的一些使用案例啊,包括学习的一些资料都比较完善啊,但是官方文档是一个英文的,那这里的话,我给大家准备了一个中文文档的一个地址啊,大家可以去看一下这个文档啊,那这个页面布局的话, 跟咱们这个官网的啊比较接近啊,然后这样的话看起来就比较好理解一些啊。然后这个 log 这一块的话啊,因为我们等一下会讲到这个代码这一块的啊,就整个去实现这个 代,这个 log 怎么来集成那所以我给大家说一下 log 的 一个基本的一个流程啊,所谓 log 的 话,就是我们要把外部的知识啊投喂给这个大模型的话,那它大致的流程就是第一步的话,你首先得把这个文档给加载进来,对不对?比如说咱们的这个 pdf 啊,或者是这个 markdown, 这所有的文件你首先干嘛呢?你要把它加载进来,那加载就会涉及到一个问题叫文件解析啊,因为 markdown 跟 pdf 或者 txt 它们的格式是不一样的,那你的解析规则也不一样,那这个里面就会涉及到一个问题啊,就是如果说你自己要去写 rock 程序的话, 你要去写 markdown 的 一些库的这个引路啊,还有像 pdf 库的一些引路这些东西的话,我们用 lma index 的 话, 它就帮我们都解决了,它去对接了各种各样的一些这个数据源啊,在它的这个加载这个板块里面有一个叫数据连接器的一个组件,这个组件的话它支持各种各样的一个格式啊, pdf 啊, word 文档呀啊,它有一个啦吗? hop 这个里面就 有提供了各种各样的一个数据连接器啊,就大家可以非常方便地去解析到不同的一些文件啊。那这个问题就解决了之后的话,我们要把这个文件分块。为什么分块呢?因为啊, 大模型它的上下文是有限制的啊,你我们把一个文本转换成像量的时候,他对于那个大小是有限制的。如果说一个文件是一个 g 上上来的话,你如果把一个 g 直接转换成像量的话,那可能会出现一些问题啊,内存溢出啊,或者其他的一些问题。所以说我们要分块啊,这个里面就涉及到一个文文件分割啊,那还有一些分词的一些规则什么的 啊,好完了之后,哎,我们怎么样?哎?把它去到一个文文件分割啊?那还有一些分词的一些规则什么的啊。好,完了之后,哎,我们怎么样?哎?把它转化成向量之后,首先要存到向量数据库里面去, 之后干嘛呢?哎,之后用户去做一个解锁查询的时候,比如说他输了一个问题啊,虽然问了一个技术问题,那这个里面他会把用户的这个提示词转化成向量,跟咱们向量数据库里面存储这个向量计算一个什么呢?叫哎,相似度啊,相似度怎么算的呢?比如说一个二维的一个坐标啊, 比如说这个坐标是二五是吧?这个是三三啊,就这个坐标啊,这两个点之间的一个距离啊。欧式距离是一个比较简单的计算公式啊,这是第一个算法啊,就计算欧式距离。然后还有一个算法是计算余弦夹角啊,在这里 比如说这个角度是吧?这个角度如果说接近于一的话,他就是相当于重叠了,重叠的话意味着什么呢?就是他的一个分得分比较高啊,意味着他的一个什么呢?这个就比较接近啊,这是主流的两种算法。然后,哎,咱们先要数据库里面搜出来的东西,搜完之后的话, 这里面涉及到一个概念叫解锁召回啊,他去搜的话是搜出一些片段出来,因为你把整个知识库都给做了这个存储之后,对不对?哎,他是分段的,分完段之后他解锁这个内容匹配的话可能在第一段,也可能在最后一段,所以说他会有一个排名。比如说你搜那个 top, 只搜 top 的 啊, 他前部其实都能匹配,无非就是那个分数高低而已,比如有的叫零点九九分啊,那这个就接近于一了,非常匹配是吧?有的叫零点八七这个得分啊,那这样的话,就,哎, 他的一个指标就不一样啊,这样的话,但是他也能给你三个结果出来,然后由你来决定选哪一个结果,是吧?好,这个就叫片段啊,就解锁一个召回的话,就是把你匹配的内容给拿到,拿到之后干嘛呢?丢给大模型啊,通过那个提示词 全部组装丢给大模型,由大模型去输出回答啊,也就大模型他除了在他的一个静态的知识库里面啊,就咱们预训练的那个数据集里面去 做一些知识获取的以外,他还要去参考你给他传递的一些内容,就是你搜索出来的一些片段,最终再会干干嘛呢?就把这个结果完整的输出,这样的话大模型就可以比较好理解你业务里面的东西了啊,这个就是所谓的一个 rock 技术啊,也就是外挂知识库啊。啊,那等一下咱们要 讲的这个代码逻辑的话,其实无非就是围绕着这个 log 要把一些这个流程哎给执行完。比如说第一个流程叫 load 啊,就是加载文件啊,加载文件,比如说,哎,我现在要把一个文档啊,给大家看一个例子啊,等一下我们要把这个 markdown 啊,就是一个关于这个 external 的 一个技术文档啊, 把这个文档咱们等一下要做一个什么呢?做一个这个投位啊,就要把这个位给那个大模型啊, 所以说我们先要有一个文档,是吧?那文档之后,咱们,哎得把这个文档干嘛呢?做分片啊,把它分割起来,分完之后把它干嘛呢?做一下这个。呃,向量是吧?转换成像量。转换成像量的话,咱们等一下会用到一个模型啊,用到一个模型,这个模型的话叫这个 有一个分词器的一个模型啊,这个就是做文本切入的这个模型,叫这个 sentence transformer 啊,这个模型的话,欸,它可以干嘛呢?欸?做一个这样的一个相当于向量的一个切入啊,就是它可以帮你干嘛呢?把这个文本转换成像量啊,就是我们本地的模型啊,大家也可以用 open ai 的 那个 in beta 那 个模型啊,都是可以的。但是我们现在讲的是本地部署啊,就是全部是本地的啊,包括我们那个 deepsea 那 个模型,它也是本地的啊,然后这个本地不一样啊,之前啊, 我给大家做的一些分享,是我们基于 elama 去做的一个部署啊,那今天我们讲的是这个 lama index, 本地它就能把这个大模型给跑起来啊,它是基于 hack and face 的 一个框架去跑,所以说用 lama index 去运, 运行一些模型的时候,他是不需要借助外部的啊,他自己就有一些库能够把这个大模型跑起来,包括咱们的这个引杯里模型,包括咱们的那个问答大模型啊,都是可以的啊,这个都都是可以做到的啊。 好,然后最后我们要把项链存起来,存起来存到那个文件里面去啊?存哪里呢?我给他看一下,其实就是有一个锁影啊, 给大家看一下我之前跑出来的啊,你看默认的这个,呃,向量数据库,你看向量数据库里面无非就是一个坐标啊,就跟我刚刚讲的那个 x y 坐标一样啊,假设是个二维的话,它就是一个 x y 轴的一个坐标, 所以说我们要把文本转换成向量的话,最终大家可以看到在文件里面呈现的话,就这么个东西啊,就是一个坐标啊,坐标,然后这里面你看有一堆这个坐标啊,然后这个就是刚刚那个 markdown 文档,把它转成像量化之后,里面,哎,要存着一个东西啊,就变成这个东西了啊,就是一堆坐标啊,好, 这个就是我们等下代码要干的一个事情啊,然后,哎,向量数据库有了之后,接下来干嘛?接下来就要做做剪辑了啊,这个剪辑的话就是什么呢?用户,咱要输入,输入一些东西的话啊,输入一些东西,然后干嘛呢? 然后咱们要去用一个解锁器啊,这个解锁器是这个 lma index 提供的啊,目的就是为了让大家就是可以传入一个文本提示词,然后把它干嘛呢?转换成向量,然后,哎从向量数据库里面去剪辑, 也就是说你输入的这个东西啊,你输入这个提示词,比如说咱们问了一个问题啊,比如说这个 x 滕呢?是干嘛的,是吧?你问了一个问题之后,他也会把你这句话转换成这个里面,他分词器里面定义好的一个规则啊,这个东西怎么来的呢?其实是通过什么呢?通过一个那个叫词汇表啊,词汇表我来看一下,有一个, 然后看一下这个里面有没有啊?有一个 tokenizer, 这个里面啊,其实用到了那个模型里面的一个词汇表的分词器啊,看一下,应该是用的这个模型有个 sentence 啊,里面应该是有一个,我记得有一个,看一下有没有一个分词表啊? sentence bit, 找一找啊? convict, sentence, convict or cap tokenizer, 看一下啊, tokens jester 这个文件有点大啊,就是这个是用到模型里面的一个,相当于大家可以把它理解为字典啊,就是你输入这个内容的话,其实最终干嘛呢?它会转换成一个什么呢?坐标啊,大家可以看到这个里面有一些词啊,比如说随便搜吧中 看,你看中文,中文他对应的一个什么呢?一个坐标点啊,这个东西叫那个什么呢?你可以把它理解为一个啊,就是一个锁影啊,一个锁影一个这个位置啊,他最终会相当于拿到这个 坐标啊,拿这个坐标之后干嘛呢?叫 i d s 啊, i d s, 拿这个之后干嘛呢?最终把你把转换成像量这些东西啊,所以说这个它是有一个词汇表的啊,负责把一些分词分完之后,把对应的词干嘛呢?哎,把它转换成这个对应的一个,哎,向量转换成向量之后,它就能用向量去做一个相似度的一个减数了啊, 好,所以说我们要继续这个这一套技术啊,去解决大模型的一个幻觉问题啊。好,那接下来就给大家讲这个代码的一个部分啊,首先我们要说的一个点,就是我们现在要继续 defc 二一这个模型去做什么呢?做一个啊,加载, 这样的话,这个的话我们就不用基于那个什么欧拉玛了啊,就是你不需要去欧拉玛去部署了,你可以干嘛呢?用在大码里面把这个大模型给跑起来啊,怎么来跑呢?来,我给大家看一下啊, 选这个例子,首先干嘛呢?你要跑 deepsea 二,一啊,你首先得把这个模型下下来吧。啊,这我怎么下的呢?我是通过这个 mod scope 啊,就是这个摩达社区啊,在这里大家看啊,摩达社区,我下的是那个 deepsea 二,一千万的一点五 b, 真流的那个模型啊,大家,当然大家也可以,你如果说你显卡配置够高的话,大家可以去下你自己哎,这个配置合适的一个那个版本啊,比如说你下七 b 啊,是吧? 但是你如果配置不高,比如说你显存只有两 g 到这个四 g 的 话,我建议你是下这个一点五 b 啊,它能够跑起来推理的话,还是 ok 的 啊,这个文件下下来也就三点五个 g 啊,也不是很大, ok, 好, 那这个怎么来下呢?但是这里需要说一点啊,大家先要把这个要装一个库啊,就这个 model scope 啊,你要给他先装一下啊, model scope 这里啊, 大家先要把这个库装一下,如果说你你用官方的那个镜像仓库下载比较慢的话,大家可以用阿里云的那个镜像仓库啊,下载就很快了啊, 好,装完之后,哎,你就可以用 modscop 啊,这个有一个 snapshot download 的, 这个是什么呢?这个是 modscop 给你提供了一个 sdk 包,通过这个包的话,你就可以快速的去下载这个啊,它上面的一些模型啊, 那我已经下载好了啊,我下载的到了这个 d 盘的一个这样的目录下面,大家看啊,有一个 model, model 下面有一个 hop hop 下面有一个 deepsea ai, 然后下的是你看这个模型,我下载下来,但是如果大家去下的话,你要改成某个路径的话,大家需要把这一行加一下啊, 这里我跟他说一下啊,这个是 modelscope 啊,我们要去自定义去设置 modelscope 的 模型下载路径啊,默认啊,默认位置的话,它是在这个 c 盘的啊,用户名啊, 用户名啊,我记得是这个啊,就是 c 盘的用户的那个 home 啊,这个当前用户目录下面有一个 catch 目录, catch 目录里面有个 modscode 啊,目录是这个,大家可以改啊,把它改成这个。我建议是改一下,因为有些模型比较大的话,你都下了 c 盘的话,到时候此盘满了啊, 所以说我一般会设置到 d 盘啊,好,完了之后大家执行这个命令,它就可以下载了,下载完之后下面的代码才会被执行啊。所以说你大家第一次跑的时候,下面会有个进度条啊,一直下下下啊,我来看一下那个进度条啊, 会有一个,呃,看一下啊,这里啊,大家看,会有一个这么一个进度条啊,就把它下完就完事了啊。好,完了之后大家看,大家看啊,好,接下来我就要去什么呢?加载本地大模型了啊,这里会用到一个库,叫哈根 face 的 一个 l l m 啊, 这个库的话是 lama index, 帮你整合了哈根 space 的 那个 sdk 啊,就是哈根 space, 它本身有一套库啊,去可以去推理大模型啊,去运行把这个大模型跑起来啊,它要传入一些参数,一个的话是咱们模型的这个名字啊,咱们传入的是一个路径啊,你看我这里传的是我本地下载好的那个路径啊,大家把这个路径给复制一下,复制一下, 复制完之后干嘛呢?哎,你可以干嘛呢?你可以把这个东西啊给它什么呢?粘贴到这里啊,粘贴到这里然后干嘛呢?哎,你可以在这个里面啊,给他改一个啊,就把这个路径给改一下。在这个里面啊,大家看 这里面啊,把它改一下啊,改一下之后,哎,这个 token name 跟上面那个 mod name 的 话也保持一致啊, 大家注意啊,这个要保持一致啊,这样东西一致,然后的话,然后把这个下面的这个参数什么呢?给他加上,这个是干嘛的呢?这个是允许模型跟分词器去加载来自远程仓库的一个自定义代码啊,然后这个是相当于让大模型可以信任啊,这个并执行远程的一些代码啊,这个是 比如说我们做一些自定义的前向传播的一些逻辑,或者特殊的一些触手画方法,可能会用到啊,所以说这个是大家需要注意的啊,就是我们这个模型的路径给配一下,然后完了之后大家看啊,哎,我们可以干嘛呢? 在这里啊,大家看,你看你叫什么名字,是吧?我就问他一个问题啊,就这个就相当于我们本地跟这个 deepsea 本地部署这个大模型来做一个沟通,来,我们跑一下啊, 那为什么 lambendix 可以 集成到这个 hackface 这个框架呢?大家看啊,这个网站上面啊,其实 hackface 里面集成了很多的一些框架啊,你看大模型的,它可以给你做了一些集成的啊,做一些集成它相当于把主流的像 hackface 啊,一些框架的话,它都帮你集成进去了啊,所以说你用起来会比较方便啊,这就是它的一个原理啊。 好,你看你好,我是由中国的深度求索,这个说明咱们这个模型啊就运行成功了是吧?没问题啊,好,这个就是加载这个大模型啊,加载大模型,并且我们可以直接运行啊,这个就是我们简单的一个把它跑起来啊,跑起来,然后第二块的话,我要跟大家说的是这个,我们要把这个幻觉问题给模拟一下啊,模拟一下 啊,刚遗漏一点,还有一个地方啊,就大家可以装一个工具啊,叫呃, navitop 啊,就是你可以监控显卡的一个调用啊,大家看,我已这里已经装好了啊,默认大家执行一个命令啊,叫做啊 pip install navitop 啊,这里卡住了啊,关掉啊。 呃,首先这里的话,我们那个 lama index 是 基于 conda 去运行的,所以说我建议大家去装那个偶然 conda 啊,去单独去配置一个环境啊,然后把它哎,把它跑起来 啊,所以说我这个里面瑞的命令里面我提供了一个命令啊,大家看,就是你要去创建一个 lama index 这么一个环境,然后 python 的 话,我建议是三点幺零版本,然后就单单独针对这个环境去什么呢?去下载那个 lama index 的 一些库,因为它的库非常多啊,所以说,哎, 我建议大家用这个 nev 那 个康达去配这个环境啊,那我现在切换到 lma index 这个环境里面去装一个东西叫,呃,这个 nev top n v i t o p 啊, n v 呃, a i n v n v i t o p 啊,这个命令啊,来, 其实我已经装好了,装好大家直接运行 n v i t o p。 来,大家看这个就看得比较清楚了啊,就是你看我的库达的一个型号是吧版本啊,然后包括我显存的一个占用啊,我默认是四 g 的 一个显存,现在已经用了两个多 g 了啊,两个多 g 了,所以说,哎,这个还是挺费那个配置的啊, 这个就是啊,查看 cpu gpu 的 一个使用情况啊,这个 还是挺实用的啊。好,然后的话就是我们接下来就是要说一下这个怎么样把这个幻觉问题给复现一下啊。就是大家啊,你去用大模型的话啊,你去问他问题的话,如果说你没有引入知识库啊,会出现什么问题呢?来给他运行一下,我们就随便问一个专业问题啊,我现在没有导入任何知识库啊,我就随便问他 x axis 是 什么?来跑一下, 你会发现一个问题啊,会发现一个问题就是你每一次运行啊,比如说你第一次结果他是这样的啊, external 是 一个什么?用于分析跟优化的工具,而是第一次结果你第二次运行发现他说 external 是 一个什么?测量河流的一个工具,这就是所谓的一个幻觉问题,就两次结果完全不一样,牛头不对马嘴啊,这个就是出现幻觉了啊,所以说这个 你如果说不引入知识库的话,你问的一个专业问题的话,很有可能啊,每次的结果都不一样啊,因为大模型它是整个是基于推理机制的嘛,所以说它的结果带有随机性,如果说你没没有给他限定,没有给他知识参考的话,它就会出现一个问题,就是它的一个知识可能会,这个 可能会每次都不一样啊,这就是大模型的一个技术文档啊,大家看是一个 markdown 格式的, 这个里面对 excel 做了一个详细的一个介绍啊,它的一个使用手册啊什么什么的,是吧?都写得非常清楚。那我希望他参考这个文档啊,比如说你看 excel 是 一款高效、灵活、全能的轻量的大模型微调工具库啊,我希望什么呢?哎,他参考我里面的这个专业的这个是吧?说明啊, 你看他这个里面就可能说 excel 描述跟我这个文档就不搭尬了,是吧?就是不是一回事啊, 那我现在要让他学习这个文档里面内容是吧?这个就是我们要讲的这个 rock 的 这么一个知识点在这里啊。好,那基于这一点的话,我们现在就给大家讲怎么样把这个东西啊,就是 rock 这个数据库啊,给它整合起来呢啊?来 这个里面我们首先要引入一个东西啊,就是这里面要设计的一个向量剪辑的一个东西啊,因为我们要做 rock 的 话,你首先要解决这个文本转向量一个问题啊,回到刚刚那个流程啊, 来,来看一下这个流程,流程的话,你首先把这个文档加载进来,你要做分割啊,你要转换成向量,所以这里面的话,我们首先得干嘛呢?你得有一个 embedding 的 一个模型, 这个模型大家可以用 open ai 的 那个 embeds 模型,没有关系,但是你也可以去下啊,在这个里面我,我其实下了一个模型,大家也可以搜这个模型啊,在这个摩达社区里面啊, 那就可以说一下,这个模型的话,是目前啊,就是开源这一块做的还不错的。这个模型啊,它可以做那个 embeds 啊,就是做相似洞的一些匹配啊,做那个项链的一些转化啊,都挺方便的啊。就是这个模型啊,也比较小啊,这个文件啊,我看一下 才我记得是四百多兆啊,四百七十多兆啊,很小啊,就是也也比较好用啊。好,这个就是我们首先要有一个 invisibility 模型啊,从这个 model scope 下下来的,然后,哎,我们要把整个哎全区的 invisibility 这个模型设置为这个,这个相当于一个传奇,传奇参数啊,你要把它设置进去,然后之后的话,大家看啊, 在这里啊,我们依旧使用这个哈根 face l m 把那个 deepsea 啊给它跑起来,是吧?这个是跟刚刚一样的啊,然后把大局的这个大模型也给它设置一下啊, 好,然后的话什么呢?哎,接下来就是要干嘛呢?做 log 的 数据加载了,我会要去加载我 data 下面的所有的文件啊,在这里,这个里面有一个 simple director reader 啊, 我要把它加载。这个其实是 lama, 这个 lama 这个 index 里面的一个什么呢?哎,给你提供的一个叫数据连接器啊,这个除了目录啊,去连接方式以外,其实还有几种方式啊,给大家看一下。有个数据连接器 directory 啊,就是这个 simple 是 本地目录,这是第一种啊,还有像你可以加载这个云文档,是吧? google 文档或者其他的一些文档都支持的啊,都支持好,这个就是加载一些文档啊,然后加载完之后干嘛呢?把它转换成这个向量存到向量数据库里面去,然后干嘛呢?去生成一个缩影啊? 就是 lama index, 他 要帮你去做剪辑的话,你得有一个什么呢缩影啊?就给他说一下这一步啊,就他去做剪辑的时候你得干嘛呢?你首先得有一个缩影啊,就是你先把缩影得给生成呢?生成就是,哎, 相当于把它向量化的存到向量数据库里面去,然后通过所有的方式去做一个解锁啊,这个就是刚刚那个代码要干的一个事情啊。好,这个的话就是咱们这个目录啊,你要给他加载进去之后,哎,他就可以去做一个读取了啊。然后我们再来问这个 x 帧的这个使用步骤是什么?我们来看一下它的一个返回会不会比之前更加专业一些啊? 这个就是引入一个知识点啊,但前面有一些代码的一个告警,这个不用管啊,就这个 warning 呢,大家不用管啊,这是其实一些这个模型参数字段的配置问题啊,就是有些参数没加啊,但也不影响运行啊,这个没事啊, 好,这个就是我们结合 rock, 然后再去看一下这个效果,看一下它回答的是不是这么一个专业的一个内容啊? 然后我再趁这个时间我再说一下那个环境啊,环境的话我这里提供了一个 requirements, 点 txt, 大家要想把这个代码跑起来的话,你得装一下这个 requirements, 点 txt 啊,包有点多啊,如果下载比较慢的话,大家执行这个命令啊,就是下面刚一个阿里云的一个地址,下载会快一些啊, 这个就是把 lama index 整个的一个开发环境包都给它,哎,安装好了啊,好,大家看啊,你看,呃,我问的是这个 external 的 一个使用步骤是吧? external 使用步骤是吗?大家看它的使用步骤包括以下步骤,确定模型和 adapter 啊,找一下啊,确定模型和 adapter 它是做了一个总结规律啊,所以说文本文内容不一定完全一样啊, 配置参数进行微调,大致的步骤应该是这样的啊,有时候他说是会详细一点啊,看他具体怎么来总结,有时候总结的会非常详细,有的话会比较简单一些啊,但是这个结果至少还是准确的,就是没有回答错啊,就是 x n, 别回答成刚刚那个说是一个什么河流的什么什么,是吧,东西就 差的有点远了啊。所以说引入 rock 的 好处就是让它的专业性,准确性提高了啊。好,这个是我们只是从这个数据库里面去啊,这个还没有把这个锁隐藏到本地啊。大家看我这个里面刚生成的这个东西是我什么呢?是我这个之前生成好的啊,这个东西其实我可以删掉啊,可以删掉 它会自动生成啊,在这里面我们把这个这个代码给跑一下的话,它会去帮我们生成一个什么呢?一些锁影啊,就锁影,包括限量数据库都会生成。然后我们来看最后一个例子,就是我们引入了这个 crala 啊,上一个例子的话,看一下,我们还没有用到这个 crala 啊,就是有一个开源数据库啊,开源限量数据库,我来看一下啊, 就是这个浪漫 ingix 目前支持很多限量数据库啊,你看有个限量存储模块,这个里面支持的限量数据库非常多啊,我比较推荐大家做那个学习用的话,就是一个是 crama, 还有一个是 fastes 啊,用的比较多啊,也比较好用。 就是有一个这个,我们现在用的是这个 crama 啊,这个,这个是目前比较火的啊, crama 还有一个 fastes, 这个是 facebook 出的啊, 好,那这个大模型就是这个线上数据库的话,就是,首先,哎,咱们要把它存到线上数据库里面去,之后你得干嘛呢?你也去 p i p install 这个 crama 这个库啊,就是 crama, 它需要这么一个库啊,然后,哎,接下来干嘛呢?去获取到 crama 的 一个持久化的一个客户端,哎,说白了就是它通过这个客户端, 你可以指定一个 collection 的 一个名字,然后去创建啊,因为我们用的是本地的这个数据库啊,所以它会在当前目录下面建一个 crama 啊,它的一个文件夹,这个文件夹里面会什么呢?会包含 crama 的 一些数据库文件啊,一个 c collection 的 一个小数据库文件。所以说当咱们这个代码跑了,跑了之后,这个目录里面就会多一个 文件夹出来啊,就是用来存那个一些数据的啊,好,然后的话就是这一块就是还有一个叫向量存储的一些逻辑啊,就是用来存那个一些数据的啊,好,然后的话就是这一块就是还有一个叫向量存储的一些逻辑在这个里面啊,大家看啊, 这个我们啊,等下要把它的一个缩影的话,给它存到实体文件里面去啊,给大家看一下这个里面的一些东西啊,就是缩影存到有一个 storage 啊,会把它这里生成一个目录啊,给大家看一下它里面存的到底是啥啊? 好,然后在下面的话就是我们还需要一个 eminence 啊,就跟刚刚上面那个例子一样,我们用的是开源的这个 sentence transform。 下面的一个啊, 小的一个模型啊,也可以做 embeds 啊, embeds 就是 把文本转换成向量啊,然后把它设置为大局的这个 embedding 模型啊,然后包括这个大模型,我们用 deepsafe 本地部署的啊,然后还有这个大模型啊,这个要设置大局大模型啊,然后差异代码就在上面依旧是加载数据, 依旧是什么呢?啊?这里有点不一样的地方。是什么呢?要创建一个节点的一个 pass 节点是干嘛的呢?节点就是我一个大文件要拆分成多个文件,那小文件就是一个 node, 拆分成五个小文件,五个 node, 所以 说这里有个 node pass 干嘛的呢?就是我们分块啊,就创可五幺二,就每五幺二个字母,它就给你分成一个 node 啊,是相当于最终我们会拿到多个 node 啊,然后我们等下会把这个 node 可以 做一个打印啊,做一个打印,包括一个 base 的, 一个 node 的 一个情况啊, 好,完了之后咱们要干嘛呢?哎,要把它构建向量缩影啊,构建向量缩影,那这个向量缩影是什么样的呢?咱们调一个函数叫 storage context persist, 等下会说出一个目录啊,叫那个 storage, 那 在这个目录里面大家就可以看到什么呢?这个向量里面存在到底存在啥?是吧?好,然后我们再来问这个问题。哎,同样的它会结合这个,这次不一样啊,上次我们是内存啊,存到内存里面做剪索,那现在我们存到实体文件里面去做剪索了,这个就是一个差异,来跑一下, 其实效果是差不多的啊,只是跟他说明一点的是,之前是内存运算,现在是存到实体数据库里面去了,那其实大家还可以把它存后面上生产,也可以存到原数据库里面去,这个都是 ok 的 啊, 看大家的一个情况啊,如果你本地学习用,那你存到这个本地文件或者存到内存就可以了,那上生产的话,建议还是用原数据库啊。好,大家看这个已经在跑了啊,你看它这个里面等下就会生成一个目录啊,就是一些文件夹什么的啊, 这个的话,其实就是咱们要去做这个 rock 啊,做 rock 的 整个一个过程啊,然后这个里面无非就是什么呢?大家可能需要去哎,调用一些这个方法啊,就是做一些查询啊,什么什么的啊,就是有一个查询逻辑啊,然后,呃,整个一个流程的话,就大概是这个样子啊,这个就是你看最终生成出来的那个 storage, 大家看 就是我刚刚给大家删掉的那些文件啊,就是一些像数据库的一些缩影啊,都在这个里面啊,你看这个缩影坐标是吧?之前都给他看到看到过啊,然后你看这个结果也比较准确了啊,跟官方的话也会保持一致啊, 但这个跑完的话要一点时间啊,你看刚刚把那个框码跑完了啊,你看这个,这个跑出来了啊,大家看这数据是不是出来了啊?文那些项链坐标就这些东西啊,那都是有文本转换着来的。来,大家看最终结果啊,你看,请按照以下步骤安装依赖包,微调验证结果 我们看一下,这个跟这个咱们的专业知识库里面东西是不是比较匹配啊?来看一下找一下啊,微调步骤零,准备配置文件啊,当然这个他把它跳过了啊, 开始微调啊,微调这个有了是吧?开始微调有,然后下面应该是有个验证结果吧,验证结果 这里应该具有啊,这个下面就是验证结果啊,他只是做了一个总结规律啊,就他不会跟你这个文本一模一样,但是 他会参考里面的内容啊,相当于他可能会换一种回答方式,但是他的意思是一样的,这个大家需要知道啊,就他不会把里面的东西原样的给你,他是由大模型干嘛呢?帮你去深层一遍的,帮你去做一些 语义啊,是吧?一些顺序啊,包括一些回答方式啊,然后会给你做一些优化。那具体看你的提示词怎么写的啊?如果说你要使用芝士库里面原文的话,你可以在提示词里面加上一些逻辑,可以去控制这一些东西啊,这个是大家需要知道的啊。 ok, 那 么以上的话就是关于 deep seek 去结合了 my index 啊,再结合咱们这个 log 技术去解决大模型幻觉的一些问题啊,然后最后做个总结吧。啊,就是大模型幻觉问题其实也是治为了其广泛应用的一个挑战之一啊,因为它这个降低了大模型输出的一个可信度,在实际应用可能会引发一些严重后果, 特别是一些什么医疗的一些场景,这个是绝对不能错的啊,一旦错一个字可能都有严重后果,所以说,哎,我们要解决这个问题的话,需要大量去引入这个哎 vlog 的 一些技术,然后把这一块东西什么呢?哎, 给他优化的更加的什么完善啊,这个是一种高效灵活的一种方法啊,他可以解决啊见应该说要有效减少大模型的一些幻觉问题啊,但是在实际当中啊,比如说你要改改变这个模型的一些回答方式啊,那这个可要通过微调去实现啊,这个是咱们后面啊, 会给大家去讲一些微调的一些技术啊,他也是可以去解决大模型回答的一些风格啊,一些啊,他不太一样啊。

警告,本系列视频耗时两年制作,共计三千六百小时,一口气带你学完大模型 mom n d f 教程二零二六入门到精通实战,今天我们要学的是 mom n d f 框架, 大家好,那么在之前呢,给大家去分享了 rag, 也分享了我们去做 rag 的 一个框架,叫做 luncheon, 那 么这个 luncheon 呢?其实分享完之后呢,其实大家会感觉啊, luncheon 好 像并没有那么适合去做 luncheon, 或者说感觉好像它的功能有点单一,一些工程性的东西好像做不到,有很多功能需要我们自己去手写。 那么今天的话给大家去讲另外一个东西啊,讲这个 linux, 那 么这个框架呢,就是我们专门为这个 rack 量身定制的一个框架啊。那么学习本套课程呢,需要大家去掌握以下这几个点,第一个我们需要去知道 linux 的 一个使用方式,以及它各个模块怎么去用,再也就是我们通过 linux 怎么去做这些 rack 的 功能 啊。那么在这里的话,会给大家去提供的对应的四个网址哈,这四个网址分别是,第一个是我们对应的 api 地址, 比如我们在之后如果说在 launch 里面,呃,这个 lamingdesk 里面看到一些参数,或者说这些方法,你不懂什么意思啊,可以在这里面进行搜索,然后第二个是它的官网, 然后因为目前的话,我们其实呃留下今年的二六年,大部分的公司都是往 agent 的 进行发展,所以说呃, lamingdesk 它也是有团队,也是在往 agent 的 这一块进行转移,它也是推出了这个 lamingdesk 这个方向,但这个的话目前 肯定跟我们 lamingdesk 这个解析器啊,然后像我们 ethermail 这些, 好,那这个是它官网地址,然后其次呢是我们在 github 上面的项目地址啊,大家也可以去看读一读它的源码,对吧?然后其次呢还有一个就是那本身提供的一个 app 地址,这里也是可以去,因为我们,嗯, lambingdesk 它其实是有自己的开源社区啊,就有一些提供比较好的功能,你是可以在这里下载的, 比方说,哎,有一些,呃,其他的开发者提供一些比较好的功能,比较好的一些这个加载器在这里会进行上传,大家可以去搜,比方说我要去解析什么东西,比方说,唉, embedding 那 些东西啊,或者说提取器,比方说我要提取元素,提取哪些内容,对吧?可以在这个网址里面去找好, 介绍好它的地址之后呢,再给大家去讲一下这个 amnesis, 它到底是怎么来的哈,所以 amnesis 呢,它最开始的名字叫做 g tindisk, 那 么这个呢,其实是因为这个作者哈在 呃做这个事情呢,其实也是我们现在所讲的 rap, 最开始我们大模型出来之后,其实大模型就是我们一个文本吧,对吧?就是我们 gpt, gpt 啊,那时候的空点就是什么呢?他只能跟你进行对话,我没有办法去理解你的企业那些问题,或者说理解你的所有数据,那这个点的话,会导致我们大模型只能沉浸在自己的世界里面。 那这个作者呢?就是我们开发的这个 labdesk, 就是 为了去解决让 ai 去访问你的私有数据的这个问题啊,也就是我们现在所讲的 reg 啊。那么它的一个发展过程是什么样子的呢?首先第一个是核心人物啊, labdesk, 它的核心人物是我们这个流,然后它的背景是什么时候呢? 在全资投入拉宾带之前呢?杰瑞,尤其是在不是说什么特别有名的一个人,并不是,就是在硅谷做一个 ai 的 工程信息,所担任的是当前这一个初创公司的一个安全,对吧?然后做机器学习相关的一些内容,然后最开始是因为在 g p t 三点五爆发之后呢?杰瑞,他是发现这个模型非常强,但是没有办法去 对他进行一个企业的数据进行查询啊,那么为了去解决这个问题呢,他就开始左手写这个 imdesk, 那 最开始呢,就叫这个 gpt 的 indesk。 好, 那么这个这个是他的另外的一个创始人啊,在英文答也去做过的,这个我就不去做一个顾客介绍了,那么他的一个提交版本呢? 好,那么首先这个就是在二二二年的时候,十一月,其实你就发现时间非常的短啊,我们现在是二六年,哎,也也有四年了,但是在整个互联网行业来讲的话,四年时间不算特别长啊。好,然后现在流量是提交第一个 com 后台,然后这个内容呢,它就叫做 tintask, 然后主要的就是一个 treeintask。 好,然后在十二月呢,是加入了我们对应的迁入和一些限量的支持啊,那这个东西呢?因为我们在最开始它相当于只只有一些非常简单的功能啊,然后慢慢的比如说我们去做一些,哎,这个存储啊,做 log 啊,对吧?我们通过发现限量查询的时候会非常好,那么加了这个东西,然后在二三年呢,就是我们在就开始让很多人去关注到这个东西, 然后在二三年二月份呢是提供了一个平台,就这个 bob 的 一个地址,那这个的话相当于我们很有有 很多的作者你自己写的比较好的一些这种数据加载的方式,都可以上传到到这个平台。然后后面呢是因为我们在呃 gpt, 呃 gpt 的 这个 api 和这个插件发布之后呢,我们是更新了,它是更新了对应的 api 的 插件的集成,对来说我们就相当于它会更贴近于设计的初衷是给这个插件的 gpt 的。 那现在的话,当然说你可以支持各大类的模型啊,然后后面呢名字是改了一次啊,就最开始叫做 gpt 的 in desk, 后面改成了 laminate desk 啊,然后因为我们那个时候这个 mate 是 提供了这个 lam 的 一个 那么这个东西哈,那么一个模型哈,就那个开源的模型好。然后后面的话就是陆陆续续进行提高,提升我们的作业功能,然后按四年呢,慢慢的我们的所有的功能都趋于完善,以及说我们能够去做这种高 shift, 你 像怎么做代理啊?评估系统相当于就是一个包含了 red 所有全流程的一个框架,所以这个就是我们在 amdesk 的 一个发展的过程哈, 这个其实大家当做了解就可以了啊。然后现在也会有很多像我们阿姆的一个 pass 的 v i 的 版本,就是我们可以通过它来去解析我们的数据,这也非常好用,它会也会进行讲解。好,那么在讲这个内容之前呢,我首先让大家去理解,在之前的一个 re 的 流程来, 内容可能会有点多啊,那就跟上进度哈一起, 因为我这也就相当于带大家稍微过一下 red 的 流程,这个我就不去过多的强调了啊。 red 其实就分为几个步骤啊,我们说剪剪缩增强生成嘛,对吧?那首先我们是要去处理文档,处理文档好,拿到文档处理好之后呢,我们需要转换成向量,转换向量,转换成向量数据库, 接着就是我们做剪损,就是通过我们的问题在向量数据库里面剪损最相关的,然后是合成,或者说我们进中间 分支填充的问题拼接回答模型,然后是回答 好,那这个就是我们对应的 red 的 一个基本的流程啊,我就大概给它去列出一下。那么这个流程的话,在这个 let me test 里面它其实也是做了分流的,所以说我们要对它的基本的核心架构进行一个清晰认识, 首先它是可以分成这几个,第一个是我们我把它归类的叫数据层啊,我们在数据层里面我们首先会拿到各种各样的数据信息,比方说啊, pdf 啊,文档啊,像这个网页啊,或者说数据库的数据。然后首先我们需要把数据进行一个分片, 把数据进行切分成,在 numbers 里面,它就会节点切分成 node, 读取文档,文档切分,然后经过我们这个文本清洗,然后再次向一些原数据提取,就是我们在后面也会讲啊,然后把这个数据 分辨好之后,我们需要进行存储。存储,我们在之前可能,哎给大家讲这个缓存的时候,给它去存到了对应的内存库,对吧?那这个存储呢?在这个,呃,这个,嗯,这个,嗯。 memex 里面它做的事情是存在了这个 screen, 呃,这个 screen 里面的 它的存储界面相当于是一个存储系统,这个系统里面有三个东西,你可以存原文档,我,我就给他确定就三个东西啊,存储系统里面有原文档、存项链,以及说存锁影。接着是把我们对应数据相当于处理好之后的 note 存在对应的多瑞金里面。好,紧接着我们需要通过存储内容去创建一个锁影, 这个数据怎么去存?存?什么结构?就是我们,哎,比方说存复制文档或者什么其他的文档,或者是这是图谱的缩影,对吧?那这个存什么类结构?然后紧接着就是我们所解锁对应的数据信息 通过什么方式进行解锁?比方说,哎,我可以通过限量解锁、关键词解锁、混合解锁、什么路由解锁,就是我怎么去通过用户题的问题去匹配限量数据库里面的东西。好, 然后紧接着是后处理,后处理,比如说我解锁到的数据信息,那有可能,哎,评分不是特别高,效果不是特别好。那我可能需要对这个解锁到的这个召回的文档进行重排,进行过滤,进行去重,然后再进行合并,那这叫后处理。然后其次呢,就我们还会有一个查询引擎,这个查询引擎我可以先暂时忽略,先不用管它,然后紧接着就是查询好的数据进行输出, 查询好数据跟大模型结合之后进行回复。那这个是我们在拉面,嗯,这个拉面 desk 里面它比较核心的一些点啊,那么我们一直也是围绕这几个点来进行讲解数据 怎么处理,然后怎么文档分割,再就是存储缩影剪除,以及我们对应的这个输出会集集中在这几个点里面后处理和这个查询这一块可能会放在后面的高级来进行讲解。好。

大家好,我是小木头,今天我们继续 lawma index 框架的学习,从今天开始,我们会进入 lawma index 框架的核心组件或模块的学习。 今天是第一个逐渐的学习,我们来了解什么是数据连接器,也就是 data connectors。 在 roman index 官方文档呢,对这部分已经有非常详细的介绍,那么我在这里还是将其整理为了一份入门课程,开源在了我的代码仓库。首先我们来看看什么是数据连接器。在 r g 的业务场景中,数据加载是非常重要的一个环节, roman index 呢,定义了数据连接器的接口,并提供了一系列的实现来支持不同的数据源或数据格式的数据加载。 在这里呢,我们参考 marble index 框架的文档,罗列了一系列它所支持的数据读取器和加载器。当然啦,不仅局限于这一些。 接下来呢,要介绍的就是 lama hop。 lama hop 是一个网站,也是一个开源仓库,他提供了一系列可以轻松集成到任何 lama index 应用中的数据连接器。在数据连接器的定义上,我们可以来到 lama hop。 在这里呢,可以看到一系列的插件,如果我们选择 data loaders 这个过滤器,能就能够看到所有它所支持的数据连接器。它对不同的数据类型,数据格式都有支持,比如 comfort, 这个连接器可以帮助我们从 conference page 来加载内容。使用方式呢,我们可以滑动到页面下方看到视力代码。这里呢,告诉我们如何使用不同的加载器或者数据连接器,他会有一定小小的差异, 差异主要局限在了嗯访问方式上,比如某些连接器是需要使用 token 或者 api key, 这就是 long hop。 我们回到开元课程这里,接下来介绍两种典型的数据连接器使用方式, 一种呢是使用老马 index 框架提供的内置的数据连接器,开发者是不需要从老马 hop 加载就可以直接使用,像我们下面这个代码所演示的如何加载或读取网页数据,可以使用 生 probe page reader 来加载,只有一份网页加载出一个文档列表 documents。 那另一种方式呢,就是刚才我们所介绍 lomb hop 所开源的一系列数据连接器,我们如何使用它呢?可以看到在视力代码中给大家一个视力介绍, 通过使用 download loader 这个函数去加载一个 loma hop 上可以是开源的数据连接器,比如 mock down reader, 这个数据连接器就是从 m d 文件或者是 mock down 语法的文件当中去加载数据,得到一个文档列表 还是非常简单的。那在这个 ce 大码中所引用的这个 markdown reader 呢?来自 lamahub 的这个链接,我们点击可以来到它的详细的 介绍页面,除了介绍还会有视力代码,因此呢使用起来还是非常友好的。 那我们现在回到开元课程这里除了对这些的介绍呢,我们接下来可以点击这个链接,来到一份 pasenobok, 这是一份完整的实力代码,演示了如何使用这两种不同的方式来加载数据,我们来看一下这份实力。 在这里呢,大家安装的其实只需要一个 lumber index 框架的拍成包就够了,我们会用到 open ai 的模型,所以呢会使用 open ai 的 api key, 大家也可以根据我们在上一课中做的介绍自定义配置来选择使用不同大圆模型。有兴趣的同学当然请点击视频上方链接回到上一期视频来了解 如何在 lome index 应用中指定特定的模型。那接下来我们看看。首先如何使用 lome index 框架内置的数据连接器,在这里呢,我会加载我开园的一份 launchen 的极简入门课程 w t f launchen 这个课程呢,开源在了我的代码仓库,我会将所有相关的链接呢都放到视频描述中,有兴趣同学呢可以到描述中取用。这个课程呢,也发布在了 wtf 学院的官方网站,我也会将 wtf 学院的链接放在视频的描述中。 这是一个 web 三的开源大学,大家有兴趣可以去 w t u 学院来了解学习大量的开源的 web 三课程,那我们继续这部分内容。在这里可以看到这个 w t 五的 lanchen。 这个极简入门课程呢,分为了十课,每一课都会有一份简明的文字版本的课程,配合一个 pastinobook 供大家来执行相关的代码,来了解如何使用 lanchen 的一些核心的功能和组件。 那当然了,我们这里并不是介绍蓝犬,那我们回到这份代码,拍成 notebook 在这里呢,克隆这个代码仓库,这个仓库里面就有一系列的 m d 文件,也就是 mark down 语法的文本文件。 我们使用 lama index 框架内置的 simple directory reader 这个读取器,这个数据连接器会基于一个文件夹加载文件。那么我们还可以使用 require exts extensions 这个参数来指定我们加载哪些后缀的文件,我们只希望加载这个文件夹中所有的 md 文件,对于拍摄 notebook 我们可以忽略,那么就在这里指定这个 文件扩展名 dot m d。 基于这种方式就可以加载文件了。通过这个读取器的 load data 函数调用得到一个文档列表,我们来执行一下,我这里已经克隆过了,所以我就没有再执行这一步代码。 在这里可以先把这个文档打印出来,大家可以看一下内容。这里呢,应该是把我所有的这个 m d 文件内容都加载了, 大家可以简单的浏览一下。那接下来要做的事情呢,就是基于文档来构建一个向量存储的锁引, 这个也在过去的视频分享中已经有所介绍,有兴趣同学当然请点击视频上方链接,回到当时的介绍,如何使用 vector store index 来构建锁影。 我们继续锁引来创建一个查询引擎。接下来会提问什么是 wtf launcher, 可以点击以后来看一下执行的结果。 要注意的是在这里呢,我是设置了 open ai 的 api key, 因此呢,默认的情况下它会用到 open ai 的模型, 还是刚才我们介绍的,有兴趣的同学可以自己尝试指定不同的模型。这里介绍了 wtf lanchen 是一个什么样的课程,帮助初学者快速上手,这也是我当时写这个课程的初衷。在这个 这里头呢,我还特别指定了 lantern 版本,零点零点二三五,大家有兴趣可以在这里看到这个教程呢。固定了版本,这是为了避免在版本迭代的快速的迭代中导致我们的实体代码失效。 因此呢,这个回答呢,就是基于刚才我们加载的文档。那这个接下来我们尝试提问 wtf lantern 教程目的是什么?我这里就不执行了,有兴趣同学可以尝试一下。接下这个视力呢,我们会加载同样的 m d 文件,区别在于我们从这个 lama hop 下载一个数据连接器。连接器呢,就是刚才我们分享的 mock down reader, 我们可以执行一下这部分代码。我们通过这个 macaron reader 去加载一个目录,这个目录中我们指定我们指定的是 一个文件,但我们要指定一个目录。有兴趣同学可以尝试在这里指定整个目录来看看它的效果。我们指定的是单一文件,就是这个项目下的跟目录底下的 read me。 这个 read me 呢,就仅包含了我们现在所看到这这部分内容。 那接下来就可以同样创建一个相当存储,所以创建查询引擎并提问,我们也可以在这里执行一下。 我们来问问 lantern 极简入门教程用什么框架版本,他告诉我们用的是零点零点二三五。这就是我们如何使用 lome index 框架所提供的数据连接器有哪些不同的方式来加载他们。我们可以使用框架内置的,也可以通过 lomer hop 加载开源 元的数据连接器。有兴趣同学呢,当然也可以创建开发自己的连接器,并贡献到老马 hop。 这也是一个很好的与社区与框架,与整个生态互动,一起大家成长,一起发展的一个很好的方式。 好吧,那我想今天的分享应该就这些内容了,也比较简单明了,大家一起在自己的开发环境或者在运动环境跑一跑,应该就了解数据连接器的使用了,更重要的是寻找合适自己的连接器来构建自己的应用或满足自己的需求。 那咱们今天分享就到这里吧,感兴趣同学呢,请持续关注我们频道,我们还会继续推出后续的 lama index 框架的入门课程内容。 好了,那咱们就到这里感谢同学,请关注我们频道,也给咱们来一波三连吧,那咱们就下次再见,同学们,拜拜!

大家好,我是小木头,今天我们继续 lauma index 入门系列课程的分享。今天呢,来到第三课,我们学习一下 lauma index 中所提供的个性化配置。 在上一讲中,我们了解了什么是 r e g, 那老马 index 对 r e g 的整个过程是提供了全面的配置方面的支持的,允许开发者能够对整个过程都进行个性化的设置。那常见的配置场景有哪些呢?它包含了自定义文档方块的大小。 自定义向量存储的解决方案,比如使用 chroma 还是使用 picom 还是使用其他的向量存储。同时呢,也可以自定义检索,自定义检索最常见的是在相似性查询中 去决定或配置期望返回的相似文档的数量。那么 index 也允许指定大圆模型,默认的最常用的我想应该就是 oppo ai 了。 当然,我们并不仅限 oppo ai, roman index 也允许我们在 r g 的过程中指定其他模型,比如 anthropic 等等。 对于响应,我们也可以指定响应的模式。 lome index 提供了一系列不同类型的响应模式,今天呢,我们只介绍如何指定响应模式。在后续的课程中,我们会学习具体 lome index 支持哪些响应模式,每种响应模式有什么不同? 最后呢,我们还可以指定流式响应,这是在一些应用中经常会使用的一种响应方式。流式响应帮助 注入用户提能够获得更好的阅读体验。要注意的是,个性化配置呢, lawma index 提供了一个类叫 service context 来提供支持,当然了,并不是所有的配置都是通过 service in context, 我们接下来就通过一些视力代码来了解这些不同的配置场景, low minus 是如何实现的? 首先来看看自定义文档,它是通过 service contacts 类的 from default 函数来实现,通过指定 chunk size 参数来约定文档分块的时候的文档分块大小。 关于自定义箱的存储呢,是通过另外一个类叫 storage context 来指定。 storage context 是指定存储的上下文, 在这里呢非常类似。通过 from default 函数来构建一个存储上下文,这里呢可以制定一个向量存储思维代码,里面用到了 chroma d b, 在这里要使用 chroma d b 的话,大家需要安装一下 chroma d b 的拍成包。 那在这里呢,可以看到这个 chroma 的客户端创建了一个集合叫 quick start, 那创建一个 chroma vector stone, 就是相等存储,基于它来构建一个存储上下文,也就是 storage context。 这些只是一些视力代码片段,帮助我们理解如何来自定义配置,那在最后我们会有一个完整的视力,一个拍成 notebook 来分享如何将这些配置应用到一个具体的应用场景中。下一个配置场景是自定义检索,在这自定 一检索中,我们可以通过参数来指定,比如查询引擎 carry engine 在检索时请求的相似文档数。在下面这个视力中可以看到 as carry engine 这个函数可以 实力化或得到一个查询引擎,在获取查询引擎的时候,通过 similarly top k 参数指定。在相似性查询的时候,我们期望得到或检索多少个文档块,那这里指定的是五, 下一个场景是指定大源模型,指定大源模型呢,也使用 service context, 就是服务的上下文, 在这里通过 l l m 参数来指定。我们呢指定的是 open ai, 这也是在代码演示中最方便访问的大模型的供应商。如果大家有 and stropic 等模型的访问权限,可以使使用不同的模型。接下来是指定响应模式,响应模式和 自定检索或相似,相似文档数参数呢是相同的,他都在查询引擎的构件时来指定,也就是在 as curry engine 函数中通过 response mode 这个参数指定。在这里我们用了 tree summarize 吹 summarize 的意思呢,是像树状一样的去做总结,从原理上来讲,它是基于一系列文档进行摘药,那摘药它是分级,就像这像树一样,一级一级的从叶子到根,一级一级做摘药, 多个文档进行分组的栽要栽要的结果呢,可能会有,只会有多份在地规的 不断的进行摘药,最终得到响应的结果,这就是 tree summarize 的大致工作原理。最后是指定流失响应,流失响应呢,同样也是在构建查询引擎的时候,通过 stream 参数指定,在这里将 stream 设为处,就表示 查询引擎会以流失的方式来响应或返回。嗯,大于模型的 response。 最后呢,来看一个完整的实力,在这实力当中就会配置刚才我们介绍到的几这些配置项, 对文档分块五百的大小,用 chroma d b 做销量存储等等。那我们接下来就看看这个拍摄 notebook。 在这里呢,我已经准备了一些必要的环境,包括了安装拍摄包,因为我们会用到 chroma d b, 会用到 open ai, 所以除了 lama index 安装还需要 chromadb 和 open ai。 接下来呢,下载了一份视力的文本文件,这个呢是关于 program 的一篇文章,那这个文件呢,就可以作为后面视力代码中 的原文件数据源。这个势力基础就是在第一课中引用或使用的那个最简单的 luma index 应用。 接下来会配置一下 open a 的 a p i k。 那我们来看看。第一部分是做分块的配置。制定分块, 因为大圆模型呢,也是在 service context 中指定,那在这里我们就一并指定了,在这里生成的一个 service context 就服务的上下文呢,会指定分 块,大小是五百。模型使用的是 open ai。 接下来做向量存储的设置或配置。向量存储配置,刚才我们学习了是通过 storage context 来指定,那在这里就构建一个 chroma d b 的向量存储,然后有基于它来创建一个存储的上下文 storage context。 这个 storage context 和刚才构建的 service context 会被我们用来在缩影文档的时候注入给这个 vector store index 类。大家可以看到,在这里当我们使用 vector store index 它的 from document 函数基于文档来创建缩影的时候,我们还指定 service context 和 storage context 这两个参数。基于 这种方式就帮助我们自定义了缩影文档的这个过程,在这过程当中就会用到 service context 和 storage context 中我们自定义的配置,对文档进行为五百个字符进行分块存储呢,使用的是 chroma 单元模型呢,用的是 open ai。 最后就是指定响应模式和启用流失响应,响应模式呢,正如我们刚才介绍的和流失响应的设置都是在 as carry in 整函数调用的时候通过参数传递,那我们现在这样传递 就完成了整个 r a g 过程的自定义配置。接下来我们来简单的运行一下这些代码,构建 service context, 构建一个, 这是因为刚才可以看到 quick start 这个 collection 已经存在了,我们可以将其另外命个名,因为我在这个呃云环境当中已经执行过这部分,那我们可以改个名字叫 example, 这样就就在 chroma d b 当中创建一个新的合集, 那接下来就是做文档的缩影,在缩影的过程中就会将刚才我们自定义的配置应用其中, 当然了这里我们并不拥有去深入的研究在生成的所有数据当中,究竟这些参数,这些配置是如何生效的,这个呢,有兴趣同学我们 我们以后可以在呃原码解读,或者是在调试环境调试的时候再来进一步的去查看这些细节方面的信呃内容。 最后呢就指定响应模式和启用流失响应了,在这个代码执行中,我们会看到他会将响应通过流失打印出来,那期望的结果呢,是在这里能够一段一段一段的随着模型的响应,不断的看到 文字显示在屏幕上,那这正是我们期望的流失响应的效果。好了,那这就是我们今天所分享内容,内容非常的简单直白,是对 lama index 提供的个性化配置做了比较粗略精简的一个介绍。 这个配置呢,主要针对 rg 的过程做的支持,有兴趣同学呢,也可以将这部分的功能或特性应用到自己已有的一些 ai 应用中,看看它效果如何。好吧,那今天分享就到这里,有兴趣同学呢请继续关注我们 频道,我们的内容,我们的课程都会以链接形式附在视频的描述中,有兴趣同学就到描述中取用吧。那咱们就下次分享,再见同学们,拜拜!

本堂课的重点,一, lambing index 介绍二, lambing index 实现 rap 三、 lambing index 模型命令四,向量模型使用时长三十三分钟,完整的大模型资料已经打包好了,评论区或者弹幕留下大模型直接打包带走。今天呢给大家去讲另外一个东西,讲这个 lambing desk, 那么这个框架就是我们专门为这个 rek 量身定制的一个框架。那么学习本套课程需要大家去掌握以下这几个点,第一个我们需要去知道 amazon dash 的 一个使用方式,以及它各个模块怎么去用,再也就是我们通过 amazon dash 怎么去做这些 rek 的 功能。 好在这里会给大家去提供的对应的四个网址,这四个网址分别是,第一个是我们对应的 api 地址, 比如我们在之后如果说在 nelson 里面这个 laming desk 里面看到一些参数,或者说这些方法你不懂什么意思,可以在这里面进行搜索。第二个是它的官网,因为目前我们其实 留下今年的二六年,大部分的公司都是往 a 政的进行发展,所以说 laming desk 它也是有团队,也是在往 a 政的这一块进行转移,它也是推出 laming desk 这个框架,但这个目前 肯定跟我们 numgraph 还是有差距的,像我们对应的 num 的 一个 pass 的 一个解析器,像我们 apple mac list 这些 啊,那这个是它官网地址,其次是我们在 github 上面的项目地址,大家也可以去看读一读它的源码。其次还有一个就是 num 本身提供的一个 help 地址,这里也是可以去,因为我们嗯 emagine 它其实是有自己的开源社区,有一些提供比较好的功能,你是可以在这里下载的。 比方说有一些其他的开发者提供一些比较好的功能,比较好的一些这个加载器在这里会进行上传,大家可以去搜,比方说我要去解析什么东西,比方说 alien 那 些东西,或者说提取器,比方说我要提取原始数据,提取哪些内容,可以在这个网址里面去找 好,介绍好它的地址之后,再给大家去讲一下这个 amazonix 它到底是怎么来的,所以 amazonix 它最开始的名字叫做 g tindix, 那 么这个其实是因为这个作者在 做这个事情,其实也是我们现在所讲的 reg。 最开始我们大模型出来之后,其实大模型就是我们一个文本,就是我们 gpt, gpt 啊,那个时候痛点就是什么,它只能跟你进行对话,我没有办法去理解你的企业的一些问题,或者说理解你的是有数据, 那这个点会导致我们大模型只能沉浸在自己的世界里面。那这个作者就是我们开发的这个 let me decide, 就是 为了去解决让 ai 去访问你的是有数据的这个问题,也就是我们现在所讲的 reg 好。那么它的一个发展过程是什么样子的?首先第一个是核心人物 amdisk, 它的核心人物是我们这位刘的背景是什么时候呢? 在全资投入 amdisk 之前,这位刘其实是在不是说什么特别有名的一个人,并不是在硅谷做一个 ai 的 工程信息,所担任的是当前这一个初创公司的一个安全 做机器学习相关的一些内容,最开始是因为在 g p t。 三点五爆发之后,杰瑞他是发现这个模型非常强,但是没有办法去对他进行一个企业的数据进行查询,那么为了去解决这个问题,他就开始左手写这个 i m desk, 那 最开始就叫这个 g p t 的 in desk 啊, 这个是它的另外的一个创始人在英特达也去做过它,这个我就不去做一个顾客介绍了,它的一个提交版本。好,首先在二二二年的时候,十一月其实你会发现时间非常的短,我们现在是二六年, 也有四年了,但是在整个互联网行业来讲,四年时间不算特别长啊。接流量是提交第一个 commit 这个内容,它就叫做 tntdesk, 主要的就是一个 treedesk, 好在十二月是加入了我们对应的迁入和一些限量的支持。那这个东西因为我们在最开始它相当于只有一些非常简单的功能,慢慢的比方说我们要去做一些存储,做 reig, 我 们通过发现限量查询的时候会非常好。加了这个东西,在 i 三年我们就开始 让很多人去关注到这个东西啊。在二三年二月份是提供了一个平台 number have 的 一个地址,那相当于我们很有很多的作者你自己写的比较好的一些这种术语加载的方式都可以上传到到这个平台。 后面是因为我们在 gpt 的 api 和插件发布之后,我们是它是更新了对应的 api 的 插件的集成来说,我们就相当于它会更贴近于设计的初衷是给这个菜的 gpt 的, 那现在当然说你可以支持各大类的模型,后面名字是改了一次,就最开始叫做 g p t 的 in desk, 后面改成了 lame desk 啊,因为我们那个时候 mate 是 提供了 lame 的 一个东西啊, lame 的 一个模型就开源的模型啊,后面陆续进行提高,提升我们的作业功能,按四年慢慢地 我们的所有的功能都趋于完善,以及说我们能够去做这种高级 flag, 你 像什么多代理屏布系统,相当于就是一个包含了 flag 所有全流程的一个框架,所以这个就是我们在 amdisk 的 一个发展的过程,这个其实大家当做了解就可以了,现在也会有很多在我们 amdisk 的 一个 past 的 v i 的 版本,我们可以通过它来去解析我们的数据,这个也非常好用,它会说也会进行讲解。好在讲这个内容之前,我首先让大家去理解,在之前的一个 rek 的 流程,内容可能会有点多啊,就跟上进度, 因为我这也就相当于带大家稍微过一下 rap 的 流程,这个我就不去过多的强调了啊。 rap 其实就分为几个步骤啊,我们说剪、剪辑增强生成,首先我们是要去处理文档,处理文档,拿到文档处理好之后呢,我们需要先来,然后再下载数据库,接着我们做剪辑, 就是这通过我们的问题在向量数据库里面检测最相关的,然后是和存,我说我们进行拼接是检测的问题,拼接有大模型 是回答,好,那这个就是我们对应的 red 的 一个基本的流程,我就大概给大家去列出一下这个流程,在这个 let's 里面它其实也是做了分流的,所以说我们要对它的基本的核心架构进行一个清晰的认识。 首先它是会分成这几个,第一个是我把它规范的叫数据层,在数据层里面我们首先会拿到各种各样的数据信息,比方说 pdf 文档,像这个网页或者说数据库的数据,首先我们需要把数据进行一个分片, 把数据进行切分成,在 numbers 里面它就会节点切分成 node 读取文档,文档切分,经过我们对的文本清洗,再次向一些原数据提取。我们在后面也会讲把对应的数据分别好之后, 我们需要进行存储存储,我们在之前可能给大家讲当当称的时候,给他去存到了对应的项链数据库,那这个存储在阿明代斯里面,他做的事情是存在的这个这个 storage 机里面的, 他的 storage 机里面相当于是一个存储系统,这个系统里面有三个东西,你可以存原文档,我,我就给他去列出三个东西,存储系统里面有原文档、存项链,以及说存锁影。 接着是把我们对应数据相当于处理好之后的 node 存在对应的 directory 里面。好,紧接着我们需要通过存储内容去创建一个缩影,这个数据怎么去存?存什么结构?我们比方说存复制文档或者什么其他的文档,或者说知识图谱的缩影,那这个存什么类结构?紧接着 就是我们所解锁对应的数据信息通过什么方式进行解锁,比方说我可以通过向量解锁、关键词解锁、混合解锁、什么路由解锁,就是我怎么去通过用户题的问题去匹配向量数据库里面的东西。好 解决的是后处理,比方说我解锁到的数据信息,他有可能评分不是特别高,效果不是特别好,那我可能需要对解锁到的导回的文档进行过滤,进行去重,再进行合并,那这个叫后处理。 其实我们还会有一个查询引擎,这个查询引擎我可以先暂时忽略,先不用管它,紧接着就是查询好的数据进行输出, 查询好的数据跟大模型结合之后进行回复,那这个是我们在 bug desk 里面它比较核心的一些点,那么我们其实也是围绕这几个点来进行讲解数据 怎么处理,然后怎么文档分割,再就是存储、缩影、剪辑以及我们对应的 这个输出会集中在这几个点里面。好,这里单纯是让他去进行一个了解,有这么几个核心的点,接着我们怎么去用它,我们需要去下载一个模块,在拼音输入就可以了。好,下载好之后,因为我这里本身是已经下载好的,下载好之后你们会发现在拉宾代词里面他会有一些捆绑包, 这个包也给他去介绍一下,他默认的话会捆绑当前这几个数学。首先第一个我们会看到有一个括 叫做拉米代斯杠阔,还会有对应的,哎,其他的是我自己手动安装好的,默认的会有这几个大模型项链,以及还有个 red, 其他的都是我后面去安装的,这些都是我后面后续安装的,默认的安装好之后会有这几个,那么这些包分别对应的是什么呢?首先 第一个 linux 库,这个它是我们对应的核心,我们的核心模块像一些抽象成像,一些文档节点,解锁器呀,问题这个引擎还像查询引擎,这些都是在库里面。其次是我们在 linux 里面 的模型里面会有一个 open ai, 它只有这一个,其他的也是我下载的,相当于它默认是集成的这个 open ai, 其他的是没有的。 接的是我们对应的 embedding 里面也会有一个 open ai, 相当于它也集成了这个 open ai 的 向量模型,但其他的模型你需要手动下载 才能原声就支持这个 open ai。 好, 其实我们还会有一个 red, 里面会有一个 feel 好, 这个东西是干嘛?这个是我们默认 用来加载一些文件的,比方说你要提取 pdf, 提取什么 macd, 提取 csv, 它是有默认是提取对应的这个 ipad, 还有像我们对应的我们其他的一些语法, macdown 这些都在这里,将它默认式提供的这些功能。好。那了解这些下载好之后,我们先来看啊怎么去通过这个 app 实现一个最简单的一个 red 这样方式。首先第一个加载自己的模型,我先把核心代码给大家看一下, 这个先不需要大家去了解,我先把这个核心代码给大家去介绍一下最基本的实现方式,实现过程代码先不用去管,不用去纠结,后面都会一步给大家去进行裁剪的。首先导入一些模块啊,从 numbing desk 里面对应的核心模块当中导入了几个东西,一个是提示时模板, 然后是配置,接着是我们读取对应的文档啊,项链存储项链所这个解锁器的项链锁影,还有我们对应的这个是需要下载的,需要通过 p i p 下载一下,我用的是阿里的 这个模型,所以说需要下载,下载的命令就说这个文档不提供,因为是我后面需要授课的,这个是下载方式,还下载我们对应的下载本地的项链模型。好,第一个我们需要去配置,但是我要去读取对应的大模型,然后加载本地的项链模型。 准备一个提示词,提示词的作用,一个很 rap 的 一个题,很简单的一个 rap 提示词,拿到提示词内容,紧接着是我们会去读取对应的文档, 读取文档内容读好之后,这个文档内容给大家看一下在哪里。首先这个内容需要大家对这个前置的 rap 有 一定的了解,我就没有去再给大家去介绍 rap 是 什么这个东西了。好,那么读取当前的这个文档信息,这个后面都会想去讲的加载对应的文档信息, 我这里会有一个 type c 的 介绍,会有这些东西好熟悉。好之后把对应的读取到的文档构建我们对应的缩影。这个方法记住它会自动把当前这个文档进行分割, 分割成小块,然后自动的存起来,记住它会自动存,会有一个默认的存储地方,具体存哪里我们后面会讲, 你不需要去操心他怎么分割的,怎么去转换成向量的。哎,又是怎么去把对应的向量转,这个存在向量数据库怎么去做减数的,不需要考虑这一行代码,他自己帮你做好了。 好,紧接着是创建我们对应的引擎啊,问题引擎所做的事情,首先我要去匹配什么东西,匹配几个,比方说我根据问题我要匹配五个数据,再就是提示词,这个是我们上面提示啊。 接着是我们进提问的时候,通过我们所创建的就是我们之前所讲的解锁解锁器,提问之后得到回答, 好给大家看一下对应的数据。我这个提问 deepsea 什么时候遭受了攻击,那这个问题肯定是我们自己的,要根据我自己的文档里面进行回答的。 先给大家看一下效果,单纯看拉米代斯的一个核心代码,它其实只有这些读取文档,把文档进行一个构建缩影,然后创建一个问题引擎,然后进行提问,就这么几个步骤,你发现会比之前的要简单的多, 相当于这里面我们怎么分割的,怎么去处理的,不需要管,先把这个过程给它讲清楚啊,这个理解就可以了,后面我们会详细的去讲怎么去做,这些东西 做的有点慢,我的文件哦不是在这里,你还是在上一层好,都取对应的文档,所以这个转换成向量,它会默认自动去转,有点慢我们就让它加载。好吧,我们继续往下面看。好,接下来我会带大家去从几个步骤带大家去看这个 ipad 课。 首先第一个我们可以去给大家去讲 lambdas 这个模型怎么去进行调用,其次是我们对应的提示词模板,就我们怎么去构建自己的提示词,其次这是处理对应自己的文档,再有就是我们对应的文,这个文件的分割器是我们文档, 它会有个专门的分割器,紧接着是我们对应的存储系统,就我们的数据怎么存,再就是构建解锁器,接着是响应合成器,再就是我们对应的记忆功能,会从这么几个点来去介绍这个 numisk。 好, 我们再看对应的数据, numisk 是 在什么时候遭受大规模的, 看一下是我们的数据解锁到的内容,可能这个就是我们实现一个简单的一个 rack 系统。好,好,在 大概了解之后呢,我们接着来深挖它里面的点,因为你要做一个 reig, 它其实核心的点非常简单,你一个 reig 做出来其实 so easy, 没有任何的难度啊,但是你要好用并且效果比较好的,这种 reig 就 比较复杂,所以我们不可能说我就 拿这一个东西我就能够满足的一个需求,但是说你的精度不需要特别高,那完全没问题,那我们要的一般都是精度比较高的。接下来看,首先第一个我们先来看对应在 lambdas 里面模型怎么去调用。首先第一个我们先来看默认的 默认调用,默认的模块就是我们刚刚所讲的捆绑的一个包,之后就安装了 lambdas, 之后它会有个默认的叫做 lambdas, 从大模型里面它对应的 open ai 会有一个 open ai。 好,这个它其实就是我们专门为官方的 open ai 所设计的使用的方式,你就直接指定对应的模型再进行提问, 但前提是什么?你需要去配置好你对应,比方说你用的是有可以用这个 open ai, 你 也有对应的 k, 而对应的 base 幺幺 k 就 可以了,你需要把 k 给它拿过来。 api k 这个使用方式非常简单,就这样,但我们因为在国内就很多同学基本上是没怎么去访问过的,那如果说我想用其他的,我在国内我现在用的是千问的,或者说我用的是什么字谱的,或者说什么其他的模型门芯这一些, 那它怎么去用?它还给我们提供了另外一种这样的方式,叫做 openai link, 这个就是对于模型的一个清亮封装,提供了兼容其他的一个 api, 但这个 api 我 个人觉得不是特别好用,相当于它就是把所有其他的厂商的 api 都集中在一块 安装的方式,这个是安装的命令,安装好之后它会放在哪里?我给大家先拆解一下它的一个下载的地址啊,那名尺是框架的名字,它要放在哪里?放在 lms 里面再给它看,先把代码给它拿过来。首先是 当前这个模块在哪里啊?在 sim 里面,模块的下载一定要注意一下它的用杠到底指的是什么?好,它指的是什么? ems 是 我们当前这个框架杠, lms 这个是前面这一块杠就是下面这一层的 lms。 再就是 open ai, open ai 里面的 link, open ai 呢?有没有 link? link, 我 直接定位 open ai link 在 这一块 我刚才找错了, open link, 这,这也就说我们在使用的时候记住杠 a 般指的是文件夹,或者说它的文件名这一块,所以你下次再下载的时候,它不是说直接去直接下载,它可能没有这些包,你需要自己手动去下载它配合的方式怎么去用呢?第一个, 这个是我加载本地的 e、 n、 v 的 文件,在这个其次,第一个你要调用的模型是什么?就比如说我调用的是千问三点五 plus, 其实对应的 k 和被需要当前这个模型是否是一个聊天模型? 好,我们看一下这个,我们如果说调用其他的模型怎么去使用?这里会有点慢,因为这个是在线的,我这里还挂了东西的。 好,那这个是在线的方式,在线怎么去调用?那如果说我本地有来说北川这边我有一个欧拉,然后我在欧拉玛里面跑了一个模型,打开一下,那这个是在线的调用,我们紧接着是需要调用离线的 哪些模型调用它也是提供了比方说 link or play 的 link, 这个我不推荐大家去用,但是要知道它怎么去它这样的方式。 play link。 第一个模型的名字,我在本地是有这个有一个七 b 的 模型,其实 k 这个就是本地可以随便填的,我连接的地址是哪里?好,准备一记点军训, 这是我本地跑的一个纤维二点五的七 b 的 一个模型,有点慢,有点卡,我们使用的方式就这样子,如果说要使用本地或这种方式进行调用, 可以了,指定对应的 a 这个 base 地址就可以了,我这估计我那么在更新了这种为什么不推荐大家去用这种方式去调用这个模型?虽然说他提供了建议, 因为这种调可能会有些什么问题啊,因为我不是他相当于是一个统一的接口,我不管调用什么模型,他都是这一个,比方说我调用千位也是这一套,我又调用这个欧拉曼也是这一套,制普也是这一套。每一个模型的厂商他其实都会有一些区别, 比方说我们千问跟其他模型它一定会有一些本质上的区别,那么这里如果说我想调用对应的厂商的,我应该怎么去做呢?这个地址,因为我们其实每个厂商都会有 sdk 的, 千问也会有 sdk, 或者说我们的智普这些都会有自己的 sdk, 我不可能说按照你的要求分配啊。在 l、 m s 里面,它提供了我们各个模型的厂商,比方说我要用这个 jaffe 的, 或者说我们对应的像 deepsea 的, 像,比方说我用的是阿里的,像我们或者说其他的模型。这也就是针对于你不同的厂商,这个拉米代斯的这个团队在我们根据这个厂商所提供的 s t、 k 专门定制的 这篇,所以它会定制会更好一些,所以说我们在使用的时候最好是用这种方式,就用它定制的,像我们中国 mate, 或者说我们其他那些模型都在这里,那怎么去用?使用的方式也很简单,首先安装方式,拉米奈斯里面模型 我要用的比方说是前文的,在这前文这一块好,他的使用方式,他其实下载命令这些都是有的,你需要通过这种方式进行下载,下载好之后,比如说我还想下载一个拉玛,也是通过这种方式,那怎么去进行调用呢?调用方式其实也很简单,首先第一个 从当前的拉宾代词里面,同样是模型里面导入导出我们对应的前文的, 我先调用 api, 那 么我要调用的 mod 的 名字是什么?搞一下。比方说我用千威 max, 我 就直接写好吧,就是这里默认的话,默认。如果说你要用这个 mod name, 如果说你要使用这个 mod name 来进行调用的话,它默认只有这几个,一个是 plus, 一个是 max, 一个是 travel, 提供了这三个模型,记住是默认的三个模型,前文三都不行,你指定其他的没有办法。那如果说我要去调用,比方说现在这个前文出的四点六的,对吧?那你只能写 model, 不 能写 model name, 写成 model 卡。比方说我要用这个千万是四点六的版本吧,那就可以自己去写,那如果说你用 model name 版,它只能说我们按固定方式传这三个就可以了。好,下面这里就是你注册的 api k, api k 这个我就不暂时给大家看了,自己去获取就可以了。这之前一直有讲过,准备行就说但凡你有一个针对的模型,最好是根据他的厂商来找找厂商特定的 api, 这种才是贵,最好的,兼容性也是最好的。好。然后再往后面看呢,就是我们比方说要调用这个离线的模型,对吧?离线的同样的导入的方式,这个是用的 alama, alama 在 哪里下载的方式也是一样的,就是我离线的模型下载命令 get ping stone, 看这一个好。然后第一个是我们要调的模型的名字什么?然后其他的不需要配置啊,比方说我们对应的 bc 幺幺,因为他默认的在欧拉曼的本地,本地的欧拉曼,我这个欧拉曼好像有点问题啊,出问题了,他本地的地址呢?就是幺幺四三四,就这个端口,所以你不需要,不需要去管他, 然后后面会跟上一个 request time, 就 它默认的起的作用是什么呢?就它默认的话,如果是你不写默认它是一个三十秒,就如果说超过三十秒它没有响应的话, 就会给你报错,但这个因为本地的话,根据你电脑配置的不同,如果说你这样一个七倍的模型,如果说你的有时候它速度会比较慢,启动也会比较慢,所以说它一般三十秒不够,它会给你报这个延时的错误,所以一定要注意下。好吧, 我这个我这个欧莱玛出了一些问题,这个这样的逻辑是这样子,等下我再给大家去展示哈。好,那么其他的就没什么很特殊的,无非就是我们在模型调用的时候一定要注意它提供的这几种方式啊,我们现在所打印的就是模模型响应的内容,对吧?都是用的这个 company company 的 它的作用。第一个 他输入的数据呢,是一个纯提示词,纯字母串,就他输入的是一个问题,或者输的是一个字母串内容,然后他输出的数据呢,是一个完整的响应响应对象, 然后他是不支持多人对话的,不支持流式输出,那么他输入的场景是什么呢? 单纯就是一个对话测试,快速现实验,我们用这 complete 啊,然后还有就是那如果说我想流逝输出的话,它提供那个 to to 的 一个 complete, 就是 它可以以流逝方式进行输出,就在这它的基础上加了一个流逝输出。那如果说我想支持多人对话的话需要用 chat, chat 是 我们对应的流逝这个多人对话的一个方式,输入输出的信息。什么?然后还有就是一个流逝的聊天,就是我们通过当前这个模型它支持的这几个功能点,一个是当前的一个 chat, 然后 trim 的是 trim 的 一个 tab 流逝的输出,然后是 trim 的 complete。 好, 我们现在用的都是这个最普通的 complete。 好, 接着往下看,那么这些东西分别有什么区别和一些使用的方式?对象,第三个输出对象要用。好吧? 好,首先第一个我们先看,有个就是我现在用的是一个虚拟的一个,那这个就是可以支持流逝输出,什么叫流逝输出呢?我给他看一下,现在就可以了。好, 之前我返回的我直接打印的数据呢,它是一个,是一个对象,是一个支付串,它直接返回的是一个支付串,我这模型应该调不了,我换一个。啊,那上面这个通过 combit 所输出的信息呢?它就是一个支付串的信息,它翻译过来其实有个完整的完整的支付串,单纯就是一个支付串信息。 好,他也是一个响应对象。就是,只不过他现在返回的数据会不太一样,到时候给他去讲原音。那么现在换一个模型, 现在我们打印了之后呢?他不再是一个区块,而是返回的一个对象信息,这个对象信息呢,就是我们所看到的他就是一个生成器的对象, 生成器对象呢,你可以单独的给他生成出来,我们要去给他打一下你所谓的流逝输出,那就是可以一个字一个字往外蹦。好,他现在就是一个一个字往外蹦,你看到吗?这就是对应的区别,这个就是对应的区别, ok 吧?所谓的流逝输出,然后还有一个需要注意的点呢?我再给他看数据。好,返回的是一个生成器的话,因为生成器我们是需要干嘛?是需要循环的, 循环才能看数据,然后生成数据,我给他看一下对应的信息,单独打印这个签给他看一下他现在返回的数据,就是每一个 相当于我回答之后是会一个字一个字往外蹦的,对吧?一个对象,一个对象往外蹦,他的这个对象呢?是我们对应的响应对象,然后对应的数据原数据长什么样子好?来注意看类型,类型的数据。 好,后面这个是查看对应的数据,原对象显示对象,原对象属性,原始属性,它的数据呢?其实是一个响应对象,响应对象里面有一个 test, 你 好,很高兴见到,很高兴见到你。然后怎么样?然后对应的数据再往后面看呢? 响应的状态码,状态码是多少?然后扣的,像这个 m c 姐,以及说很高兴见到来,会有个很高兴见到来。注意,就用这一句话,就为什么给他去看这个数据呢?最开始在上面看到的一个 test 是, 你好, 第二个数据,你好,很高兴见到他。其实会有几个字把前面这个字是不是放后面进行,加上了拼接上去的,能理解这个意思吗?就如果说你单纯的只去打应当前这个嵌格的话,我给他打一下,你又看到这样的场景,场景不对哈, 还会变成这个样子,你,你好,很高兴见到你好,很高兴见到你,怎么怎么样变成这个样子了,那就不是我们想要的一个字往一个字往外蹦。好,那这个有什么本质区别呢?首先第一个,一个是我刚刚打印的这个数据和 这个 ripper 所打印的数据,刚刚打印单独打印它是一个字串,但是我通过 ripper 的 所打印的数据呢?它是一个对象,区别是什么?我打应当前这个对象的时候, 跟这个打印这个是打印它的原始对象,显示了一个原始属性。那为什么这两个会有区别呢?我们在这个对象里面,它会绑定一个方法, 绑定会绑定一个这样的方法,因为它直接输出的绑定的是当前这个内容,绑定的是当前这个 test, 比如说它输出就是 test 这里面的数据,所以我们不能这样去输出,我们要看的其实是后面 content, 要的是这个 content 里面的内容, 这个数据是这个逻辑能理解吗?大家注意一下,注意一下就可以了。然后 chunk 里面要的是这个数据很高兴见到,然后你就是一个字一个字的, 好,那这个就是我们所讲的流逝输出。然后还需要注意一下,在这个 namenix 里面,它的基本上所谓的对象,你在打印的时候它基本上都会绑定这个 str, 也说你看到的都是直接式制符串,那如果说你想查看对象的话,通过这个 rapper 去打印它的原始数据啊,那这个就是我们对应的模型,调用 好再往后面就是,就是聊天,聊天的对话,聊天对话就是把 company 的 改成了对 excel, 这逻辑是一样的,没什么区别,那我们来看导入方法不要搞错了,从硬盘里面我这个键盘有点问题。 excel, 这是一个聊天记录,聊天记录的一个功能。好,那首先呢,我是创建了一个聊天的列表信息的列表里面有个数据 决策呢,是用户,就是我用户所提的问题,内容呢是,你好,然后提交对应的数据信息来看下数据。首先第一个返回的数据呢,响应的对象 它是一个什么?它同样的是一个对应的菜的,就跟我们之前的区别,刚刚呢是 company 的, 现在是菜的 response, 对 象不一样,然后里面的数据会变成有一个 message, 所以变成 message 和 tag message, 就 跟我们之前的这个响应的数据是完全不一样的哈,然后其他的就没什么很特殊的,显得原始数据,它会就告诉你,你好,很高兴见到你。然后还有一个就是我们当前的角色是什么?这个是助手,也是我们 ai 回复你的内容。上面这个是响应的数据, 你好,很高兴见到你,怎么怎么样,上面这个所打印的就是它的原始对象,这个是原始对象 人对象,就是给大家看一下,就是我们聊天的这个对话和之前的 chat 对 话的一个区别, 还还有印象的吗?我给他看一下对应数据,上面给他打一下这个对象是不一样的,上面这个是 complete response, 下面这个呢是对应的 response, 对 象是不一样的哈,好, 那这个就是两个对象的输出,一个是对应的 company 的, 一个是 type, 这两种都是我们可以去这样的方式,一个是返回支付串,一个是返回的是一个聊天, 聊天的对象,聊天的数据相当于它一个是带角色的,这个是会带角色,会带当前是一个什么角色?而上面这个呢,是不带角色的,它只有 taste, 只有大模型回复给你的内容,这就是他们的区别。好好,现在就正常了,我把 elama 重新请论一下,现在就是回复了正常的数据。在了解了模型的调用之后,我们接来看另外一个模型,因为我们除了大模型本身,我们还会有另外一个东西叫向量模型,向量模型, 向量模型。在向量模型向量的方式其实也没有什么很复杂的点好,那么首先 embed 就是 一个 用于这个切入木性这个交互的类,我们在当前 let's 里面我给它导入一下吧,给你。好,我先来看当前这个类 这个东西是什么?就我们现在看之前讲了它绑定了几个捆绑包,那么这个就是捆绑包的一个,下面它其实只有一个叫做 openai, 而它默认是提供了对应的 open i 的 一个切入模型的啊。那么如果说我们想使用其他的,或者我想其使用其他的一个切入模型也有文档地址,就在 in beta 里面啊。在这里 同样的,我们也根据你的厂商去做了它对进行 api 的 封装,比方说这个 checkpoint, 我 的前文 checkpoint 没有向量模型啊,还有像我们对应的拉曼的, 哎,像各种各样的都有,你根据自己的你调用的什么模型,还跟 face 的 这些都是有的。接着看怎么去用使用的方式呢?首先第一个是我们调用在在线的模型,我用的依然是对应的前往好下载方式也是通过 p i p install, 它这没有提示,大家看一下下载的命令 p i p install 安装对应的 embedding, 后面的访问方式是一样的,只不过说把这个 i m 换成了 embedding, 就 这一个区别。好,那么下载好之后,逻辑先给他看最基本的好,这个是调用 连接对应的在线的 api, 比方说我用的是微商的这个模型,这个是 api k。 好, 那怎么去使用的方式?第一个比方说我要去把问题转换成向量,对吧?通过当前的 embedding, 我 就直接复制一个是转换问题,一个是转换文档,这两个注意这两个其实是没有什么本质区别的,它生成的数据其实也是一样的。 来看一下,这个是对问题进行一个转换,转换成向量,这个是对文档进行转换,我们分割之后的文档转换一般用的是这个向量,转换用的是这个问题,转换用的是这个,那为什么会有这两者的差距?为什么会有一个问题跟文档?因为它生成数据是一模一样的,没有区别。 记住有一些模型他可能会有不同的,这个就你的问题转换成向量和你的文档转换向量,他可能用的是不一样的方式。所以说我们这里他是提供了两个内容,一个是转换成,一个把问题进行转换,一个是把文档进行转换, 你要注意一下就可以了。因为有一些模型它生成数据基本上是一样的,像前文它生成没有区别的。还有个可以批量处理,批量处理,批量处理做的事情就是传列表把后面跟上一个批次,这这一个点 问题我们不需要批量处理,但是你的文档我要把分割之后的文档转换成向量,你是肯定是需要批量的。完了,除了这个以外,离线模型你可以自己在摩擦里面进行安装,对应的都是可以的。使用方式也比较简单,就是在线的用法。如果说我要用离线的向量模型 传的方式,在我们编辑里面你可以导入一个 hackface, 这个编辑用的是哪一个模型?这个传的是你的地址,模型的地址我用的是最 g m 三的,这一个运行在哪个软件里面,然后进行提问,其他的方式其实就是一样的,一个是 这个,一个是 query, 一个是 test。 好, 那这个就是我们在后面调用下的模型怎么去用哦?一个是调用在线的,一个是调用本地的,本地的就用这种方式好。