今天继续讲 ai 应用开发,今天讲到了项链数据库米罗斯,我们要用到这个数据库呢,我们首先第一步呢就是要进行环境安装,环境安装怎么装呢?然后我这边呢,先先打开官网看一下它是怎么装的, 嗯,官网呢?它是一个,呃英文版的,但是它的安装呢非常简单。嗯,对我们学习来说用两种就行,一种是 r p m 包或者 d b 安装包安装,还有一种是刀口,我们就我们我这边的环境是用 d e b 安装的。嗯,我们先看看它这大概讲的是什么意思。它有个环境要求,就是你的操作系统必须这个 lib, 呃,就是 libs stick 加加必须是 八点五点零以上的。所以说你对版本是对你操作系统的版本是有要求的。那么本节课的环境呢?我们用的环境是什么?我这边用的环境是乌班图的,是一个乌班图的水库。呃,一个操作系统,它的版本呢?我们看一下 版本是二十四点零四版本。然后我这边呢是已经装好了的,装好了呢,看他这个官网呢,有的同学呢看,嗯,可能不是很好理解,我这边呢把他 都整理出来了。整理出来,你看我们五版图的安装其实就这么简单,你要你就需要把这个第一 b 点第一 b 的 包下载下来, 然后执行这个命令就可以了。执行这个命令以后,然后再看看它启动成功,然后看看它启动,然后把它启动起来,然后再看看启动状态,因为我这边的环境呢是已经装好的,那我们直接看一下它的启动状态, 如果是这样的状态 running 呢?那就证明我们的环境是装好了了。 那有同学说我不是巫班图的怎么办?不是巫班图的也很简单,其实关键的安装命令就是这一句,这个是在巫班图环境下装的,那么它官网上不是巫班图下 r p m 包,怎么不装 r p m 包?其实就这一句, 就这一句话把,首先你就需要把这个 r p m 包下载下来,然后用这个亚姆去装 这 sendos 啊。嗯,下面就可以用这种 r p m 包的形式去装,但是它们两个安装呢,就主要关键点就在于把这个包下载下来。这个包呢,去官网上,你用它这个 git 下面去下也可以。如果说, 呃, git 连不上,你也可以去老虎网盘资源,你就去搜这个无弯图的安装。这个下面我把 r p m 包和点 d b m 的 包都放进去了,下面这个呢是销量库的,就就就是, 嗯,用容器安装的,你看它这个安装,你如果有刀块的话,也可以用刀块去安装。刀块安装,嗯,它就需要两个文件,一个是 stone 点 s h, 还有一个就是,呃,哎,就是这个文件, 我们打开一下看看啊,还一个还有一个 type 包的文件, type 包的文件呢,我们就是这个, 你把这个踏波米路斯踏波和这个点 s s 文件两个文件拷到下,拷到你的服务器上,然后直接 把这个镜像导进去就可以,然后启动起来,它就这个脚本,把它一启动就可以了。所以它两种安装的方式都很简单,你要用 dr 的 话,你就去用这个去下载。如果你是物班,你是用 r p m 包或者是那个 d e b 的 安装方式呢?你就用上面那个就可以了,安装环境就这样,操作也很简单。这边成功了以后,那么我们验证一下。呃,如何验证它这个到底代码能不能连接上呢?我们先看看 ip 找到,然后我们用代码来验证一下这是它的 ip, 然后它的端口默认端口就是这个,我们拍摄环境里面你安装一个这个包 版本的,我这边用的版本是二点五点零,然后就这么三行代码,然后你就可以连接到米老鼠库,然后最后展示一下,看它展示出来了,那么我们上面这块儿它一个 警告,他这个不是错误,挺讨厌的,怎么处理呢?我们就加上这一段,就把他警告给屏蔽掉 就可以。这个呢?他就是因为我们那个版本有点高,他有点兼容性的问题,然后把这段代码加进去以后,看好了他就把他的错误就去掉了。环境安装呢就到这里 也很简单,大家只要试验一下就可以,最主要的就是你需要一个呃操作系统能够安装上,呃,这米洛索,如果说你的操作系统的 这个要求就是前面这个要求达不到,那么你就用多款去安装,也是一样的。行环境就讲到这里,然后后面我们会一步一步的给大家讲如何使用这个米洛索这个项链库,好,谢谢大家。
粉丝1572获赞4.4万

大家好,今天我们来分享一下 milverse 这款限量数据库。 milverse 是 一款性能卓越的限量数据库,它是由 ceo 公司开发的,于二零一九年开源,提供分布式可扩展, 支持一级规模高性能线上搜索,提供 h s w i v 五等高性能 a n 锁影, 主要用用于 ai 解锁、大拇指应用等场景。下面我们从以下五个部分分别讲述。第一部分主要讲 vivis 的 体系架构, 大家注意一下, music 体验在新的版本做了很大的调整,跟以前有做了很多的平衡吧,它的扩展性更强,更容易水平扩展。第二本讲主要讲 它的可扩展性,第三部分讲它的高性能。第四部分主要讲它的自动熔载恢复。最后我们讲一下如何设计一块高性能的 向量数据库,好,回到第一部分 bivs 的 体架口,我们看下这张图,当 mail 社 mailmail 的 数据库介绍客户请求之后,第一个主键是最左边的 process 代理,他主要负责接受用户请求,并将请求分发到内部主键。 内部主键分为以下三个部分,看看看中间这一部分,最上面的是 collector, 是 那个控制层, 控制层,它主要负责原数据的管理以及与内部组件的交互协调。 中间的层 workers 主要分为三个组件。第一步是居民楼的,它主要负责接收变化的时量,比方说新增时量、三级时量请求,然后写入 w h r 组件。 w a l 主键,具体来说可以是 p s a, 也可以是卡布卡主键。在这里,在新版本, 卡布卡的 w 主键的性质发生了很大的变化,它转用于恢复,而不是不再用于。 嗯,读就是那个呃接收请求和处理就分离不再这个,这个作用已经作废了,它现在只用于恢复这一个目的,大家注意一下啊。 第二个看是 cryode 的 第二个属性,它主要用来接收 process 分 发的 dk 请求,也就是向下搜索请求好。第三个属性是 delete, 它主要负责所有人的构建, compassion 等相关的工作。 嗯,接着看我们最右边的这一排,最右边的这一排。区域化存储 主要分为三三个组建。第一, memory storage 主要是 etc etc 来实现的,它主要负责元数的存储,包括你的集合及集合的定义,以及你的 即可相关的 segment。 segment 信息都放在这里啊。中间一款是 wr, 主键是用来存储写入的消息队列的存储,用于 恢复使用的,它不再用于,就是说用于呃实现请求跟那个处理之间的分离。最下面是第二存储,也是我们的 ccm 的 存储的最关键的部分, 它它的主要的具体的实现产品有 bio, 还有什么 o s s 先支持的啊,以及那个 s 三亚马逊的存储都是支持的。 这几个主线的关系,如果说你的,你的那个,你的请求是创建一个集合,然后 d c i d d i 请求就录到这里了,控制层,然后去更新一个 my storage。 如果你的请求是新建一个向下走的是 d m a i 这条路线,然后最后吃完之后刷盘到 对照清楚。如果你的请求是一个向量搜索,它会走快乐的, 然后从 sql 的 返回结果就返回给 process。 要注意啊,如果是向量搜索,除了快乐,还可以从 sql 的 提取税提什么税?提 green word in segment 提这本数据啊,就是还没有完全 sealed, 没有封闭的一些 segment 要注意一下啊。第二本我们来讲,我们来讲一下 u s 可扩展性,它是怎么做到高可扩展的。 第一,计算扩展成,大家知道我们的快肉的,低肉的、微肉的都是可以水平可扩展的,高度扩展的。第二,数据扩展,我们的 collection 仅用 partition, 再到进去的某一个 segment, 可以 是非常庞大的规模和容量,而且 segment 是 存在不同的分片下层,上面的 数据的规模是是相当的庞大。第二个就是 第三个扩展,表现在我们的计算存储分离, 针对不计算瓶颈,可以只扩充计算相关的资源存,如果是写入瓶颈,只扩充写入相关的资源即可计算存储瓶颈,极大地提升了它的性能和扩展性。 接下来我们介绍一下 music 高性能是如何实现的。第一, 支持 h, s, w, i, v, f, d, c, n 等高性能的缩影的知识,这是非常关键的一点。第二,批量并行查询, 这是 segment 并行,多声域并行, c, m, d 并行这些非常关键的并行的核心的能力的知识。第三,它的高性能还体现在 mmap 以及热数据的缓存,将热数据常驻内存,将冷数据基于 mmap 动态加载, 极大的节能性能。 第四,它的高性能和显卡计算存储分离, 存储不影响计算,计算不影响存储,哪个出现瓶颈可以单独扩大一份资源,可以极大地提升了它的扩展性以及技术极致的性能表现。接下来我们介绍一下 u s 的 制作溶胶能力。 一、它的工作组建是可以水平扩展,自动恢复,恢复时间大概在分钟以内。第二,它的调度组建,控制层组建,扩展组建可以生成组备的模式。 第三,具体的 process 代理则可以动态的扩展,水平的扩展,具备的持续化存储 全部是支持多副本的,无论是 max, 多级, e, d, s, w 卡不卡,还是这样的品种,基本上都是三副本的,提供了非常强大的安全性和可能性。 接下来我们介绍一下如何设计一款高性能的 vivo 的 数据库,提供卓越的性能表现,要高性能就要从整体来设计,而不能单某一个点,某一个方面。第一, 我们的 partying 该如何设计?第一, partying 可以 提高我们的 可以, partying 是 用来过滤修剪 segment 的, 可以把不相关的全部滤掉,可以大幅提高我们的处理速度。 那么爬行杆如何设计呢?一般根据业务的分类,根据日期维度来进行设计,原则上爬行也不能太多,建议一千以内加好。第二个分片设计下的设计。 分片是决定并行度的,那么我们一般建议分片的数目等于 pi 六的节点数,乘以 cpu 的 核数或者是一半为好,但也不要太多啊。注意, 这是分片式三副本的设计,副本不是我们常规下你的物理上的副本,是说同款 cpu 的 乘多个副本,不是,这个 要大家知道我们的在 memphis, memphis 里面 seven 每一个是只存储一个副本,就一个。它的多副本是指将在同一个副本 加上多个块肉的,那么就可以根据块肉的负债,我在分配资源的时候,我可以找负债低点来处理我的请求,可以提高我的信任,降低延迟。这是副本的设计, 当然还有我们对对那个 load 的 设计,我们知道快乐是重 cpu 和内存的,快乐的 dload 是 重 i o 的, 那么你要跟它的特征去做相应的调整,优化资源。总之, biv 是 一款高性能的卓越的向量数据库,支持分布式可扩展,支持 h s w 高性能锁影, 计算、存储分离。我们在选择向量数据时, biv 锁影是一款非常不错的选择。好,谢谢大家。

今天我们重点介绍向导数据的选型,随着 i g 推荐系统与搜索的发展,向导解锁已经成为核心能力。排量数据不具备,不具备高额向量禁止搜索,不具备 大规模 top k 相似度计算,所以需要一款专门的向量数据库选择相似度我们重点关注性能。二、可扩散性、稳定性。一、拥有密度,还有生态的支持。下面我们主要介绍一下当前集 主要的向量数的分类。第一,原生向量数据库代码产品有 mv 位位的 qq, 其特点是知识向量搜索,知识分布式扩展, 适合大型企业基于收敛型的扩展。第二类代码产品有 elasticsearch open source, 其特点是强大的混合计算能力, 在已有的求证阶段增加对善的支持能力,其不足是其善意力不如原生善意库, 适合已有 e s。 就 善的企业。第三类是基于关系的扩展,代表产品有 public sql 加 pipter, 其特点是和原有数据库深度融合,简单易用,适合中等规模。 下面我们讲一下三项事务选型核心能力对比维度。第一,性能, 对各类 a n 所用的知识,包括 h s, w, i, v, f, d, c, n, n 等。第二,是否知识 p u 三、是否知识批量查询。 第二点是可扩展性, self 知识分片,多节点自动扩容,计算、存储分离。第三, self 智能混合剪索,包括标量过滤,全稳剪索, i g 融合。第四是运维复杂度, 包括是否依赖 k 八 s, 是 否依赖卡不卡帕萨,是否支持 k 八 s 自动化,英文部署难易度。最后是生态社区的支持。 下面我们来看一下当前几款主流的三项水果产品,第一 milius, 它的优势是支持异域占规模,分布式架构成熟,支持 gpu, 支持各种 a n 锁眼能力。其不足是价格复杂,维护成本价高,适合大型企业。第二款产品是 evite, 其特点是内置 graph killer, 简单一用,制作红光剪索的步骤是在大项目场景下,其限量步入 universe。 第三个产品的 content 基于 rise 的 实现,应用 四个中队规模。第四个产品是大家非常熟悉的 elasticsearch, 它是个已有的全选种深度融合,支持向量搜索。 这个已有数据库的不足是在向量搜索引擎方面步入原生向量库。 最后产品是 peatwater, 它适合 peatwater, 适合深度融合,简单用,适合中等规模。 接下来我们讲一下选型,具体怎么选型, 根据你的数据量规模,我们推荐在一百万以下推荐使用 p word, 一 百万到一千万之间推荐使用 qq 编辑 word 或者 word 单机版以一级以上推荐使用 libraries, 多数企业版推荐使用 libraries 分布式排序加多 collection。 最后我们用一句话总结,如果你追求极致性能加分布式扩展,推荐信, universe 如果你是想快速向上线,简单部署,推荐信程序等。如果你已用 yes, 就 在推荐信以 netsearch。 如果你是中等规模,推荐信, p g writer 好, 谢谢大家。

使用欧拉玛可以一键部署本地大模型,我选择的模型是千万三点五九 b, 现在来演示一下, 可以看到 gpu 使用率向升,由于我这台电脑的显卡配置比较低,所以输出的比较慢。 好,终于输出完成了,接下来是 gg 教程。 首先肯定是要下载欧拉玛的这个软件,进入欧拉玛的官网之后,选择 windows 点击下载,当然这个下载起来会非常的慢, 我也给大家把安装的程序上传到了网盘下,下载后双击打开直接安装,安装完成之后就是这样一个界面,可以在这里点击你想要的大模型,比如说这些是云端大模型, 从这里开始就是本地大模型,这个是谷歌开源的本地大模型街吗? deepseek 千问三,还有其他的一些模型啊, 对于模型怎么挑选,得看电脑的配置,比如说我这台电脑 cpu c a m d 二五六零零两根 d d e 二四的一六 g 内存条, 显卡是一六六零 s 六 g 的 显存,这个已经是非常老的显卡了,后续我准备根据我的电源升级成四零六零 t 一 六 g 显存的,所以根据我的电脑配置 选择了比较小一点的模型。那你的电脑适合哪一个大模型?可以把配置发给豆包问问,让豆包帮你分析适合下载部署什么样的大模型。今天的教程就到这,关注我,评论私信。

大家好,本期内容我来分享如何在本地部署谷歌新开源的多模态 ai 模型代码四,我会分享命令行和格式化界面两种安装方案,零基础也能轻松搞定。 最后我还会教你如何修改部署的路径,彻底解决大模型占用 c 盘的问题。本地部署的优势就是你的数据可以完全保存在自己的电脑上,隐私安全有保障,而且支持模型微调, 可以打造专属的 ai 助手。但是他也是有缺点的,就是我们需要稍微懂一些技术,还有就是硬件的支撑,如果电脑配置高,自己可以部署折腾一下。有了本期视频,就算你不懂技术,跟着视频操作也可以部署成功。 本期演示我只分享入门版本,主要就是参考部署的方法和流程。接下来我手把手带大家用欧拉玛一键部署。 首先我们先来了解一下 jam 四到底是什么,它是谷歌新发布的开源多模态的 ai 模型,与 jimmy nay 是 同源的。 简单来说,谷歌就是把自家的 ai 技术打包成了一个免费开源的版本,让每个人都能用上。它的能力是非常全面的,支持文本交互、图像识别、音频处理,还能生成代码, 基本上覆盖了所有的 ai 应用场景。下面我们再来看一下它的核心优势。核心优势它有三个,第一个就是多模态能力,文本、图像、音频代码,一个模型全部搞定。 第二个就是完全免费,它没有会员订阅,没有暗次收费,可以随便的去使用,甚至用它去开发商业化的产品。第三个就是比较重要的隐私安全保障,本地部署模式下,所有的数据处理都在自己的设备上完成, 敏感信息不会上传到云端,这是三大核心优势,就是在我们安装之前,需要我们了解一下这个安装环境。首先系统兼容性 demo, 四是支持 mac os、 linux、 windows 三大主流操作系统,基本上覆盖了绝大多数的用户。 然后就是内存要求,如果你的电脑小于三十二 gb, 推荐安装四 b 版本,自己安装体验折腾一下就可以。如果你的内存达到或超过了三十二 gb, 那 就可以选择二十六 g 或三十一 g 的 版本。 在这里有一个小提醒,就是如果是 mac 电脑 m 系列的芯片,它的显存和内存是合二为一的,大家直接看内存就可以。如果大家不是 mac 电脑,比如 windows 或者 linux, 那 么就优先看显存,显存不够再看内存,这是关于这个配置的查看。像这个本地部署也非常简单,仅需两个步骤即可完成。第一个就是安装欧拉玛,这个欧拉玛就可以理解为是本地大模型的一个容器, 它是装大模型的,有了它才可以运行。第二步就是我们容器安装好之后,我们需要给它把模型放进去,就是部署模型,两个步骤即可搞定。下面我们直接进入实操环节,我们来一起看一下部署的全部流程。 在这里第一步我们就先要有这个欧拉玛,他是一个大模型的容器,就是我们打开之后选择右上角的 download, 这时候我们就需要选择匹配自己系统的版本,在这里我这是 windows, 然后我们选择 download for windows, 在这里选择 download for windows 之后就会弹出窗口,我们选择路径直接保存就可以,当下载好之后,然后我们就安装即可,安装好之后打开就是这样的主界面,这个是我之前安装的版本,部署着一个一点五 b 的 zip, 然后下一步就需要我们去选择大模型,我们还来到刚刚乌拉玛的这个界面,在这里我们选择左上角的 models, 然 然后在这里我们可以看到该马四,然后我们选择进来,它提供了好多个版本,在这里我就选择一个入门的版本,主要就是演示安装的流程,比如我们选择 e 二 b, 然后我们选择,这时候我们就看到了这个安装命令,选择右边的这个两个方框,然后选择 copy, 然后下一步 我们就按键盘上的 windows 加 r 键,这时候出现运行窗口,然后在这里面输入 cmd, 然后直接回车, 回车之后就出现了这个命令窗口,然后我们刚刚复制了直接鼠标的右键,可以看一下,这个命令就粘贴过来了,然后我们直接 回车好了,这时候它就开始部署到本地了,在这里我们需要等待一段时间,好可以看一下出现了 success 这个提示,就证明安装成功了。现在我们在这里可以直接和它对话,比如我们输入你好当前什么模型,然后我们发送 可以看一下,他现在回复我们了,我是一个大语言模型,我叫 jama 四,这时候我们就在本地已经部署成功了, 然后我们再回到欧拉玛的客户端,在这里在这个对话窗口右下角这里,这里可以选择模型,然后我们找到刚刚部署到本地的 jama 模型好了,这时候就切换好了。同样在这里我们也可以直接和他对话,比如我们输入你好,然后发送, 这时候他就回复我们了,你好,很高兴和你交流,请问有什么帮助到你的?到这里我们就已经部署成功了。前面我们分享的是使用命令行 c l i 模式去部署,其实还有一个简变的方法, 在这里我们还可以选择模型后面对应的这个按钮,也是可以直接部署的,这个是非常方便的。好,最后我再分享一个大家比较关心的问题,就是我如何设置这个本地模型的一个部署路径, 在这里我们也不用去改环境变量了,这个客户端是直接支持的,我们选择左上角的设置,然后在这里选择这个 model location, 在 这里我们就可以去设置模型的一个保存路径,在这里大家自己设置就可以,是非常方便的。 好,下面我这里演示的是上传了一张图片,就让他识别这张图片,我们一起来看一下他给我们的结果,好了可以看一下,我们给了他一张图片,我们问他这是张什么图片,他给我们的回复, 这是一张符号或者是图标,然后他还分析了主要包含的元素,还有用途预测等等,能够精准的识别内容,并生成详细的描述, 表现还是可以的。好了,现在我们本地部署成功了,然后刚刚我们也做了一个功能测试,第一个就是我们和他对话,就是文字处理,第二个测试的就是这个图像识别,他也是可以精准识别的, 他虽然是多模态的,但是目前我们用的这个容器不支持多模态的输入,我们暂未测试音频和视频的识别。好,最后我再补充两个细节,就是第一个欧拉玛的拓展性他是非常强的,除了可以部署这个 demo 四, 还支持比如通用签问或者是 deepsafe 等众多的开源模型,部署方法也是完全一样的,一条命令就能去部署。第二个就是本地部署的真正价值不仅仅是隐私保护,更重要的是支持模型微调, 可以用自己的数据去训练模型,打造一个完全专属的 ai 助手。好了,这就是我们本地部署的所有内容,大家感兴趣的可以自己折腾一下,探索更多的玩法。好了,我们本期内容分享就到这里,可以留下你的想法,我们下期再见。

下班回家无聊,用 milvis 加 lang chain 加 dash scope 搭建了一个知识库问答系统,好用到哭。近几年大模型可谓是异常火爆, ai agent ai ai ai ai agents ai agents 本着学习的目的动手做了个实践。现在很多人都在用在线 ai, 但个人隐私和数据安全都不受控,于是我花了三个小时写的这份教程,跟着走完就上手搭建一个属于自己的知识库问答系统,我会带你走完从本地部署到知识库搭建的全流程,感兴趣的朋友可以直接抱走练习。

这可以说是全网最全最深的 red 知识库项目实战。很多同学都知道 red 知识库是 ai 的 经典场景,包装到你的简历当中,秒变 java 加 ai 应用开发。但是面试问到你很多企业及 red 开发的痛点,比如怎么做的分片怎么解决? top pay 的 限制怎么做?跨向量的聚合查询怎么做来源追溯,也就是大模型的回答来自于 哪个文件怎么做?文档的更新怎么处理?文档当中的表格和图片怎么解决? rack 的 图片乱造,也就是幻觉问题,怎么提升 rack 的 召回率?查询改写怎么做?后处理机制有什么用? re rank 能随便用吗?那我花了两个月时间啊,录制了一套企业级 rack 知识库系统项目实战课,并且整理配套的文档和代码,从项目的搭建和部署 及功能的快速开发与实现,手把手带你从零到一,完整跑完 red 开发完全流程。那刚刚说到的这十个 red 开发痛点,也是面试当中经常会问到的,我都会给大家去讲到,跟着练完包装到你的简历中,绝对能给你加分。那需要这个项目视频和文档代码练手的保持,可以带动学习,希望对大家有帮助。先来给大家介绍一下项链,那项链这个东西呢, 主要是用来做相似性解锁的,那我们怎么能够定位到某一个词语相似性的其他的词呢?举个例子,就比如说你好, hello, 见到你很高兴,那我们作为人类呢?那肯定就一眼能够识别出来哪个是相似的,对吧?就是作为计算机的话,我怎么能够识别到和你好相似的其他的词语呢? 那计算机它通常呢需要通过数字才能识别到,就比如说我将你好呢对应到一个一维坐标当中的一十二这个点, 那么哈喽呢?我定位到一十三,见到你很高兴,定位到一十四,对吧?那比如说跟这三个词从语义上面来说不太相关的呢?他们的坐标可能就会挨的比较远,那这个时候计算机他是不是能就能够识别出来跟他相类似的一些词语啊?对吧? 就比如说我通过嗨,那么嗨他对应的坐标呢?比如说可能是十一,对不对?那我就可以呢从十一这个坐标为中心,找到跟他相类似的一些其他的词语,是不是关键这个数字从哪里来呢?其实这个数字不需要我们去给他进行 转化,而是呢通过一个叫做向量模型,哎,这里又有一个新的词了,对吧?我们之前用的是大语言模型,对不对?也就是 l l l m 大 语言模型专门用来做对话的,那么向量模型呢,就是专门用来将我们的一些词语啊或者短句啊,给它转换成这种数字向量的, ok, 那 么它就会自动的识别这个词语或者这个短句它的一个语义,然后自动的给你转换成一个数字的向量。 ok, 那 么这些数字的向量呢?最终就会存到这样的一个大的向量数据库当中, 那最终我们就可以通过比如某一个词语来解锁到跟它相类似的其他的一些,我们叫做语料,好吧, 那当然我刚刚给大家举例的呢,是一个词语,对,那如果是一些更复杂的一些对象呢,比如说小狗,对吧?小狗呢,我们可能就没有办法通过一维数字来进行相似性解锁了, 因为你看这里很多狗,他们从词语上面来说呢,都是,对吧?比如说黄狗啊,什么什么什么黑狗啊,可能可以用这个颜色作为他们的这个形容词,对不对?但是你也只能从颜色上面呢来进行区分。 所以这个时候如果你想做相似性解锁,就需要去汲取这些对象的克制,就比如说颜色大小啊,真的品种啊,是不是?那这个时候啊,就会形成一个多维的向量, 那就比如说我们这里的这张图,我们就可以按照毛发还有体型作为一个 x y 轴,对不对?那每一个狗呢,给他向量出他的毛发还有体型一个向量数字, 那这样的话,我们就可以从毛发还有体型两个维度解锁出相类似相类似的狗,对不对? 但是如果我们想从比如说品种啊,对吧,或者说狗的性格啊这些维度来解锁,是不是二维坐标又不行了?那此时呢,我们要拓展出 更多维度的坐标,比如说三维坐标,对吧?四维坐标,五维、六维、七维等等。当然我们是一种三维生物,可能没有办法去理解啊这些高维度这样的一个空间, 但是呢,无论他是多少个维度,对于计算机来说,他在这个维度空间当中呢,始终是一个坐标点,好吧, 这个坐标点呢,就可以通过比如说 o 的 距离啊,或者鱼弦相似度这样些算法去解锁到这个 o 为空间当中相类似的一些其他的一些语料了。当然我刚说到的这个,比如说鱼弦相似度啊, 都是距离啊,这些也不需要我们自己去写啊,这个也是由下面数据库,他会负责帮我们进行解锁。 ok, 所以 在这里呢,大家意识到一点,我们要进行相似性解锁的话,首先就需要先把我们的这些,比如说词语或者短句啊,给它转换成 向量。所以整个过程就如我们刚刚所说,首先我们要将我们的一些短序或者词语进行相似性解锁的话,要给他存到向量数据库。那是怎么才能存到向量数据库呢?就要给他进行向量化,所谓的文本向量化了。那怎么做文本的向量化呢? 通过向量模型给它转化为向量之后呢,就可以存入到向量数据库了,那这个过程呢?我们叫做嵌入 in bending, 正如我们刚刚所说,如果要进行相似性解锁呢,就需要先将文本进行向量化,存储到向量数据库当中才能进行相似性的解锁。那要将文本向量化,我们要用到一个非常重要的东西就是向量模型了, 他就是专门用来做文本向量化的,因为同的文本呢,他有不同的特征,同的语义,那这些不可能靠我们自己去提取。那向量模型他就帮我们解决了这个问题,他可以将一段句子或者一段话给他进行向量化,并且他向量出来的这个维度啊, 呃,有,有幺零二四的,也有七百多个维度的,所以说维度越高,那么对应的他的相似性解锁的这个精度呢,肯定也就越高了,对不对? 那当然啊,我们之前讲到的这个大语言模型,也就是 l l m, 我 们之前用到的这种对话模型呢,它是不能做项链化的,我们需要单独的去用项链模型。那首先你要知道 deep seek 它肯定就不支持项链模型,因为你可以去 deep seek 老家去看一下,对不对?它是没有提供项链模型的, ok, 当然没有提供项链模型并不代表 deep seek 它就不能用,我们可以对话依然用 deep seek。 好吧,那么做文本向量化呢?你单独的去用另外一个模型,那比如说你可以用阿里百列,里面他就提供了非常多的向量模型,好吧,你看很多的版本,每一个版本呢,都有自己的一个特征,那我们肯定用新不用旧,对不对? 比如说,那这个他的向量模型的名称呢?啊,就是这个,那对应的维度啊,你看最高有二零四八个维度,还有幺五三六幺零二四是默认的维度,就如我们刚刚所说啊,维度越高的话,那更能做到精确的解锁。好吧,那这是对应他的一个费用啊,也不是免费的。 ok, 那我们如果要专门用六个向量模型,我们可以来到这个配置文件当中,比如说你可以在这里配置有一个叫做 in bending options 点 model, 你 就可以单独的呢去它为它配置一个向量模型。当然啊,阿里的摆列呢,它也有自己的向量模型好不好?我们可以看一下,应该叫做 in in bending, in bending 没打错吧,这个单词 in bending, in bending 这个 properties 好 不好? 我们可以看到他默认用到的这个项链模式模型的是 v 一 的版本, ok, 应该是比较早的一个版本了,当然性能也不差,因为他默认的维度呢,有幺五三六。 好吧,所以我们就可以呢单独的去使用对应的某一个项链来去做文本的项链化。那如果说奥拉玛的话,你可以怎么做呢?比如说我们可以开奥拉玛 lava 里面呢?点击 models, 那 它这里看到没有有一个专门的 embedding 这样的选项,你点击那这些就是专门的项链模型, ok, 你 可以呢根据你的需求来进行下载。那我在我本地呢就已经拉取了一个项链模型啊,好吧好吧,就这个它的下载数量呢是最多的。 所以如果你想测试一下 alama 本地的呢,那你可以在你的代码当中,首先呢,我们可以加入 alama 的 依赖,对吧?算了,他不给我提示,那我自己去写啊, spring 干 ai 干 start 干 alama, ok, 那这样一来呢,我们就可以在配置文件当中呢去配置比如说 alama 的 刷新一下这个 menu 啊,比如说 alama 的 叉的 model 用什么,对吧?我们之前都讲过了, alama 的 s u l 用什么?我直接复制一下之前的代码,这里没有。嗯,复制一下这里的,怎么都没写,没关系,我们自己写一下,好吧, 它默认呢就是 local host。 幺幺四三四,那你可以单独的去配置这个 in bending 的 模型, ok, 你 就比如说去配置我们这个模型,对不对?当然这个 last t 的 这个也可以省略, ok, 好 吧,那这样一来呢,我们就可以去使用对应对应的这个向量模型了。 那我来给大家演示一下怎么将文本进行向量化,我们就以奥拉玛为例,好吧,那当然我更建议大家呢,还是用这个阿里的这个向量模型,因为我们本地这个其实它的性能 不太好,因为你看它也就两百多兆的一个向量模型,我们来新建一个测试类,那么我这里呢,我就自动装配了奥拉玛的 embedded model, 对 不对?也就是奥拉玛的向量模型,我们之前是不是用的叉的 model 啊?对不对? 那我们就可以调用它的编辑方法,就可以将某一个词组或者一句话,好吧,或者一段话进行向量的转化,我们可以看一下它转化出来的维度有多少,包括它是什么样的一个向量。看一下这里,哦,错了, gdbc, 哦,我之前忘记 复制一个项目过来,忘记把这里的一些依赖给它去掉了。 ok, 我 们再刷新一下版本,然后呢我们再来测试一把,然后你可以看到 它的维度是多少呢?七百六十四个维度对不对?所以明显它性能就没有阿里的这个向量模型这么好,对不对?所以我们也可以测试一下阿里的这个向量模型,我们可以自动装配到 scope。 呃, embedded model, 这个我就直接叫 embedded model 吧。 我们来看一下通过阿里的这个向量模型 r 转换出来的这个维度是多少?我们刚其实也看到了,它默认的是,呃,幺零幺四,对不对?当然我们也可以去配置啊, 你看默认是幺零二四个维度对不对?那个向量模型里面啊,他有一个配置叫做 dimension, 好 吧,就可以设置他的一个维度了。 dimension, 那 比如说我们给他设大一点啊,比如说给他设置个幺幺幺五三六吧。 哇,那这样的维度呢,他就会变得更大,我们看一下,那维度更大呢?我们刚说了,他能提取的特征就越多,进而呢越能做到 相似性的一个解锁。哎,他的,他的这个维度依然还是幺零二四啊,我看一下啊,这没错啊,这里已经设置了,我们再调一下吧,再调个二零四八,看一下 二零四八,那依然还是幺零二四,说明这个他有可能有可能有 bug 啊,我们看一下他的这个 default option, 其实他这里肯定进行了赋值的啊,我们可以在这里打个断点,好吧,打个断点啊, 然后呢再来调试一下,按一下这个 options, 你 看这个维度,实际上它已经设置进去了,对不对?那在这里呢,我们会调用这个编辑的方法 来进行向量化,对吧?我们也可以看一下这里面的代码,其实也非常的简单,它其实呢就是通过调用这个向量模型里面的扩方法,然后呢去通过远程 http 的 方式来进行请求,我们可以看一下它请求的这个信息是什么? error, 你看它好像并没有把我们的这个维度呢带过去,对不对?所以这一块我估计是它的 bug。 好 吧,我看一下,我们把断点重新打在这里看一下, 来监听一下这个参数,这个 options, 你 看这个维度,它实际上已经传进来了,对不对?但是转换成这个请求参数之后呢,这个维度就没了, 所以这个问题呢,应该是出在这个方法里面啊,我就不带着大家去调了,那其实如果你能找到这个问题,并且提交到 spring 阿里巴巴 ai 的 话,那你就可以成为这个代码的一个开源贡献者,这对于你来说呢,也是一个开头, 好吧,所以大家可以自己去尝试做一下这个事情。 ok, 我 在课上就不带着大家去去做这件事了,所以这里应该是它的 bug, 因为目前确实 spring ai 包括 ai, 阿里巴巴呢,他们也是刚出来,包括很多的东西呢,都需要程序员我们一起去共建,才能会变得更更好。 ok, 好, 这个文本向量化呢,我就先给大家演示到这里,所以向量模型它的本质呢,就是把语域相似的内容啊,用相似的向量坐标来去表示,那把不相关的一些内容呢,尽量的把坐标拉远。 那如果你想提升你的相似性的解锁精度,那选择好的一个项链模型,这是非常重要的。如果你选择一个非常笨的项链模型,他都没有办法更好的去理解每一句话的语义,甚至有些项链模型呢,他可能都没有办法去更好的识别中文的一些语义, 特别比如说涉及到一些文言文啊,成语啊,对不对?就需要我们能选择一个性能比较好的项链模型来进行项链化。 所以向量模型它非常重要的,决定我们最终解锁到的内容的一个相似精度。那向量数据库呢,它其实只负责我们更加高效的去解锁对应的这些相似的内容。好吧,向量数据库呢,它利用一些相似性的解锁算法, 在这个过程当中呢,用最低的资源消耗,然后最高效地去解锁到相似性的一些语料,这是向量数据库它所负责的一个责任。 ok, 那 supreme ai 当中呢?它支持的向量数据库呢?有这么多,非常多,对不对?比如说我们熟知的 es, 对 吧?还有你像 newforeg, mongol db 啊,还有 radix 这样,我们作为向量数据库的, 当然在这里啊,我不会每一个都带着他去讲。我主要呢给大家介绍两种,一种 simple wikipedia, 这种呢是用于教学为目的的,好吧,它就是呃,利用 java 代码来实现了一种向量数据库。另外一种啊,就是目前整个行业当中公认的, 呃,性能最好,然后市场占有率呢?偏高的一种项链数据库,好吧?叫做 minis, 那 这个 minis 呢?呃,它官方呢?也有一个图啊,它的这个位置是在是在是在这个地方, 好吧,那你可以看到它的性能啊,可以说是处于一个领导者的位置,对不对?遥遥领先。但是它的市场占有率呢?并不是说最大,对吧?市场占有率,这个虽然越大呢,代表这个市场占有率,呃,越大,但是从综合能力来说,这个, 好吧,这个 milis, 这个 milis 它是属于这个公司的,好吧,那我们就优先就可以去考虑这个 milis 向量数据库了。 当然也并不是说其他的项目就不可以用哇,你也可以根据你的这个项目,他的一个技术架构来进入,来进行选型。 你就比如说你的你的这个项目里面用到了 es, 对 不对?那你除了想做 相似性解锁以外呢?加我们 e s 的 关键词解锁,你要用这种混合的,那是不是 e s 我 们肯定更加推荐,对不对?那包括你既要既要用到这种朴普的查询,也需要用到向量解锁,那 new 或记肯定首选那 radis 的 话, 它门槛比较低,因为基本上任何一个项目呢,也都会用到 radis, 对 吧?所以如果你去做一些小规模的向量解锁,因为 radis 它存到内存当中啊,对吧?肯定比较贵啊,你如果把大量的向量这些内容存到 radis 当中,那肯定是不划算的,所以它只适用于小规模的向量解锁。好吧,对于这种 高维度大规模的向量呢,就不太适用于了,我们更推荐呢使用这些专业的向量数据库。 ok, 所以 在本节课呢,我们会选用这两种,好吧,我会通过这种来这种 simple 的 来进行教学。另外呢,来给大家去讲解 minus。 那 我们就先来用这个 simple 用于教学版的这个简单向量数据库呢, 来给大家演示一下怎么去存储向量,以及怎么从向量数据库当中呢来进行检测数据。好吧,来,我们首先呢来新建一个单元测试,我们就叫这个 we store 向量数据库 test, 然后呢,我们加上 spring load test, 那 在里面啊,我们通过这个 test duration 来去配置一个向量数据库, 我们配置一个并 public。 好 吧,我们来配置一个向量数据库,那么这个向量数据库呢,我们就用那个 simple weig 的 story, 我 们先用这个简单的来体验一下让它的构造方法,那么这个构造方法当中呢,它需要给它提供一个向量模型,因为它在存储悟空的文本内容的时候呢,它内部啊,就可以自动地帮我们进行向量化, 那他既然内部可以自动向量化,所以就需要给他提供向量模型。好吧,那我们可以先用这个阿里的向量模型来测试一下啊,待会我们也可以用这个奥拉玛,我本地当中的这个性能比较差的。好吧,这个向量模型也待会来测试一下,那你就会发现啊,阿里的这个他确实性能会好一点, 好吧,当然我喇叭里面它也有性能稍微好一点的,这个大家也可以自己去拉取性能更好一点的项链模型。 ok, 好, 这样我们就配好了,我再来加一个测试方法, 那在这里的话,我们就需要把这个项链数据库呢给它自动装配进来。完了之后啊,我们来根据我们之前的这个,呃,航班,好吧,也就是我们的智能教务助手里面的一些涉及到的一些业务信息,我们来进行项链化。 那我们如果要进行向量化的存储啊,我们可以调用这个向量库的 add 方法就可以了,那这个 add 方法里面你可以看到并不能直接存储 string 的 文本,你需要给它提供一个 document, 用文档来表示。所以在这里呢,我去创建两个创建两个 document 的 文档,一个呢是关于预定航班的,一个呢是关于取消航班的, ok, 通过它们的构造器来访问这个文本内容来进行构造。 ok, 然后呢我们就可以给它通过我们的这个 list of 好 吧,来快速的加入这两个文档。 ok, 那 这样呢,我们就相当于啊已经存储 向量了。当然有同学会说,哎,老师你这里不是只存储文本吗?你在哪里进行向量化呀?你之前不是说要单独调用这个向量模型的 embed 方法才能进行向量化吗? 那其实你要知道我们这个向量数据库,它是不是绑定了一个向量模型啊?其实在这个 add 方法里面啊,你去根的话你就知道了,它的底层实际上就会进行自动的向量化,好吧,这个代码我们也可以稍微看一下, 你看就是在这里,好吧,你看它就会拿到它内部的这个向量模型,自动的帮我们调编贝的方法,也就是我们只要在这里调 add 的 方法,它内部啊会自动向量化。 ok, 那存储好之后呢,我们就可以来进行相似性的解锁,通过这个方法啊,那这个相似性解锁呢?他提供了两个方法,第一个呢就是你传入普通的文本, ok, 那 我们先传入普通的文本,先测试一把吧。好吧再来说传其他的有什么区别?比如我们传一个退票, 然后呢我们来接收一下这个查询到的这个 document, 然后呢我们再来输出这个 document, 它的一个文本以及呢它还有一个所谓的分数,如果越相似,那么这个分数它会越高,我们来看一下, 然后你看在这里呢,是不是就把这个取消预定划到了,对不对?那么取消预定跟它的相似度更高一点, 他会排在前面,并且他的分数呢是零点五,那么预定航班他的分数呢低一点,所以他排在后面,所以通过这种方式呢,我们就进行了相似性的一个解锁。当然我们也可以测试一下我本地的这个奥拉玛,它的这个向量模型看他的一个性能怎么样?好吧, 反正我之前测试的时候啊,他都达不到跟这个退票相似的,他会把这个预定航班呢摆在前面,不知道这次怎么样,你看这次倒还好,但是你看这个分数啊,对不对?这两个他的分数是非常相近的 对不对?可能稍不小心呢,就会把这个预定航班作为更加相似的那个内容,是不是?所以啊,我们之前说过,你要想相似度的解锁让它的更加的精准的话,那么下一辆模型记得选择 性能比较好一点的。好吧,所以我们整个过程呢,会用这个阿里的这个向量模型, ok 啊,当然我们刚刚查询到的这个结果呢,你会发现他两个都出来了,对不对?那如果说我只要最相似的那一个呢, 其实在这里我们就可以传入刚刚所介绍到的这个 search request, 好 吧,那我们可以呢单独的去构造一个 search request 在 里面啊,你就可以传入你需要查询的文本,以及呢?呃,你需要匹配几个数量,就比如说我只需要查到最相似的那一个, 包括呢?呃,你可以还可以设置这个分数,好吧,还有一个这个分数, ok, 就 这个分数我们之前看到,呃,先不设吧。好吧,我们先不设置,我直接进行构造 点 build。 ok, 那 这样呢,我们就得到了一个 such request 的 对象,我们通过它来进行查询来再运行一下。 好,你可以看到是不是就把最相似的那一个发出来了,对吧?它只会有一个,那我们当然也可以通过分数的方式呢来进行过滤掉, 我们看一下这这两个它们分别的一个得分情况,这个是零点五,这个只有零点四,对吧?所以你可以怎么样你就可以设置个零点五以上的 这个分数呢?我才提取出来。 ok, 来我们看一下,虽然我这里的 top k 是 二, 但是呢这个分数会筛选掉零点五以下的,进而呢你看,我们就只检测到了高于零点五的相似内容,对不对?好吧,当然呃,我们经过大量的这些科学论论论证啊,中文的这些 相似性解锁呢,不建议把这个分数设的太高,一般零点五,零点五左右就可以了。好,因为中文呢,他的这个英文跟英文的这个分数呢啊相差的比较大,你可以试一下,假如说是英文的解锁,他这个分数会高一点,所以这里要注意一下。 好,接下来给大家介绍一下怎么将这项量解锁啊,接入到叉的 client 当中,那我们之前呢,也不单纯的做解锁了而已,对不对?并没有跟对话相结合, 那其实我们在真实的应用当中,肯定要跟我们这个大语言模型进行对话,对不对?比如说用户问退票多少钱,那这个时候呢,依然需要用向量模型将用户的这个对话信息进行向量化,然后去向量库当中进行解锁, 那么就会把解锁到的内容呢,跟用户的对话内容一起发给大语言模型,那么从而呢来进行这样的一个智能对话, 那我们如果要将相似性解锁跟智能对话相结合,就需要给它接入到 java client 当中,那我们来给大家演示一下。首先呢,同样的我在这里创建了一个单元 three, 然后配置了一个, 好吧,配置了一个这个简单的向量数据库,那么首先呢,我在这里进行粗制化的这样的一个动作,把这些信息给他,粗制化到向量数据库,好吧?存储到向量数据库当中,然后我们再单独的去写一个方法去进行 啊,进行相似性的一个解锁。那首先我们之前是通过查找 client 对 不对?通过查找 client 给 build 的 方法来去绑定我们对应的一个 对话模型,我们就用这个 dash scope 的 叉的 model, ok, 然后呢去构造一下,构造一下 那么叉的 client 有 了之后啊,我们是不是就可以进行对话了呀?对不对?就比如说我说如何配票,对不对?那么我们调用括方法,好吧,然后得到 content, 接下来呢我们来输出一下,当然此时肯定是解锁不到的,对不对?他也只能通过他基础大模型的一些通用信息来回答我们,我还是改成那个,改成退票需要多少费用吧,因为我们上面给他提供的是一些关于退费费用的一些资料,对吧?你问如何退票,可能看不出效果来,我们看一下, 当然我们这里呢是通过这个扩方法,也就是同步的方式进行进球的,对不对?所以这过程可能会比较慢啊,当然我们在项目开发的过程当中,肯定会用这种流逝的方式来进行响应,你看甚至怎么样,甚至导致直接 超时了,还 out 了,所以在这里如果我用流式的话,可能会影响我们去观看这个测试的效果,所以我们还是依然用扣好吧,但是用扣的话,它又会导致超时,所以我们可以设置一下这个超时时间啊,但是呢,这个配置文件当中它又没有提供关于这个, 呃, web client 相关的一个超时时间的配置。没有啊,所以我们可以看一下它报错的这一块相关的一个请求链。 那你可以看啊,它的底层呢,是通过这个 wrist client 来进行的远程 h t b 的 调用,对吧?那这个 wrist client 呢,它是直接通过自动装配的方式呢?抓注入一个 wrist client 的 构造器。 呃,所以我们应该可以推断出来,它肯定有一个 wrist client 的 自动配置类,对不对?那你看,里面就配置了 wrist client 的 构造器,所以我们 如果要设置这个超时时间,它配置文件没有直接提供相应的配置,你看它并没有提供一个什么什么 property 这样的一个配置给我们,那我们就只能把它的这个 risk client 的 builder 给它覆盖掉。好吧, 那么它用的是多利病,应该是每一次请求呢,都会用一个新的 risk client 以保证性能安全,这个我们依然维持现状。好吧,那我们如果要设置这个,呃,请求稍时间给它设长一点啊,可以在这个默认它这里提供了一些默认的配置。 ok, 那 我们可以自己啊去设置 with read timeout, 比如说我们设置个六十秒,好吧,啊,然后呢,我们再设置一个,我们再设置一个, 设置一个 connection, 它哪个括号?这括号比较多点位置 connection 按 alt, 好 吧,我们同样的也设置六十秒。 ok, 那 这样的话,我们就给它提升了那个超时时间,我其实有点不解啊,它为什么不在配置文件当中,让我们能够用配置的方式去设置这个 risk client? 呃,这一点我有不理,有点不了解 spring boot 它为什么这么干?好吧,但是没有关系,我们可以通过这种方式呢去设置一下,但是在项目开发当中,我们肯定不建议大家设置这么长的长时间,在这里我只是为了给大家更好的去呃测试。好吧,并且呢,我们在项目开发的时候肯定也会用流逝的方式来进行响应,来,我们看一下, 你看这个时间还是比较久的,对不对? 因为毕竟我们是通过 call 的 方式来进行请求的好,你看这个内容响应的也比较多,对不对?它这里提供的这个, 呃退费费用我也不知道它是从哪里来的,对吧?比如说五十到两百元,所以我们就希望呢让它输出我们自己业务的这些信息。那这个时候如果我们要结合查的 client 来用的话,我们可以结合一个什么呢?结合一个 advisor, 也是通过这个拦截器啊,让拦截器自动地帮我们进行查询,然后将查询到的结果呢发送给它模型。那我们可以通过一个叫做 question, qu question, 我 看一下笔记吧,这一块 叫做这个叫做这个 question。 好 吧, answer advisor question。 哎,这个 question 我 有点突然 q u e s 我 就不信了, q u e s 题 q u e s 题,没错没,没有拼错啊, 没有对不对?那是为什么没有呢?其实啊,是因为我忘了找这个依赖。好吧,那我们如果要接入 child client, 那 就需要结合这个 advisor 去用,我们需要加入这个依赖,好吧,别忘了 我说这个 question 不 至于,我拼了这么多次都拼不出来,对吧?刷新一下依赖吧, 好宽,还是没有,是不是我家的依赖?没错啊, 再刷新一下 q u e e, 这就好吧,所以大家遇到这种情况,那我们只有用重启大法了。 好,重启完成之后,我们再来输入 q u e s t 也就有了,对不对?你看它就是有点贱啊,需要我重启一下。那么通过这个 build, 那 此时呢,我们需要传入一个这个,呃,向量数据库,我们就把它传进来, ok, 那 传进来之后呢,我们 调用它的这个 such request 来进行查询,因为这里呢,我们需要设置查询的一些方式,呃,比如说 top 级,对吧? top k, 我 看一下。这里呢,我们需要给它提供一个 such request, such request 构造器, 然后呢给他去设置点 topk, 比如说你要几个?好吧,通常我们设置个五个,十个就够了,不要设置太长,因为这些内容都会都会发给他模型,你设置太多,那可能就会导致 topk 上限,对不对?还有呢,设置这个,呃,分数,分数的话,我们建议设置个 五点零左右,不建议设置太高,因为太高的话可能解锁不到数据。 build, 然后这里呢也 build, ok, 那这样呢,我们就结合查的 client, 让它自动地帮我们将当前的这个内容啊,根据当前的这个内容呢,自动地去查询向量输出, ok, 来,我们运行看一下,然后会将查询到的结果啊一起发给大模型。 哎,这里报错了,我看一下,他说必须是。呃,我是这个哦,五点零五,零点五啊,好吧,怎么设置五点零啊? ok, 我 们看一下,你看他现在就是不是就查询到了,对不对?当然我们在开发的过程当中可能会想,他到底有没有查到内容发给他模型呢?还是说他把所有的内容都查到了发给他模型呢? 对不对?其实这个时候呢,呃,我们可以打开对应的这个呃日知记录,好吧,我们可以看一下它里面有没有相关的。呃,日知这个里面并没有。 那其实呢,我们也可以打开一下,看它里面有没有提供一些日历出来,我们可以通过这个 logo 点 lift, 然后呢设置这个 设置,它设置它的日历级别。对于 bug, 我们看一下它有没有提供什么一些有意义的信息给我们。稍等啊,我好像配错地方了,这是我们最早期的这个 quickstar 配置在这个地方。 ok, 来我们看一下, 我们可以看到这个 advice, 它其实并没有什么任何的日制记录,对吧?所以我们如果要查看相关的日制的话,还是得通过那个 simple log simple logger advisor, 好 吧,通过它呢来去看到底查到了什么内容去发给他模型的。 ok, 那 么我们 此时当然这个 simple log 它的这个日期呢,我们也要给它提供一下,对不对?我直接提供它的吧。 ok, 然后我们再来请求看一下。 好,我们可以看一下它这里 request, 我 们就可以看到发送了什么内容给大模型,那这一块呢,都是我们发给大模型的内容,对吧?还包括下面呢。呃,我们通过这个 是不是通过这个 answer question 这个拦截器,对吧?提供了什么内容给大模型?包括,呃,这两个查出来的 document, 它们对应的分数是多少?比如说这个它有零点六分,对吧?那这个呢?零点五分,所以都超过了零点五分,所以呢都提供给了大模型。那么, 呃,如果我们想再精确一点,比如说你把这个预定的想给他过滤掉,对吧?我就把这个分数呢提升到零点六,那么他就只会发那个取消预定相关的信息给他模型,对吧?你看,你看在这里, 对吧?这个 request 里面,它是不是就只有取消预定了,对吧?因为只有取消预定呢,它才符合对应的这个分数啊?零点六,对不对? ok, 所以呢,我们在日常开发当中,假如说你不确定最终有没有解锁到相似性数据发给大模型,你就可以通过这个日制的方式来去查看,好吧,假如说没有发给大模型, 那你就可以去分析到底是解锁,比如说分数太高了,还是说根本就没有存储到向量数据库,你就可以从这两个方向去分析,对不对? 那有没有存储到向量数据库呢?其实你在存完之后给他查一下,其实就能知道对不对?所以说如果那模型的回答并没有按照你的解锁增强来进行回答的话,大部分情况都可能是你的这个解锁方式, 好吧,也就是你的这个分数啊,或者说你向量模型通过向量化出来之后呢,它的内容质量本身比较低,有可能呢也会导致解锁的精度比较低,好吧, 来我们继续啊, rock 还没讲完啊,在我们之前重点呢主要是放在怎么把向量之后的这个数据呢,存储到向量数据库,然后结合我们的 chat client, 在 对话的过程当中呢,通过这个 advicer 把我们当前的对话内容给它拦截下来,去向量数据库当中呢,进行相似性的解锁,然后再把解锁到的内容一起发给它模型来进行对话,这就是解锁增强。好吧,但是我们之前存储到向量数据库当中的数据啊, 我们是不是在程序当中直接写死的?但是在我们真实的一个企业的应用开发的时候呢,这些数据它有可能呢会在各种各样的一些文件当中,可能会在 java 文件,文本文件, html 后台 offer 文件,对不对?包括可能会在数据库里面,所以我们肯定不能说直接现在就结束了。 那么在文件当中呢,就会用到这个所谓的 e l t, 它是 spring ai 提供出来的一套这样的抽象标准,那就包括了读取文件,好吧,怎么去分割文件以及写入文件, 那读取文件就很容易理解了,对吧?首先呢,我们就可以通过 spring ai 提供的各种各样的文件读取器,把这个文件给它读取过来,那么读取过来之后啊,你不能直接把文件当中的内容直接进行向量化,因为 首先第一个文件当中的文本内容太多了,最终呢,有可能就会导致我们的托管上限,对吧?第二个文本文件当中的内容,他有各种各样的主题,最终你存入到项目书库当中,我们进行剪辑的话,有可能这个精度包括这个分数啊,他就提升不上来。 ok, 所以呢,读取完之后,我们要进行分割,把它分割成一个一个的片段,一个一个的 chunk, 好 不好?然后再针对每一个片段呢进行向量化,最终进行写入。 ok, 那 么一个一个来讲一下它们的过程。首先是这个读取, spring i 呢,提供了各种各样的读取器, 那包括 jason 文本, html 啊, markdown, pdf, 对 吧?还有通过这个第三方的 take, 那 么就可以去处理 office 文件吧, html 等等。那当然, spring ai 阿里巴巴它也扩展了一些读取器,包括,呃, pdf 的, html 的, 对吧?包括 pdf 里面的一些表格啊,各种各样的, ok, 反正 那我们呢来用几个,好吧,用几个,比如说 txt 文件啊, markdown 啊,都带着大家来测试一下。 ok, 那 用起来是非常简单的。我们来首先来读取一下这个 txt 文件,好吧,先把这个代码给它复制过来, 我们来新建一个测试类啊,我们就 e l t。 然后呢,呃, read, read, text, text 啊,点啊点。然后呢,我们加上 springboard test。 首先呢,我们来测试一下这个文本,那首先我们需要有一个这样的文本文件啊,呃,我从别的地方啊给它复制一下过来,好吧, ok, 我 复制一下过来,直接复制到这个,呃, test 里面吧, 我新建一个这个 resource 啊,好吧,然后呢,把这些文件复制到这个 resource 里面,里面就包括了 markdown 的 文件,还有 txt 的 文件,以及 pdf 的 文件,好吧,还有 ppt 的 文件,我们都可以看一下。 呃,那首先呢,就是这个 txt 文件, ok, 那 我们就可以直接啊通过这个 at value 注解,那把它加载为一个 resource 对 象, ok, 嗯,当然你也可以通过这个类加载器的方式,对吧?比如通过 this 点呃 class, 对 吧?然后呢 get, 呃,溯思对不对?通过类加载器的方式去加载文件也可以。呃,如果呢?呃, spring, 通过这个 add value 注解,加载起来就更加的简单了,是不是? 然后呢,我们就可以通过这个 t s t reader, 它就是 spring ai 呢,提供出来的,专门用来读文本文件的。 ok, 那 么我们调用它的 read 的 方法就可以去读取这个资源文件,那么读过来呢,它会返回一个这个 document 的 list, 好 吧,那这个 document 呢?我们引用的肯定是 spring ai 这个包下面的。 ok, 那 完了之后呢,我们可以来输出看一下,当然我们现在啊,默认还没有分割,那它肯定就只有一个 document, 对吧?它就一个 document, 然后会把里面的这个,呃,把里面的这些信息呢直接输出过来,这个没有 什么难度,对吧?我们再来看一下 markdown, 有 了 defi, 为什么你还要用 spring ai 去开发知识库系统呢?那最近我讲了一个基于 spring ai 的 企业及知识库系统,那有同学就来问我,为什么有了 defi 这种 ai 工作流平台 本身就带了知识库,为什么你还要用 spring ai 字局写代码呢?我来回答一下这个问题,因为很多同学学完这个项目之后,有可能就会包装到自己的简历当中,那面试官他也有可能会问到这个问题, 有了 def, 为什么你还要自己去开发知识库?那我觉得呢,有这四点原因。第一,假如说你的支付系统需要跟你已有的业务深度的集成, 比如说你是一个航空系统,你需要通过对话当中,你只能通过 a p i 编排的方式呢?去远程的访问我们的 http 接口,那一个两个还好,假如说有大量的接口需要去访问,那这个庞大的访问网络,每一个远程的 u i l 地址都需要维护在 define 当中,这可以说是非常麻烦的。但是如果我们用 spring ai, 它是不是就可以 无缝的集成到我们微服务的 netflix 当中了?那么如果我们要去调用另外一个服务,它的业务接口是不是就非常的简单了,并且性能肯定也更高,更佳的 所痛,并且我们也可以非常灵活的自己去执行自己所需要的一些业务代码逻辑,比如说访问数据库啊,访问自己系统的用户信息啊,那如果你之前用的 defi, 你 要跟自己系统当中的用户打通,用同一套用户,虽然他提供了实现方式,但是你自己试了就知道, 其实还是会有很多问题。首先呢, define 的 权限它是应用级别的,也就是我虽然我可以用我自己系统的用户,但是如果我在这里上传了一份资料,我想根据不同的用户呢来去控制这份资料的访问权限,就比如说这份资料里面有所有员工的工资表,那普通用户它能随便访问吗?但是这个 在 define 当中是非常难以满足的,那如果我们是自己通过 spring ai 去实现的支付系统,我们就可以通过向量当中的 metata 来去对应用户的角色,那这功能呢?我也会在我的这个支付系统当中带着大家去实现, 我们根据不同的用户来去控制资料的访问权限。那第三点呢,就是如果我们要自己去定制一些个性化的分片策略,或者一些知识库的解锁策略,比如自定义分片、自定义混合解锁、自定义多路招回,我们不仅想解锁向量数据库,我们可能还想解锁 es, 解锁图数据库, 解锁关系型数据库,或者我们想自定义同排序。那这些个性化的 red 功能在 dfi 当中是无法实现的,它只提供了一些通用的功能,比如 比如说分片策略,它提供了通用的分片策略,还提供了父子分段,那除此以外呢,就没有了。所以如果你想实现一些更加灵活,更加自由的适合我们业务的 red 流程,那肯定我们自己实现的会更加的合适。那第四点就是关于它的技术栈跟我们现有这套流程的适配性。那假如说我们公司本身就是以 java 技术为核心的团队,公司当中呢,已经有一套非常成熟的 基于 java 的 fops 开发运为一体化,而 def 呢?它是基于 python 开发的对吧?因为虽然你用 def 是你多多少少可能会涉及到一些二开,包括运维部署,你都需要维护一套新的,所以这就会增加你们公司团队的一个学习或者人力成本。所以这就是为什么我们要自己去开发企业级支付系统的原因。那在这个企业级支付系统当中, 我除了会带着大家去实现最核心的基于 red 的 问答以外,我还会带着大家去实现最佳的一个分块个人包括跨向量的聚合解锁,以及如果资料过期了怎么去更新,怎么在解锁的时候提升召回率。 怎么解决? reg 问答的胡编乱造问题怎么解决?我们在进行 reg 问答的时候获取资料的来源,怎么去控制访问的权限和安全?那想要学习的同学可以联系我, nice。

minor u o c r 刚发布了三点零版本,本次更新直击痛点,支持 word 文档原生指出 mark 等不再需要先转 pdf, 速度提升几十倍,且杜绝了幻觉内容。旁文档上了滑动窗口机制,上万页也不爆内存。 另外去除了受限的 g p l 模型,新增了多卡路由,覆盖均衡。下面直接进入从零搭建这套自动化流水线的实战教程。首先是环境准备的红线要求, 电脑内存十六 gb 起步,推荐八 gb 以上显存。这里有个致命坑点, windows 环境下绝对不能使用 python 三点一三,否则一定会报瑞依赖错误 导致安装彻底失败。 windows 用户请严格遵守要求,只能使用 python 三点一零到三点一二之间的版本。基础安装推荐用 conda 创建三点一二之间的版本,基础安装推荐用 uv 工具配合国内阿里云镜像源。一键安装。没得入,全家痛 照着敲这三行命令速度会比常规 pad 快 很多。安装完成后的必做步骤, mind you 首次运行需要下载大约两个 g 的 模型,很多人卡在这里,因为默认连接 hugging face 一 直超时失败。你必须通过设置环境变量,把模型员切换到国内的 model scope。 不 同系统的命令都在屏幕上了,建议大家直接把它写进系统环境变量里,一劳永逸。装好之后直接在终端实操 解析上,文件使用 miniro, 点 p 指定路径简 o 指定输出目录,不管是 pdf 还是 word 文档 都能直接抛进去。如果你要处理整个文件夹,只要把路径改成目录,系统会自动识别并进行混合批量解析。如果没有显卡才命令,最后加上减 b 拍出来就能强制开启纯 cpu 模式,实测精度依然极高,完全够用。 执行完毕后,在输出目录下,你会看到干净的 markdown 文件、结构化的 jason 以及自动裁剪好的图片文件夹,所有的排版、 latest 框、公式和表格都会被自动处理好。 如果你需要批量处理或者集成到自己的业务系统 api 模式更合适。直接执行这条 manual pe 命令,指定 host 为零点零点、零点零和端口八千就能在本地启动一个高性能的解析服务端点。 现在我们来写一个自动化的派送脚本,核心逻辑分为四步,首先让脚本监控再处理文件夹,一旦发现新文档,就调用 task 接口提交一步任务并拿到任务 id。 接着每隔几秒去查询任务状态,最后等状态显示完成,自动 把文件往文件夹里一扔,结果就自动出来了。这里要特别提醒一个内存避坑点,三点零虽然有滑动窗口机制, 但在十六 gb 这种主流配置的机器上,如果你同时并发处理多个超大文档,内存还是会爆掉。所以刚才说的脚本一定要走异步排队模式,让 a p i 逐个解析文件。这种顺序处理的方式,哪怕文档有上万页,也能保证系统跑得非常稳。 如果你手里有多张显卡,三点零新增的 minor rotor 能让你的吞吐量直接翻倍。配置分两步,先分别指定显卡序号, 在不同端口启动独立的 api 服务,然后再启动 router。 挂载这些后端地址以后,你的请求只需要打给八千端口, router 就 会像调度员一样自动把任务派给当前最闲的那张显卡。最后说下商用合规。 minoru 三点零已经移除了所有受限的 gpl 模型,整个项目基于 a gpl v 三协议。如果你是在公司内部搭建知识库使用没有任何合规风险。 但如果你打算把它包装成 sex 产品对外卖钱,那就必须遵守开源传染协议。这就是三点零的全部实战内容,建议大家动手复现一遍。

同学们无需复杂配置,简单三步在阿里云服务器上快速部署买车口,今天带你用 doker 实现买车口的一键式部署。与持久化的配置相关的详细的脚本和时间案例我都已经整理好,如果有需要呢,可以直接来找我要。第一步呢,我们是环境准备和安全组的一个配置。 首先我们登录我们 e c s 阿里云服务器,确保已安装好多克扩展程序,如果你没有安装好的话,我们就点击前往扩展程序去进行安装。同时在安全组里面设置开放 三三零六这个端口,这个是我们买车口默认的端口,如果你有了具体的一个变动,比如说你从三三零六改成三三零七,那你就开放三三零七这样的一个端口。 同时呢,我们检查一下防火墙的一个设置。做完了第一步之后,我们就来到了第二步, docker 容器化的一个部署, 主要就是执行核心的部署的命令,命令比较长,它会跟很多的参数,我们一一来解释一下。第一个呢, docker run 是 docker 的 具体的一个命令来执行后续的内容。 杠屁的话是设置我们具体的买收口的端口映设。接下来杠杠链,买收口是设置我们这个容器的具体的一个名称,后面像这一些路径都是去设置我们具体的买收口的数据放置的 linux 环境下的一个路径。 再接下来杠 e 去设置我们 root 账号的密码。再接下来就是我们杠 b, 杠 e 呢是数据持久化的一个挂载,它主要的目的呢就是避免容器删除之后数据的一个丢失。 最后呢我们又跟了这样的一个参数, utfmb 四这样的一个参数,这个是用来干什么的呢?这个就是设置我们数据库的默认支付集, 那我们就来执行具体的这样的一个命令,执行完之后,我们的容器对应的拉取和部署就已经完成了,那我们就到第三步连接验证与优化配置。 我们首先通过 docker ps 杠 a 命令来查看我们具体的这个买收口的服务,这里呢大家可以看到它的 status 状态是 up, 也就是启动起来了,然后它的这个端口三三零六也是我们刚刚设置的这个端口, 那证明我们这个 docker 部署它就是 ok 了。那我们再通过 docker docs 买出口来看它的运行的日期,我们就可以看到买出口这个容器 它具体的一个执行的日期,那我们就正式的来连接我们这个部署。好的买出口连接呢,我们使用我们 navycat 这样的一个工具, 我们新建具体的一个连接,然后去输入我们的 ip 端口用户名密码,输入完了之后呢,我们点击测试连接, 连接成功,点击确定,然后我们双击打开,我们就成功连接上了阿里云服务器上部署的买收口, 至此的话,一个支持持久化定制配置的买车的实力就已经在云端就绪了。多客部署呢,不仅简化了安装流程,更为后续的版本升级和迁移提供了一个便利。那么你在多客部署中有没有遇到过什么坑?一起来分享一下你的经验。

挑战零基础学会网络安全第十天二点一, linux 软件安装警告本教程制作耗时一千六百八十小时,共计五十六分钟,讲解网络安全。 linux 软件安装包含软件安装逻辑、脚本与程序区别、主流安装方式,掌握 linux 软件安全管理核心 适配渗透测试环境、部署版本、合规场景。同时为了保证学习效果,学习网络安全需要的软件工具、路线文档笔记、 视频教程、攻防靶场、攻防技术书籍以及面试宝典弹幕,六六六即可自取。最后有什么问题欢迎评论区交流,老林随时在线陪跑答疑。接下来我们正式进入课程,这节课我们来学习 linux 平台下的软件安装,内容包括,第一个,给大家解释一下 软件为什么必须要安装才能使用,那么为什么有些软件他又可以不安装呢?第二个,脚本和程序的区别,为什么有一些代码他不需要翻译就可以使用,而有一些代码呢,他必须要翻译才能使用?第三个, 在 linux 安装软件,我们常用的方式有哪些?这个区分不同的平台。第四个, sonos 安装软件的案例,这个方式也有很多啊,我们给大家去演示主流的一种。第五个, linux 软件版本的管理,比如说 jdk 或者 python 或者 my secret, 它有多个版本要同时安装在我们的操作系统里面,我们怎么去切换它的版本? 第一个,软件为什么要安装呢?我们从 windows 的 软件安装的流程带大家去回顾一下啊,为什么有一些软件他必须要安装了以后才能使用,而有一些所谓的那些什么绿色版呀,便携版,他是可以直接双击启动的,或者说大家得思考一下, 一般的 windows 的 软件,他在安装的过程里面到底做了什么事情呢?我们给大家概括总结一下啊。第一个就是你在双击的时候呢, 他会执行一个安装的检查,比如说跟你的这个操作系统的版本是不是兼容,你的这个主板的空间够不够?是不是已经安装过了一个旧的或者更新的一个版本?第二个呢,他会把这个 压缩包里面的安装文件给他释放出来,而且呢有的还会联网去更新一些内容,比如说联网去下载一个数据库啊,那个 ex 是 一个打包文件,是一个打包的文件。 第三个他会去复制一些可值可执行的文件到系统的特定的目录,比如说我们比较常见的是安装的那个 program files 这样的一个目录,是吧?好。然后第四个他会去把 依赖的一些 d l l 的 动态链接库复制到操作系统的目录,这样它就可以自己去使用了,有的还会去安装一个服务,什么叫做服务呢?比如我去点一下我的 windows 的 左下角那个 windows 的 图图标,然后输入一个服务, 打开这个 windows 操作系统的服务。哎,那这里面这些服务是怎么来的呢?就是他们在安装的时候注册进去的啊,比如说 vm 二, vm 二它有几个服务呢? 有五个服务,是吧?都是安装的时候注册进去的啊,而且呢它能够做到开机自启,这个都是在安装的时候做的,如果你你你不安装的话,这个就是做不到的,是吧?实现不了。 第五个向系统的注册表写入相关的信息啊? ok, 也就是我们的这个程序的信息啊,比如说他的这个安装相关的内容,你到时候如果要在这个控制面板里面要去卸载他的话呢?因为你注册了才能够在这里面去找的到的,是吧? 所谓的那些绿色软件、便携软件是没有的啊,他不写,不写注册表。第六个他会在你的电脑里面去创建一个开始菜单,比如这个地方啊,我点一下大家能够看得到的 左边的这些,这个叫做开始菜单,还有你的桌面的快捷方式,为了让你方便的去启动它,是吧?这个就是我们的 windows 平台里面的软件的安装的常规的流程,也就是说安装的时候我们到底做了什么呢?它是配置了我们的软件运行的过运行的环境, 所以我们只要安装一次就可以了,后面就可以直接启动这个已经安装好的程序去使用。为什么那些那些绿色软件、变形软件不需要去安装呢? 说明他们对于环境的依赖很低,他不需要去把他的文件复制到特定的目录,他不需要去复制动态链接库,不需要安装服务,不需要去写注册表,也不需要去给你创建开始加载和快捷方式,这些他都不需要做,所以他就 变成了一个有可能就是一个 ex, 一个绿色的文件,是吧?比如给大家看一个啊,我们有一个这样的程序, 它是一个 ex 的 文件,你不需要在任何时候去安装它,直接双击它就启动了,是吧?在你的这个服务啊,注册表那些地方也找不见它 好,这个启动稍微的有点慢啊,只是给大家演示一下。那么在 windows 里面,我们的安装程序它长什么样子呢?现在才启动成功了, 最常见的两种就是一个点 m s i 的 安装文件,是吧?比如这个 my secret, python, 还有这个 everything 的, 它们都是一个 m s i 的 安装文件,还有呢?然后更多的当然是这个点 exe 的 安装文件了,比如说这个 get 的 安装文件, idea, launch for example, navigate, pachum, reddit, desktop, virtualbox vs code, 那 这些都是常规的安装的文件,安装好了以后呢,它就会在这里啊,在我们的这个 安装目录里面会释放出来一个 ex 的 可执行程序,后面我们启动肯定不是不是在启动这些东西了啊,它是这是一个打包的文件,它里面包含很多的东西,你如果再双击它,它又会启动一次这个安装的流程,所以我们去使用的是这个啊, 安装目录里面的这个可执行程序去启动我们的应用,这个是 windows 平台里面的, 在安卓操作系统和 ios 的 系统里面也是一样的,你要去用一个应用,你是不是要去安装那个 apk 或者 ipa 这些安装包安装好了才可以使用,是吧?我们的命令操作系统当然也是一样的了,本身它是已经有自带了很多的程序的啊,就是在这些目录下面, 我们可以使就开机可以使用的那些命令,他其实就是就是一个程序,是吧? 而且呢,他放到了这样的一个目录下面去,那我们就不需要去找这个程序了,可以直接去使用这个命令,比如说这个是 root 可以 使用的相关的命令,这个是普通用户能够使用的一些程序,或者我们自己去安装也要安装到这些目录下面。 ok, 大家要注意一点啊,就是 linux 跟 windows 操作系统有个很大的区别,是什么呢?你看它的这个安装文件也好,可执行程序也好,它是有这个扩展名,有一个点 esc 的 后缀的,是吧?但在 linux 操作系统里面并没有,并没有这样的一个要求, 就只要这个文件呢,它有可执行权限,它就可以执行,不管它是点什么,或者有没有那个点什么, 那个扩展名都是可以的啊,他操作系统他是通过文件头来识别文件的类型的,只要有可执行权限就可以。好, ok, 这个就是我们为什么要去安装软件,那么在 linux 操作系统里面当然也是一样的了,他也有一个配置的过程吗?只有你安装好了才可以去使用它。 第二个我们来看一下脚本和程序的一个区别,哎,就是我们现在得思考一个问题啊,比如我去找一个什么什么的,一个 python 脚本 dns, 好 吧,比如这个 stress 的 一个 python 利用的脚本,它不管是在 windows 的 平台里面,还是说在 linux 的 平台里面, 我们都可以直接 python 加上这个文件名去运行它。为什么呢?就这个东西它为什么不要,不需要做成一个 exe, 或者不需要做成一个 linux 的 点 elf 这样的可执行程序,然后才能运行它呢? 它不需要翻译的。这里大家需要了解一下我们常见的不需要翻译的那些呢?我这种东西,我们把它叫做脚本啊,脚本语言,比如 javascript、 python、 ruby, 我们看到的是源码,而且交给操作系统去运行的呢,就是这个源码的文件。但是那些 其他的变成源,比如 c、 c 加加、 swift、 混合零、 go 呢?它们的源代码必须要经过翻译,要变成另外一个二进制的程序才可以去执行。比如说 c o、 c 加加,我们我们是不是要把它制作成一个 ex 的 文件,然后在 windows 里面才能够去运行的,是不是?那么在 另一个操作系统里面,我们也需要用相应的一些翻译工具,比如 g c c 啊,或者 micros 里面的 g n u 的 这样的翻译器 翻译工具,把它翻译成一个可执行的程序,在操作系统里面才可以去执行的,是吧?那他们的区别到底在哪里呢?这个其实就是所谓的解释型的编程语言和编意型的编程语言的一个差别。 对于这种翻译型的编程语言来说呢,他翻译他其实是做了什么呢?是这个,他其实是把 那个元代码翻译成了计算机可以理解的指令。所以我们得到的那个 excel 的 文件呢,它是一个二进制的文件,计算机能够识别里面的指令,所以它运行起来很快。但是对于这种解释型的脚本语言来说, 你看到这个东西就是这个东西操作系统去执行的时候呢?是从这里开始的,是吧?所以你你,你要让计算机能够识别他的话, 你是不是必须要把这个东西做一个解释呀?也就是他是一边解释一边去执行的,否则的话,因为计算机他只能识别机器语言,他不能识别高级语言的。所以从运运行效率上面来说,肯定是你先已经给我做好了这个翻译,翻译成了 机器语言,计算机可以识别了我,我就可以马上就跑了,是吧?这种效率就低了,这种效率高。按你这样说的话,那我为什么还要去发明一个这个脚本语言呢? 我都让他先翻译,再交给计算机执行,那不更快吗?注意啊,各种编程语言的类型,当然有他的各自的应用的用途的啊,我们因为我们不能,也不能只看效率。对于这种脚本类型的编程语言,他的一个优势在哪里呢? 它不需要先翻译,也就是翻译成目标平台的那个可执行的格式,比如说 windows 里面的 ex 一, linux 里面的对应的可执行程序,也就是你你把这个东西交到对应的操作系统里面,它都可以去执行,它有一个在各个平台里面它的一个解释器, 所以这种脚本语言它的性能虽然弱了一点,但是它的跨平台的能力更强。你把这个 java、 sql 吧,放到 micro os 里面,放到 windows 里面,放到 linux 里面,它都是一样的跑,这个 python 也是一样,对吧?我们看到效果就是这样的,在 micro os, 在 linux, 在 windows 里面都是一样的跑,它的跨平台的 特性更强。好,有没有?还有一种特殊的,比如大家为什么没在这里看到写这个 java 呢? java 变成圆这么这么流行, 他是介于这两者之间的啊,就是他不是纯粹的解释型,也不是编纯粹的这个编辑型。为什么呢?首先他是需要编辑的,是吧?我们要把这个 java 的 点 java 的 元代码的文件去翻译成一个点 class 的 文件。哎,但是你这个 class 的 文件 它能被计算机直接识别吗?不是,它不是机器语言的内容啊。注,注意,它的那个东西叫做字节码文件,那这个字节码文件你必须还得做一次翻译, 那计算机才能识别,是吧?所以呢,它又结合了这个解释性,那谁给他解释呢?我们就把那个东西叫做 java 虚拟机, java virtual machine, 不同的平台里面都有不同的平台的虚拟机,比如说 linux 有 linux 的 虚拟机, windows 有 windows 的 虚拟机,不同的平台的虚拟机去负责 把相同的那个字节码文件翻译成对应操作系统的计算机可以识别的指令,你看是不是它要先翻译,然后再由那个 jvm 去解释执行啊,所以我们可以把它理解为是半翻译 半解释型的编程语言。好, ok, 我 们现在了解了脚本和程序的一个区别,大家来看一下,在 linux 操作系统里面,我们安装软件一般有哪些方式呢?大家可以回想一下啊,就如果你之前对 linux 操作系统有简单的接触,你是一般是用什么样的方式去安装软件的呢? 可能各种各样的方式都有,是吧,我们常见的啊,第一种,用源码去翻译,用 make 这个命令去翻译,得到一个可执行程序,那就这就是自己动手了啊,就像就打个比方,你想吃面包,那你就自己去 买面粉,自己去做面包,就这种方式好。其他的呢?有 r p m, 其他平台的还有 d、 b、 yam ap、 t doc, ok, 它很显然后面的这些方式,它们都比这个原码编音的方式省时省力啊,因为它们是我们可以把它理解为是一个 安装的工具,专门用来帮你去安装软件的东西啊,他这个是经过设计的,而且经过了这个迭代升级发展,肯定是很好用的。好, ok, 那 么这些方式是不是在所有的 linux 操作系统上面都可以用任意一种方式呢?不是的, 在不同的平台上面啊,还是有区别的。 ok, 好, 当再补充一下啊。其实还有现在有越来越多的人会选择用 docker 去安装一个程序,是吧?我们在前面的课程里面也介绍了 docker, 比如我现在的场景就是我要去安装一个 tomcat, 我 要去安装一个 my secret。 用 docker 其实更简单,也就是一行命令的事情,是吧?而且用完了还可以销毁,甚至我们去安装一些靶场的 环境的时候呢,用刀可啃,只有他能做到,他把那些依赖的东西全部都做进了,做进去了啊。 ok, 好, 但这个不在我们今天介绍的范围之内了啊,我们主要是了解一下那些我们常规意义上面的一些程序,而不是那个一些复杂的,比如包括操作系统,包括外包靶场那些东西。 ok, 我 们现在来分一下, 对于常见的类型,操作系统发行版本呢,我们我们可以按照他们的这个派系 去做一个分类,比如说第一类呢,是 red hat 红帽派系,包括 red hat s fedora, 它们的常用的安装方式包括源码编码、 r p m 的 包, yam 的 包,还有 d n f, 这个 d n f 不是 地下城与勇士啊,是基于 yam 升级的一种安全方式安装方式。第二个呢, devon 系, kelly 和乌班图都是属于这个啊,他们的常用的软件安装方式是用这个 d b 的 包,还有 a p, t, d p, k g 去安装。第三个是 freebsd 好, 它又有特别一点啊,其实我们最最最最主要的还是去学习这个样的方式, 然后因为开立和乌班图有一些同学都可能会用的到啊,那你只需要去简单的了解一下 apt 就 行了啊, apt 就 行了,这个 rpm 和 d 一 d 一 b 的 这种安装包的方式我们都抛弃了,这两个东西都更加的 自动和智能化。好,现在我们来看一下啊,我们先简单的介绍,到最后我们再介绍一下,因为我们学习的操作系统主要是 centos, 我 们再看一下 centos 里面安装软件的案例。 第一种方式呢,那么对于基本上对于所有的 linux 的 发行版本都是支持的啊,源码翻译就你自己动手嘛,你自己去烤一个面包, ok, 源码安装的流程会包括这些, 首先你要去下载到他的原码包,当然这个肯定是针对那些开源的软件啊,如果不是开源的软件,没有没有这一步呢,他也不可能给你一个自己去变异的一个机会了,是吧?开源的软件你会有他的原码下载下来呢,他是一个套儿包, 我们在前面已经学了这个怎么去解压缩是吧?把这个压缩包给它解压出来,放到指定的目录,然后要去配置,比如说你的这个程序要安装到哪里去? com mac 进行翻译升级,生成了一个可执行的二进制的文件, 然后 mac install, 把它复制到操作系统进行配置,它的环境好, ok, 这个时候我们就可以使用了。原码安装呢,有一些特定的场场景我们可以去使用啊,这个我就不在课堂里面演示了,但是在我们课程里面提供的那个资料,我们是有 两个案例的,在安全课程资料下载这个里面,课程资料里面有一个教程合集,这个大家一定要下载啊,下载里面里面有两个,一个 simple s 去安装 radis, 还有 simple s 去去安装 nintix 这两个文档我现在给大家打开看一下啊, ngx 可能大家不一定会用的,但是这个 radis 啊,在我们后面讲那个未授 radis 未授权访问的漏洞的时候,大家必须要去安装搭建这个环境, 当然这个 radis 的 版本可能现在已经升级到七的版本了啊,如果大家想要去把这个漏洞复现出来,还是可以用六的这个版本,我们打开来看看,这个就是一个典型圆满安装的方式,给大家简单的过一下啊。 首先第一步是不是在 reddit 的 官网去下载它的这个源码的程序包,是吧?它现在官网做了一个非常大的升级改版啊,我都有点认不出来了。这个时候我们要去下载软件,怎么去下载呢?来试一下啊, get started reddit, 嗯,然后 get started, 打开了它的文档,好,然后看一下啊, 这里面有一个 install linux linux, 它也提供了这种 a p t 的 安装的方式是吧?好哎,这里有一个 install from source, 从源码的方式去自己编辑安装,那么第一步也是这样的,它现在把这个最新稳定版本呢,统一放到了这个链接, 用 wget 把它下载下来。 tab 杠叉 z v f f 这个命令我们已经学过了,是吧?把它解压出来,好进入到这个命令 make, 然后 make install 它,它省略了那个配置的过程,因为不一定需要去配置,那不配置的话使用的都是默认的好,然后 这个就是翻译出来的那个可执行的程序,用它来启动服务端,好吧,跟我们讲的这个大差不差的是吧?好,这个流程呢,大家也可以去看一下, 一般还是用的比较少的,因为大部分的软件都可以用我们刚才讲的那种软件安装工具一键搞定。 第二个呢,在红帽派系里面,我们比较常用的是这个 rpm 的 包,叫做 red hat package manager, 我 记得我刚刚毕业的那那几年是用这个,真的是用的非常多的啊,比如说你看我在我的电脑上面去搜索了一下这个 pcona, 一个 my secret 的, 可以给 my secret 去做数据备份的一个程序啊,也是 my secret 的 另外一个分支。 还有什么 easy, rsa, open vpn, 什么 pptpd 这些 rpm 的 程序呢?它都是在红帽派信里面 的一个安装包,注意,这个里面这个本质是什么呢?它已经包含了那个翻译好的程序,也就是说你不用自己去手工去翻译了,免去了你翻译的麻烦。它的全名叫做 right height package manager 啊,注意是 安装包的管理工具,就这个东西发明就是为了帮你去安装程序用的。它只能用在红帽派系里面。 redhead 啊,所以它的简称叫做 rpm, 我 们来看一下,如果我们要用 rpm 的 方式去安装软件,我们是怎么做呢?那第一步肯定是先要把这个程序下载下来,是吧?下载到你的那个 linux 操作系统的服务器上面去。好,然后我们怎么去安装呢? 提供给大家一些常用的选项去了解一下啊,比如我要去查询,我看一,比如我看一个包有没有安装,有没有一些之前的旧的版本,用 rpm 杠 q 加上报名,比如 my secret, 我 们可以试一下啊, rpm 杠 q, my secret 好 了没有是吧?他没有安装 r p m 杠 q a 呢?那就是搜索所有的安装软件,所有的安装软件啊,那我我电脑上面已经安装了这么多的软件。 q 是 query 的 意思。然后第二步,我们如果要去安装一个软件呢?用 r p m 杠 i v h, 那 么这三个选项是什么意思呢? i 代表 in store, v 代表 verbos, 详细的嘛,把这个安装的流程打印出来, h 是 哈希显示这个哈希的标记啊,我们一般都是用固定的这个三个选项去安装一个程序啊,比如我现在试试啊,在我的这个虚拟机里面,它到底有没有之前已经存在的一些 rpm 的 包杠 name 点 rpm, 把所有的 rpm 的 包都找出来,看看有没有多少好,特别的多,是吧? 因为说到本质啊,我们接下来说的那个亚姆也好, dnf 也好,他们他们都是对这个东西去做了一个升级,就他们是层层递进的啊, 这个东西包包含了那个翻译好的工具啊。然后那个亚姆呢和 dnf 又是利用了这个 rpm, 它它其实它只是会自动下载这个 rpm 的 程序而已啊, 不用我们自己,我们自己去下载了,然后升级的话呢,用这个杠大写的 u 代表 upgrade 或者 update。 卸载的话呢,用杠 e remove rpm, 杠 e 把一个什么什么卸载掉,因为我们有了样以后,这个 rpm 基本上不会用了啊,这里我们也, 我们也不演示了, ok, 我 们用了这个 rpm 的 所谓的 red hat package manager 叫做软件包管理工具,之后呢, 安装肯定方便了很多了,是吧?我们不需要自己去翻译了,什么 mac 啊, mac install config 这些我们都不要不要去做了,但是还是有一个问题,什么问题呢?就是这个 rpm 它不能解决 软件包之间的依赖关系的问题,也就是说,如果我们在安装一个软件的时候呢,他依赖于其他运行的, 依依赖于其他的这个软件,那这个时候我们就必须要先去下载其他的 r p m 棒好,然后如果这个 r p m 又依赖于别的 r p m 的 棒呢?他又要去,你要又要去先下载这个 r p m, 有 可能这个依赖的链路就非常的长,而且呢,他有可能不仅仅依赖一个软件,那你为了安装一个软件,你就 下载了一堆 r p m 的 吧,你会你自己去下载,你就感觉非常的麻烦,是吧?而且反过来呢,如果你要去卸载一个被其他的软件依赖的软件呢, 他会导致其他的软件不能正常运行,或者或者说你就是你如果要去卸载一个软件,你要你要先保证已经没有人 依赖他了,才可以去写的,否则的话就报错,所以呢,我们得需要一个更加自动化的,智能化的安装的程序。打个比方,我现在要安装一个软件呢,他首先依赖了其他的五个软件,然后这五个软件呢,每一个又依赖了三个软件, 我是不是要下载的非常的多,是吧?我下载要下载五个,再加上 三乘以五,我一共要下载二十个软件, ok, 我 们用了这个 yam 之后呢,它就可以自动的去从一个远程的软件仓库里面,把这些所有的需要依赖的软件呢都下载下来,并且自动的安装。那么这个时候我们要做两件事情,就是 给所有的软件都去写好一个依赖的清单,比如说我要安装 mc 的 时候,他需要依赖哪些?然后哪个软件又需要依赖哪些,我们做好这个清单之后,这个程序才能自动化的去帮我们去下载和安安装,是吧?那么第二个呢,你去哪里下载? 去哪里下载?你是不是要给他做一个远程的软件仓库的服务器,这样才能那个自动安装的工具,才能从这个 已经存好了所有的软件的这些仓库里面去找到你依赖的那个软件,下载下来才能帮你去安装,是吧?好,那么这样的一个工具呢,我们就把它叫做 ym, 它的全称叫做 yellow dog updater modified, 这个名字有点奇怪啊, 什么黄狗更新器修改派 ym, ok, ym 它解决了 rpm 的 那个软件依赖关系的问题啊,注意它是基于 rpm 的 啊,就是这个 rpm 里面包含了那个已经翻译好的程序,而这个样呢,它就是帮你去找 rpm 的 包的 ok, 它它它并不是一个全新的替代 rpm 的 东西。 ok, 那 在我们的这个教程合集里面,同样的也给大家去提供了两个案例啊,就这个零六和四三的,我带同学们来看一下啊,在这个教程合集里面有一个零六零六 sonos 七,亚姆方式安装 dok, 有 可能这几个字是我后来才加的啊,有可能下载这个资料。早一点的同学,你们看不到这个东西,那你就只要去搜这个 dok, 就 在里面能找到这个东西啊,用亚姆方式去安装,然后呢还有一个亚姆方式去安装 my sql 编号,四三的在这里 macbook 五, ok, 那 现在我们我们先来学习一下啊,那个等一下我们就去演示一下。在 sims 里面用 yam 方式去安装 macbook, 其实它我们发会发现,用了 yam 以后,流程还真的比较简单,除了那个软件自身的一些配置,比如说它的这个密码的设置呀,还有它的这个数 数据存储目录的一些设置之外,还是非常的简单的啊。我们先来学一下 ym 的 常用的一些选项和命令,首先我们如果要去查看在我的操作系统上面有哪一些程序的话呢?我们可以用 ym list 好, ok, 我们这里说的那个 ym 是 什么呢?它既然是 rpm 的 一个前端的程序码,也就说这个是那个仓库里面猎取出来的啊,你可以从这个 ym 的 仓库里面去安装哪一些软件,这个叫做一个列表。好,我们也可以看一下 ym 类似的 my secret, 在 这个阿里云的仓库里面呢,有可能是我没有更新啊,它是搜索不到,无关紧要,没关系啊,然后我们可以去 search my secret。 ok, 好, 他就他就在远程的仓库里面找到了很多的,你如果想要去安装呢?这里面的任何一个版本你都可以去安装, 是吧?而且他不仅仅是 macbook, 还有把其他的一些名字里面包含 macbook 的 一些东西给你搜索出来了。好,你现在如果要去安装了,你就按照他的这个名字去安装,比如我要安装这个东西, yamneso, 带这个名字就可以了, 我要更新 yam update, 带这个包名,这个叫做 package name 啊,包名我要卸载了 yam remove, 带上这个包名,还有前面我们三个已经学习过的命令,再给大家回顾一下啊。我们再去配置那个 yam 源的时候,是不是有用了这个 yam update, 它这个会联网,会下载所有的这个程序的更新包,并且去安装它,有可能会花很长的时间啊。我也跟大家说了,你如果网络不好,千万不要执行这个命令。 yum click on 清除缓存, yum make cash, 重新去创建缓存。创建缓存的意思是什么呢?我是不是有一个 yum yum, 它有一个软件清单, 它并不一定是实时的跟某一个远程服务器,比如说这个阿里云的服务器保持同步的,是吧?我现在想要把它最新的软件的清单拉到我本地来,方便我到时候要去安装的时候能够去搜索参考。那这个就叫做 yummakecash, 把远程服务器的最新的软件清单给我拉一份下来。 ok, 另外有几个选项, ym 杠 h 显示帮助性,这个我们也用的比较多啊,就除了这个 ym 意思多,有的时候我们会用 ym 杠 y 意思多,什么意思呢?就是它在安装的过程里面有可能会有一些需要决策的东西, 你如果使用了杠 y 的 命令呢,它一律会给你回答 yes, 就 这个就叫做自动化无人值守了。 你是你如果安装的时候他时间消耗的比较多,你又不一定在电脑前面的话,你可以用这个样杠外,或者你觉得每一次都要回答他的问题很烦,你可以用他 杠 c 指定配置文件去安装杠 q 安静模式,这两个东西是相反的啊,一个是不给你任何的 流程提示的信息,一个是把每一每一个步骤都详细的告诉你, ok, 好, 其实看起来是非常的简单是吧,而且这个英文单词也也很容易理解。 search install update remove。 你只要知道这个英文单词,你你你都不用去记,你基本上都会知道怎么样去用它。 ok, 这个是样,然后很不幸的是什么呢?亚姆的作者在二零一三年的时候 因为出车祸去世了,所以这个 yam 就 停止更新了,后来呢,又有人推出了 yam 的 下一代的版本,它的名字叫做 dified yam 简写呢是 dnf 啊,注意再说一次,不是地下城与勇士 dnf, 它,它是 yam 的 下一代的产品,在最新的 fiora 和 centos 的 操作系统里面呢, dnf 都已经取代了 yam。 这个 difier 是 什么意思呢?是时髦的,华丽的一个意思啊,我们可以可以理解为是一个 yam 的 高级版本,这里也有一个表格,大家可以简单的看一下啊,其实 因为这个样吗,也有将近十年没有更新了,没有办法,没有人去维护了,所以 他已经被这个 dnf 远远的抛在后面了,你看从各个角度来说,这个 dnf 基本上全面碾压他了是不是?你看从这个扩展的知识啊,占用的那那那内存啊,代码的简洁度啊等等,还有他的这个操作方式等等的。但是还是那句话啊, 在我们实际使用的这个过程里面, ym 还是使用的更多,所以在我们的这个课程里面,还是重点的去学习 ym。 如果使用了一些比较新的操作系统的同学呢,大家也可以了解一下这个 dnf。 现在我们再看一下刚才一直讲的都是红帽系的啊,现在我们来看一下 david 系的操作系统。 david 系的操作系统主要是有两种方式啊,第一种通过这个点 d 一 b 的 安装包去安装。 第二种呢, app, 同样的啊,这个就相当于 rpm 的 包和亚姆的一个区别,我们有了这个 app 之后, db 完全不需要使用了,除非就是他的那个安装包呢,还没有提供这个 app。 app 的 安装方式,比如使用 kelly 的 同学就会非常的清楚啊,当我去使用一个工具不存在的时候,这个系统就会提示我是否使用 app 为你自动安装,简直太人性化了,是不是因为 kelly 它就是 devon 发行版的一个分支, 所以它是用 a b t 去安装的啊?好,所以这个 d b 我 们我们给他举一个例子,大家去感受一下。比如说有的同学想要在这个乌班图,哦,不是不,不是那个,是哦, ok, 乌班图也是也是带变细的啊,想要在乌班图里面去安装一个搜狗输入法,你看看啊,它下载,它下载的是一个什么样的东西呢? 我们点一下,哎,是不是一个 d e b 的 格式,它可以使用在乌班图 u o s 还有一些国产的 linux 操作系统里面啊。 ok, 这是一个 d b 的 格式,那么 d b 你 要用 d b 的 方式去安装,我们就不讲了。 a p t 呢,我们简单的了解一下,因为它真的非常的简单啊, 甚至有的时候你不都不需要抢命令,就像在开类里面,他会自己询问你要不要去安装。有可能有一些同学还见过这个 a p t 杠什么的命令啊,他也全部都被这个 a p t。 的 命令取代了,大家都用新的命令就可以了,虽然同样都可以使用。比如你要去搜索 a p t search, 加上报名 a p t install, 报名 a p t update, 报名 a p r m。 哦,跟那个 yam 的 没多大的区别啊,就是好像我发现只有一个差别,就是他那边用的是有可能有一个有,呃,好像都是一样啊, search 英斯诺阿不对的 rio, 我 们就去了 search 英斯诺不对的 rio, 一 毛一样,是不是一毛一样啊?这个就是 使用习惯统一起来了,唯一你要做的就是把那个样修改成一个 app 就 可以了,点进去这个大家简单的了解一下就可以了。好,最后还有一个 freebsd, 它也有两种软件安装的方式,一个叫做 pk 机,一个是 port。 这个还比较新啊,一般呢,我们也可以用这个 pk 机看 search install upgrade。 第一啊, 有两个单词不一样,这个呢,它在其他的操作系统里面叫做 update, 是 吧?这个呢,叫做 rem, 它改成了 d l, ok, 好, 现在大家应该了解了,在我们不同的 linux 发行版本的派系里面,我们常用的软件安装的方式有哪些?我们重点当然还是在讲这个,样吗样, 好,现在我们呢就来讲解一个案例,在 cintos 里面去安装软件,我们以我们以好,这个呢,这个很简单的啊,我只是给大家补充一下,就是有的同学有,我在这个 cintos 里面没有办法敲中文呀,试一下啊, 把这个文件给关掉, console close without saving, 我 打开终端, 我要输入中文,比如我要输入乌鸦的中文,不可能,它没有中文输入法,怎么办呢? 我把我把这个链接放入 ppt 里面就行了啊,其实不需要去安装,很简单,只要你去启动就可以了。在这个 system two 里面设置,设置里面有一个 region 语言的设置,选择中文就行了,我们试一下, 再打开那个 settings, 这里 settings, 然后 language 找一下啊, language 和 region 在 哪里呢? region and language。 好, 然后我们去选择它的语言,中国汉语 down。 好, 要重启啊,重启,那我们就开就 重启一下,等它一点点的时间,等它几秒钟啊,我们看看是不是进去它就有中文输入法了。 这个配置还是比较简单的啊,选择了这个中文,然后还要给它添加一个拼音的输入法, i 的 chinese 拼音在哪里啊? 哦,这个地方叫做 input sources, 添加,刚刚才我们设置的是那个操作系统的语啊,在 region, 不是 这个地方,是下面这个 input 是 输入源那个地方。好,再来一次 region language, 我们刚才还改的还不是这个啊,只改了一个格式化的东西,要改就改这个汉语中国。好,我现在先不重启 input source, 去选择一个拼音, chinese 拼音 就没有那个拼呢。好,那,那就这个吧。哎,有了爱的好了。嗯, 我们应该是可以直接输入中文了,但是这个切换切换输入法的那个快捷键我们还没掌握呢。啊,我们来看看怎么去切换切换输入法,选择中文 哦,在右上角,右上角有一个切换输入法的一个选项,来开了。好,来输入一个乌鸦可以了吧,乌鸦 连这个词都没有。 ok, 好, 这个还是非常的简单的啊,这里特地给同学们提醒一下,你不用去特地安装输入法,当然我们大部分时候是在这个地方去操作的,我的操作系统本来就有 中文输入法,我干嘛要还去安装呢,对吧?我们用 xl 远程链接,现在我们来看一个通过 y 去安装 my secret 的 一个案例, 我们就按照我提供给大家的这个文档一步一步的来做一下, 把这个命令复制一下哦,大家在这个 pdf 的 阅读器里面去复制的时候,要千万注意一下,有的时候是复制不全的。好,你看这个复制还会乱跑。 send os 里面有一个默默认的 mario db, 但你不需要去卸载它,安装了完了以后呢,它会直接覆盖好了。 第一步,把这个东西下载一下啊,我们放到我们自己创建的一个目录下面去,大家也可以去用 mac d r 的 命令去创建它。好,没有漏,看看这个网络有没有问题啊? 嗯,文件不是特别的大。 ok, 这个 r p m 的 包下载下来了, 然后呢,用 ym 杠 y install 杠 y 是 什么意思?我们已经解释过了是吧? rpm 果然漏了两个字母,没关系,我给他补上好,这个横杠,横杠我不知道是它没有显示出来还是真的没有啊,我先试一下, 果然是又没有复制过来是吧,看这个阅读器还是有点问题啊。嗯,开始安装了, 就这么快就安装完了。好,这个 r p m 安装好了,我们来安装 my sql server so 又漏了两个字母, yuma, 你 看,你去安装这个程序,它就给我们去下载了三个相应的软件,是吧?这里要下载要花一点点的时间。 ok, 其实就这么几步,很简单的啊。然后我们去启动 my secret 看看啊,给他一点点时间。 好,这里还要半分钟的样子啊,还有二十几秒,我们就稍微的等一下,看看后面还要做什么呢。 启动服务以后,好,要给他给入团用户去设置一个密码,没有密码你不知道怎么去访问它是吧?然后呢,这个密码我们可以把它改掉,并且呢,它默认是不允许远程连接的, 我们要给它授权啊。后面我们就一步一步的来做,干脆就给大家去解释一下,有可能有一些同学好在后面会在学习到这个东西啊,我们先把它做一遍。 ok, 安装完了是吧,我们可以启动 mc 了啊。 service 又漏了两个字母,给它敲上 好, unit not found。 那 这个就就是这个东西没安装成功呀,如果说这个服务启动不了的话,好家伙啊,这个,这不就让人尴尬了吗?我们再来一遍 看看啊,他到底前面哪里安装出了问题?好呀,这个包找不到。这是,这是安装失败了, filling package, 他的客户端没安装成功, 我们再来试一下。 服务没有安装成功的话,那,那我们这里肯定是启动不了了。 service, 没有这个服务,服务都没有注册成功啊,那我们要不要去解决一下这个问题?还是解决一下吧。好,我们就把这个错误复制过来, 遇到问题不要怕啊,有什么问题我们去解决,什么样的问题看肯定有人也遇到过这个问题,是吧? ok, 他 说这个 g p g 的 密密钥已经过期了。嘿,那我就按照他的这个提示去执行一下。好,来了,再来一遍。 嗯,这次跑起来了。看来刚才是真的没给我们去安装, 一共要去安装十二个软件,现在是第七个,我们等它。 你看,我们用到了亚姆的什么的命令呢?其实就是一个 excel。 没有吧,我们也我们也,我们下载的这个 ibm 的 程序,我不需要去搜索,也不,也不用去卸载它,是吧,你就相当于只掌握了一个操作就可以了。 好,安装完了,那这次我们可以去启动它了啊, service, 给它补上两个字母,来,走你, 它应该是正在启动的一个状态。 ok, 没有报错啊,那我们现在来看一下三三零六的端口有没有启动 grip。 三三零六,我们以前学习了这个命令,但是没有没有这个,那这个是福气,所以看不到是吧? ok, 启动成功了, 当然你也可以用这种方式去查看服务是否启动成功,你也可以 ps 杠 e f grip 查看 my secret 的 进程也可以的。 那这个就是 my secret 的 一个进程是吧?好,也可以用这个查看它的服务,看 active running。 没错,好,服务已经安装好了,你得去连它,连它。那我们我们用这个方式啊,在默认的这个网址文件里面 好了,我们就敲,我估计那个引号又复制不过来,我们就敲一下 grip。 grip 是 匹配文本是吧?然后查找一个 password 的 一个关键字,从哪个文件里面去查找呢?这个我可以复制一下 lock。 ok, 好, 它的默认的密码或者临时的密码啊,是这个我看下,你看清楚了啊,是 local host 的 冒号,后面的那个东西可是从这里开始去复制 复制一下。哎,那我们现在就可以连上他了啊,我们去安装这个服务的时候,他既给我们安装了服务端,当然也给我们去安装了客户端,所以呢,我可以直接在这台机上面去使用 mac 的 客户端去连接。杠屁,杠屁, 没有什么分割之类的啊,直接把这个密码连接在这里,没有冒号,也没有空格。好,我们看 my secret 杠 u root 杠 p 它啊,我知道了,它是不不允许,在这个里面,不允许,我们看用什么样的方法把这个密码敲进去。那就这样吧,我们自己把它粘贴过来。好, 这样可以了吧,是吧,我就后输入密码,我是粘贴进来的啊,用 shift 加音色的粘贴进来的。好,连上了。但这个时候呢,你如果要把密码改成一二三四五六的话, 必须要先动态的修改一个配置,不然的话,你看他默然生成的密码是特别的复杂的,是吧,但我为了方便连接使用,我我我基本上就在我本地的这个开发环境里面去使用。那我没,我尽量简单,越简单,而且跟我其他的密码都一样最好。 ok, 好, 然后我们去 编辑他的操作,旋转门的一个配置文件,现在我们再来开一个窗口。 ok, 然后, 哎,这个是永久修改啊?这个是,这个是临时修改,我们也可以把这两两行东西给它加进去。那就永久修改吧。放在哪里呢?放在这个 maccode d 下面。好,现在它其实只有好,卡住了,卡住了,好了,只有一块的内容,我们就加在后面就行了。 learns 等于零,又给我漏了两个,等于零。 确认一下啊,没错哦,等于一,这个最小的长度是一就可以了,上面的那个是不验证它的安全性。 wq, 保存一下。好,我们现在可以用这个命令去重启 macbook restart, 又给我漏了两个字码。 start 没有问题的话,它就不会有任何提示。好,这个是启动成重启成功了啊。好,然后我想要把这个密码改成一二三四五六。我因为我已经配置好了,允许使用弱密码,这个才是可以修改的,否则的话,你是我看这边有还有没有再连接的啊? show date, basis, 这个密码已经变了啊,重新再来连一次, 还是用刚才的那个密码去连接, 然后再去改密码,因为我刚才重启了数据的服务啊,这个连接它,它是不能再保持使用的。好,又进来了。然后呢?修改密码怎么去修改?用这样的一行命令,这样它一条一条语句啊。这个不是命令,是一条语句。把它的密码改成一二三四五六, 改好了。授权远程访问,什么意思呢?如果你不给他授权的话,就,我就只能在我自己的这台服务器上面去用我自己的客户端连接这个 mac 的 服务。 那肯定不是我要在我的物理级 windows 里面,这个叫做远程连接,是吧?只要在你,你想要在别的机器里面去连它,你就必须要 grant 授权。 ok, 这个就是用户,这个是呢 ip, 所有的 ip, 所有的。呃,这所有的 ip 都可以用这个 root 用户远程连接过来。 ok, 刷新一下权限,权限 flash privilege。 ok, 可以 了,大功告成了。 还有一个防火墙的问题啊,防火墙我们我们先直接连,因为我们如果这个防火墙没有关闭的话,我们再把它关闭一下就可以了。好,现在打开 navigate 的 工具试一试, 我们的 ip 是 多少呢?是幺九二点幺六八点幺四二点幺四零, 新建连接叫做 sint os new my secret, 幺九二点幺六八点幺四二点幺四零三三零六,不用改 root, 不 用改密码,一二三四五六, 测试,连接好,它的防火墙是默认,默认是已经关闭的了,那我们可以双访问。 ok, 如果要要临时关闭防火墙呢?和永久关闭防火墙也非常的简单,就是好,你看这个复制还会乱跑。 send 上面有一个默默认的 mario db, 但你不需要去卸载它。安装了完了以后呢,它会直接覆盖。好了。 第一步,把这个东西下载一下啊,我们放到我们自己创建的一个目录下面去,大家也可以去用 macd r 的 命令去创建它。好,没有漏,看看这个网络有没有问题啊。嗯, 把这个命令复制一下啊,大家在这个 pdf 的 阅读器里面去复制的时候也要千万注意一下,有的时候是复制不全的。好,你看这个复制还会乱跑。 sonos 里面有一个默默认的 mario db, 但你不需要去,嗯,文件不是特别的大。 ok, 这个 rpm 的 包下载下来了, 然后呢?用 ym 杠 y install 杠 y 是 什么意思?我们已经解释操作的,我的操作系统本来就有中文输入法,我干嘛要,还需要安装嘛,对吧?我们用 xl 远程连接,现在我们来看一个通过 ym 去安装 my secret 的 一个案例, 我们就按照我提供给大家的这个文档,一步一步的来做一下, 把这个命令复制一下啊,大家在这个 pdf 的 阅读器里面去复制的时候,要千万注意一下,有的时候是复制不全的, 连这个词都没有。 ok, 好, 这一步还是非常的简单的啊,这里特地给同学们提醒一下,你不用去特地安装输入法,当然我们大部分时候是在这个地方去操作的,我的操作系统本来就有 中文输入法,我干嘛要,还去安装嘛,对吧?我们用 xl 远程连接,现在我们来看一个通过 ym 去安装 my 一下,全响,全响 flush privilege, ok, 可以 了,大功告成了。 还有一个防火墙的问题啊,防火墙我们我们先直接连,因为我们如果这个防火墙没有关闭的话,我们再把它关闭一下就可以了。好,现在打开 navigate 的 工具试一试, 我们的 ip 是 多少呢?是幺九二点幺六八点幺四二点幺四零, 新建连接叫做 sint os new my secret 幺九,二点幺六,八点幺四,二点幺四零三三零六,不用改 root, 不 用改密码,一二三四五六, 测试连接好。他的防火墙是默认,默认是已经关闭的了,那我们可以双访问, ok, 如果要要临时关闭防火墙呢?和永久关闭防火墙也非常的简单,就是两行命令就可以了,我们现在还没有讲到在后面讲 网络管理的时候会学习到,好, ok, 那 这个就做完了啊。其实用要么方式去安装软件还是比较简单的,不管是安装这个 mac 款还是去安装其他的软件, ok, 如果说大家有需求以后要去安装其他的软件啊, 也不一定要依赖于老师在这个视频里面讲解,或者老师自己写了这个非常详细的安装的流程,基本上只要在网上去搜索一些这样的一个安装的教程就可以解决。最后我们再给同学们来讲一下这个软件版本的管理什么问题呢? 比如说我的,我的电脑里面有的有一些程序,它是基于 jdk 七才能跑,有的是必须要 jdk 八,有的是必须要 jdk 十一才能跑, python 也是一样的,有的是 python 二才能运行,有的是 python 三才能运行。 那这个时候就麻烦了,是吧?我们前面也讲了那个所谓的叫环境变量的东西,你如果要去改环境变量,是不是要改那个 etc profile 那 个配置文件看一下啊?退出出来 vm etc profile, 改这个配置文件,在这个里面去用 export 配置环境变量,对吧?但是如果你要用一次改一次,那就很麻烦了,有没有更加简单的一键切换的那种东西呢? ok, 有 的。那这个就是我们说的 sink, 它里面自带的 update alternatives 啊,我没有去安装在这个里面,它是自带的啊,有可能其他的一些 linux 的 操作系统没有。 kelly 里面也是自带的, 开了里面也有这个东西啊,我们在开了里面可以用它去切换 java 或者拍摄的版本。 ok, 好, 现在我们的需求就是在这个操作系统里面里面呢,他其实本来就有两,本来就有两个 jdk 的 版本,给大家看一下啊,在这个目录下面, 它已经有了一个 jdk 七和 jdk 八,而它不是那个散公司的啊,散公司的 jdk 已经闭园了,是收费的。这个呢是 open jdk, 是 免费的,开园的那个 jdk。 ok, 然后我们看看 java 杠 version, 我 当前的 java 的 版本是什么呢?是一点七。那如果我要给它切换到一点八怎么办呢?切换到一点八,我是不是要在一个这个 etc profile 里面去设置呢?不需要,很简单的啊。 ok, 我 们可以先看看啊,其实这个信号 s 的 操作系统他一开始就已经给他注册好了,我们就用这个命令看看在这个版本切换工具里面他注册的结果是什么样的。 用杠杠 display, 然后搜索一个程序的名字,比如看看 java 的 就在好,好家伙啊,这个里面就就太多了啊,这怎么看呢?看不出来了啊,不用管了,那么现在 我们我们要做的事情是什么呢?我,我现在想要去弄一个 jdk 十一,并且添加到这个工具包里面,可以随意的切换。我们现在还没有看到切换的一个效果啊,其实就是下面最下面的这个命令,我们可以先来试一试, 如果他已经注册进去了,并且给他做了这个编号的话,你看,呃,一是一点八,二是一点七,你要用哪一个呢?我用一回车,然后加把杠 v 键, 是不是变成了 jdk 一 点八了?这个就是我们用这个版本切换工具的一个效果,非常的方便。是吧?刚才还是 jdk 一 点一点七,我只要给他告诉他一个数字就可以切换过来。现在我的需求是我再在这个里面 加一个编号是三的 jdk 十一的东西进去。那我现在现在先去把这个 jdk 十一给它下载下来, off 的 把它放到这个里面。 ok, 好, 地址我已经准备好了啊,用 wget 去下载一个 jdk 十一 好了,不知道你能不能连得上啊?如果连不上,这一步我们看能不能演示成功。 嗯,但速度不是特别的快啊,那你这得要下十八分钟去了,我看看。

终于是在 windows 系统上部署成功了, cookie voice 是 没有借助于 ws l 那 个系统,在 windows 安装的时候可能会出现这样的问题,那怎么去解决呢?它它是因为这个在官方的那个安装清单里面有一个 依赖包 open i whisper, 它的版本太旧了,我们把它改成这个版本,二零二五零六二五,这个版本保存之后重新去运行那个安装的命令,正常就没有问题了。另外的话,你再去部署它之前,再去安装之前,先要确保你的 电脑的环境要准备好具体哪些环境呢?首先你要有 gpu, 最好是用你达的 gpu, 要装 nintendo 或者 mini 还有 get, 还有最后这个做音频处理的,它也是要安装的,它只需要在网上下载就可以了,然后添加到环境变量,准备好环境以后再去 见虚拟环境去下载依赖包。安装依赖包,然后就可以在 windows 本地去运行 qq 八 s。 我 这里下载的是 qq 八 s 三百兆的这个小模型,它能够节省一些空间。另外我觉得在 windows 本地使用它使用这个 qq 八 s 确实不如在 mate 系统上的性能那么好用它的 gpu 加速支持的不好,它生成音频的时候会比较慢。我这边是整理了详细的安装的过程,包括环境的准备的步骤,因为发视频的话是太繁琐而懒得去录视频了,或许有机会我再去分享吧。

macbook 本地部署大模型实战教学。

今天带来的是第四期视频 md 显卡 comui 的 保姆级进阶手册,这个教程是四月二号录制的, 首先的话这里面有两个事情要做,第一个就是安装吹腾的笼子,第二的话就是安装一个 c g a t 的 一个加速,这两点在教程开始之前,我们先来测试一下,看这个加速到底有没有用。 启动康复 u i 用一个图声视频的工作流,我们在这个工作流里面关掉加速,关闭加速, 然后我们直接运行,看一下踩样一步是需要多少时间的。这个 c g 加速的话,不安装是不能用的,哪怕你使用了这个节点也是没办法使用的。 关闭以后我们现在进行一个测试,现在已经进入到采样器阶段,在这里我进行一个窥镜,因为这个采样器的话大概时间比较久。 好了,我们看到我们这里现在采样一步是需要五十六秒的时间,我们暂停 好工作,暂停,我们在这里打开加速,现在我们重新继续运行这个工作流,看一下加速到底有没有效果,有多少效果。 好了,我们可以看到在这里踩样一步只需要二十五点五九秒继续停止工作, 这可以看到这两次开启加速前后的对比效果非常明显,这也从侧面印证了我们今天这个教程的一个实用性。好了,现在我们正式进入教程,首先 我们需要两个文件,两个文件我已经准备好了,到时候我会上传到网盘去,在网盘里大家直接下载找错地方了, 两个文件,一个是 c 值加速的一个文件,一个就是 shift 的 一个轮子,我都不会准备好,大家解压到自己 正常使用的地方就可以了。然后同样右击 win 键,打开终端管理员, 激活虚拟环境,复制复制代码,激活虚拟环境,然后安装我们的推腾。这里要需要注意啊,不要直接复制这个代码,要根据自己文件放置的地方修改这个, 修改这个位置,修改完了以后点击安装,安装完了以后我们复制这个验证的, 看一下已经显示正常,说明我们已经安装成功了。 chip 安装完毕了以后,我们开始安装随着 itunes 的 一个 一点零六的版本,因为这个一点零六版本是我们 amd 显卡唯一能够支持的一个版本,后面的最新的二点多版本,三点多版本已经跟我们 amd 显卡无缘了,除非以后看有没有新的进度直接安装。 同样安装完了以后,我们查看一下版本号,显示一点零六,说明安装已经完成。安装完成了以后,我们需要在文件夹进行操作, 进入到我们的 c g 加速里面,这里面我准备了两组参数,一组是六四乘六四,一组是一二八乘一二八,这两组文件的区别就在于这些参数不同, 对于这些参数不同代表什么含义?后期的话我会拍一期视频啊,告诉大家怎么样抓取最适合自己电脑硬件的一个参数,这两个参数是比较两个通用的,推荐大家使用六四乘六四,因为这个一二八乘一二八比较激进 啊,我虽然使用的是这个,但是因为我是独立显卡和集成显卡双重使用,我的独立显卡只是用来单纯用来跑 ai 的, 没有连接显示器,所以说用这个激进的参数可以 复制里面的四个文件啊,大家用这个六四乘六四就可以了,然后到我们的虚拟环境的这个目录进去,然后 l l 二 b 文件夹,再进去找到我们的 设置 itunes 的 文件夹粘贴,直接替换。四个文件都替换完毕了以后,那么我们现在就可以启动我们的 comui。 如果说你的工作流里面没有这个节点的话,你可以直接增加这个节点,增加的话就是双击,基本上来搜 k g 就 可以了,然后这里会有一个注意力, 但是进来以后选的话很重要,像这几个都是不能选的,库达这几个都是不能选的,我们一定要选这个 f p 十六 推腾选这个,然后前面接模型,后面接工作流就可以正常运行了。 在我第一期的视频,有个兄弟说他想看一下这个 ltx 二点三的工作流怎么使用,他自己搭建的,好像是老是出问题。其实这个 后面我会单独拍一集视频来讲一下这个踩奶呢,他以为我是爱他,其实我是想处理一下脚上的猫砂,这个呢就是一个纹身视频的工作流,包括涂身视频我已经测试过了,都是没有问题的,我们的 amd 显卡可以正常使用的。 同样如果说大家有什么想要看的,需要的看的视频的话,大家给我视频,下面留言,我会根据大家的需要去拍一些专门针对性的视频。那么今天的视频也就讲到这里了,先这样。

大家好,我是没有文字社区的小龙,我们技术交流群里面的小龙哥,也是我六年之前第一次在镜头面前通过直播的方式演示了我们怎么搭建一个图片搜索系统,当时我们写了几百行的 python 代码,然后通过多克方式,然后启动了这么一个有 前端界面,有后端服务的图片搜索系统啊,在但是六年后的今天啊,在 ai 领域发生了天翻地覆的变化,尤其是在编程领域,通过 ai 编程可以把之前很多系统用一种新的方式重新做一遍,今天我也想从 从之前最开始的地方啊图片搜索这个系统开始,我用我们现在最流行的 ai 编程的方式为大家搭建一个图片搜索的系统。 准备工具也很简单,一个是它所里面我装的一个 color code 啊,就是一个 ide 工具,现在是一个空白的文件夹啊。另外就是这边我们的一个刚才看到那个 excel 这个空白文件夹,以及我准备了一个 prompt, 这个 prompt 就是 今天我们搭建这个图片搜索系统的主角,还有一些测试的图片啊,大概有一百张啊,这个图片。 ok, 我 们切到这个 ctrl 的 这个界面里面。第一步我们先给大家,对,我们先把那个这个 prompt 我 们复制到这个文件夹里面去, ok, 我 们这应该能看到,先给大家看一下这个 prompt, 其实我们之前写代码可能需要写很多的脚本啊,写很多的函数,但是现在 ai 编程这个时代,我们最重要的就是写好这个 prompt, 今天我们通过这么一个 prompt 大 概三十几行吧, 我们大家可以看到的,我们通过怎么通过账本把这个以图搜图系统给搭建起来的?前面告诉一些背景,包括我们要创建一个以图搜图系统技术站,这模型我这次选择了,当时六年前我们用的是微机机,现在我用了一个肯丽普的模型,它是一个跨模态的以文搜图的,可以做图搜图,也可以做文搜图的一个模型啊。 下一个数据库我们用我们社区的 microsoft, 因为我们做给大家演示我们最清亮的一个本地的版本,清亮化版本。前段 ui 呢,我们简单一点,用 gradu 功能需求就是给它描述一下,包括能实现图片的导入啊,输入一个图片的路径,然后导入下面的所有图片,以及上传一张图片去搜索最相似的其他图片,并显示出相似度分数 啊,以及还有一个清空数据,有可能做时间,假如我们想把里面底库的数据先清掉,重新导入,我们会有个清空数据的能力。 ok, 这些 技术要点,然后我就不一一给大家读了。这个其实我之前也是在录这个视频,之前我也提前跑过一些,跑过几次吧,有一些坑我就提前把这些坑先写在这。这样的模型基本上可以 one short, 就是 一步到位就能做出现在这个比较可用的一个效果啊。后面这些要求环 境搭建,这我给大家说一下,因为我们可能后面在我们电脑上会装很多的搭建很多的一些拍摄项目,可能我们最好用这种 kind 这个虚拟环境来来隔离这种不同项目的拍摄环境。 最后验证,现在 ai 编程的时候,你光让他写完代码,如果不做测试,那后面你会非常痛苦,你就处于那个测试员的角色,这样你会需要反反复复的去测很多遍,然后发现问题在反馈给模型,然后模型一改完让你又去测试,让他人在里面的占比还是太高了,但现在模型能力已经非常强,我们完全可以让他把测试的任务也交给他来做啊。 行,这就是我们这个 prom 今天我们最重要的要写的一个内容。 ok, 接下来我们就启动。我们现在我个人日常使用中目前效果最好的是 model 模型,我这边直接是有启动套的,因为我们这个测试验证项目,我就加了一个超过一些验证的这个命令,杠杠 dangerous, 如果大家日常使用的话,也要看你的项目,如果是比较重要的项目,最好不要加后面这个参数 啊,该进行确认的地方还是要正常去确认。我们今天要敲的东西还非常少,就这么一句话,把这个 prompt 给他,因为这个太长了哈,我们这个 prompt 就 就直接用 app 的 方式让他自己去读,因为你复制粘贴到这个终端里面呢,可能有的格式会有些乱啊, 只需要说按照这里的要求搭建这个项目好了,我们就只需要说这么一句话,剩下的事情交给他。行,模型现在就开始去开始去工作了,他会按照我们的这个 prom 的 要求去搭建我们项目。这,刚才我们是空文件夹啊,这有一个点 microsoft 器啊,这也是我们 microsoft 器最近开源的一个,上个月开源的一个新的项目,就是给尤 其像 filecoin 这种大模型的记忆的做记忆的插件,再给他也已经开源了,非常好用。就是直接两方面的一个在杠 plus 键去安装一下这个插件,然后再 insert 一下啊。 ok, 可以 看到这个模型已经在开始编码,你看它里面已经写好了这个 requirement, 点 p s t, 也写好了这个主应用的代码文件 app 点 p y。 行,我们稍微等它一下,这个一般会比较快,因为其实我之前搭建过那些 requirement 里面的依赖包,它应该会装得很快这些东西。这是 app 点 p y。 之前这些函数可能在几年前都需要我们自己一个个手写,现在 ai 可以 在几秒钟之内就完成一个可用的一个一个脚本。 ok, 它这边已经运行完了,然后我们直接打开这个链接,先看一下这个,它这个效果,一个导入,以图搜图清空。我们可能他之前有一些测数据,我们先清空一下, ok, 导入我们这边这个 test 的 一秘籍我们换掉,我们用我们提前准备的这些 test 的 一秘籍,一百张全部拷贝过来了, 我们把这个图片路径拷贝一下,然后复制粘贴到这开始导入,还是非常快的,一百张全部导入成功。好,我们来搜索一下,点搜索相似图片,先点上传,这找一张飞机的图片,我们可以看到它可以正常的搜索出来, 这里面有他的相似度分数啊,像第一张他们是,呃原图嘛,相似度为一。我们再可以试试其他的图片,再换一张,这有个电脑, ok, 也能看到,效果还是挺不错的,基本上能原图自己能找到。前几张基本上都是有电脑相关的啊。 ok, 我 们重新再换一个别的鹦鹉试试。 ok, 因为这图片的他能第一张基本上能找到自己,因为咱们这个图片库的量比较少啊,所以说他可能里面找到的相似的表的图案也不多。 ok, 再试一张别的,这个是个羊驼吗?我们也试一试。 ok, 可以 看到里面还有很多这种类似羊驼和这种照片,整体还是能满足我们。当跟当时我们六年前我们做的图片搜索的里头搜索的系统其实功能基本完全可以匹配的,完全能覆盖到,但是我们可以看到我们今天就只需要 只用了一个我们的 prompt, 这个 prompt 大 概三十三十一行的一个 prompt 就 实现了。我们刚才看到这么一个图片搜索的系统啊。 ok, 行,其实这个里面还有很多可以玩的,比如说你可以在这个项目基础上去改一下前端的一些界面啊,或者是去增加一些小的功能点啊,比如说 在这个搜索出来的结构的图片上再点击搜索作为啊这个结构图片作为目标图片出来再去搜索等等啊,其实这个都是直接在这个终端里面通过一句 prompt 就 可以去来实现。我们今天这个视频呢,就主要是告诉大家,我们二六年,我们现在 ai 编程这个能力已经今非昔比,或者说已经是一个跨时代的一个突破。我觉得啊,后续我们可能很少会在 去手动去写,像我之前几年前手写几百行代码去做这么一套记录, ok, 行,后续大家,今天是我第一次在视频号这边录这个视频啊,后面我会持续给大家分享一些关于呃,大模型、相当数据库 red 以及图片搜索啊,视频分析等等这相关的一些学习的一些视频,如果大家有什么其他感兴趣的方向,也可以都告诉我啊,以及我日常工作中使用这些 ai 编程工具的一些经验啊,一些好用的功能或者小技巧,后面也可以在通过视频号这样的一个平台来给大家分享。

ok, 朋友们,那最近有个新的 agent 叫做 hermes agent, 在 外网非常的火热,他说你的第一个爱马仕,何必是爱马仕,那么他被人叫做小龙虾的进化版本, 那他跟小龙虾有什么区别呢?今天这个视频我就会讲清楚 hermes agent, 并且会手把手的带你从安装到设置,然后再到使用。那么这次我会使用这个谷歌最新的开源大模型 java, 然后我会把它部署在本地,并且会教会你,然后接入到 hermes 来使用,这样就可以实现 fork 自由。 那我们首先先来讲讲 hermeshermes, 它跟小龙虾的第一个区别就是它能够自我进化,自我学习,会自动生成 skill, 就是 不需要我们去手动创建这个工作流,那么只要你用的越久,它就可以越来越懂你,用起来越来越顺手。那么它具体是怎么实现这个自我进化的呢?这里有两个数字,一个是五,一个是十五。那么首先我们来说一下这个五, 那 hermes 在 完成一个复杂的任务,通常指的是它要进行五次以上的工具调用,它就会自动地把整个工作流沉淀成一个 md 技能文件,之后它下次再遇到类似的任务的时候,它就会直接加载这个 skill, 跳过摸索阶段。 那么如果它在执行过程中发现有更好的方法,它也会自动更新 skill 文件,那么上述这个过程是使用一个叫做 skill manager 的 工具来完成的。 那十五次是什么意思?也就是说他每进行十五次的工具调用,系统会自动停下来回顾刚才发生了什么,找出哪里失败了,然后立即更新自己,这个就是他的闭环自省功能,也就是他越用越强的秘密。所以说五次就是他什么时候记,什么时候创建自己的技能,十五次就是他什么时候反思。这两个是不同的处罚机制, 这就跟我们传统的 skill 编写方式是很不一样的,因为我们知道无论是小龙虾,或者说是 cloud code 或者说 code, 他 们的 skill 都是由人工来编写的,或者说从这个 cloud hub 这种 市场上面下载下来的,他们没有自我生成,也没有自我迭代。那很多人使用小龙虾的时候,还有一个问题,就是觉得他特别笨,比如说今天说的事情,明天就忘了,然后他告诉你我一定会记住,结果第二天他又忘了,那原因就是因为小龙虾的记忆系统不够完善,他只是简单的压缩了上下文。所以说我们会看到很多团队也在做 agent memory 这件事情就是想解决持久化记忆的问题,让 agent 能够永远记住你的信息, 比如说密木林,比如说国内盛大网络的 evermind 等等等等。那 hermes 和 openclaw 它的记忆系统之间有什么区别呢?其实最大的区别就是它们在容量管理上面是完全不一样的。那我们来看一下 hermes 的 三层记忆系统。那第一层叫做绘画记忆, 也就是实时的大拇指的上下文窗口,比如说一百二十八 k, 二百五十六 k, 那 它在绘画结束的时候就会消失,跟我们正常在聊天框使用豆包 deepsea 是 一样的。 那第二层叫做持久化记忆,那这层有两个文件,分别是 memory md 和 user md, 顾名思义和小龙虾的作用是一样的, user md 呢,就是用来收集用户的画像和偏好的,那 memory md 则是用来长期记忆和经验沉淀的。 但是在小龙虾里面,这两个文件的容量默认是两万个字符,那么超出之后它就靠上下文压缩,把旧的对话内容给压短。但是问题就是说压缩之后会导致信息丢失或者变形。 而 hermes 的 memory dmd 里面只有两千两百个字母, user dmd 里面只有一千三百七十五个字母,它的容量是小下的十分之一,那它为什么要设计的这么短呢?其实这是一个团队的设计哲学,就说团队他故意把容量做的非常小,迫使这个 agent 主动去提炼,去重合。并 不够用了的话,那就必须先整理旧的才能添加新的,那容量满了的话,不是压缩,而是主动侧展。那 creation 也是刚才说的主动侧展,和我们之前说的压缩 compression 有 什么区别呢?压缩是把所有的东西硬塞进去,然后变短,变紧凑,但是内容它会变形,会丢失,会失帧。而侧展它是主动的去筛选, 判断什么重要,什么不重要,什么可以合并,什么该删除掉。那么 hermes 他 走的就是这条路线,所以说虽然他的记忆非常的小,但是他每一句话都是有用的。那 hermes 的 记忆系统第三层就是全量历史解锁,他会把所有的历史对话放在 s q l lite 数据库里面,如果说他需要查找历史数据的时候,他就会使用关键词查找匹配,然后 找到这个片段之后再使用大模型整理材料,最后返回给我们,而不是说跟小龙虾一样使用向量解锁。那我们先说说关键词查找匹配,那这个就很简单,就类似我们的 ctrl 加 f 搜索什么关键字,它就匹配什么。 那在 hermes 里面,它就会根据关键字去搜索相关的段落,然后让大模型去整体的理解这段话什么意思,理解完之后再返回一段材料给到你。 那我们举个例子,比如说现在我给这个 agent 说,之前上周我们讨论过一个三个月的学习计划,来提高我的这个英语口语和表达能力,你去帮我找找那个计划具体是怎么样的,然后再给我说一下,那他就会执行下面这几个操作。首先他会去搜索关键词学习计划,三个月提升英语表达,然后找到这些文本片段之后,大模型会整体的理解上下文,然后再返回一段摘要给到我们。 那什么是向量解锁呢?向量解锁它就是把文字转换成数字,我们知道计算机它存储的是零一系列,对吧?它是存储不了文字的,所以说在存储的过程中, 它会把文字转换成像量,那向量解锁就是通过比较数字间的距离来找相似的内容。比如说现在有句话叫做猫在沙发上睡觉,转换成像量可能就是零点八二、零点一五、零点三三。 那还有另外一句话,就说一只猫咪握在沙发上转换成向量,可能就变成了零点八一、零点一六、零点三四。虽然说这两句话的字是不一样的,但是它们的语义是非常类似,都是猫在沙发上,对吧?那所以说它们在向量空间上面的距离是十分接近的,那 ai 就 能够理解它们是同一个东西。 向量接收的好处就是能够理解语义,但代价是需要你额外的向向量数据库来存在,向量存储成本会更高,并且还需要一个迭代模型。 那我们还知道养小龙虾呀,是一个非常烧 token 的 事情,因为它真的太耗钱了,那 hermes 就 能很好的解决这个问题。那为什么养小龙虾非常的浪费?这个 token 就是 在于这个系统提示词的加载方式。那首先我们说一下什么是系统提示词, 我们知道当我们和 agent 对 话的时候, agent 收到的并不仅仅是你的问题,而是系统提示词加上记文件,加上当前的对话,就等于 agent 看到的完整上下文。 那系统提示词里面包含了什么呢?比如说 agent 是 谁?他应该怎么工作,记住什么信息,也就是我们理解的 so 点 md, user 点 md, 正题题点 md 这些文件。那对于小龙虾来说,他每次会画会重新加载这些上下文,然后对话开始的时候,他读去所有的记忆文件,然后拼接之后注入上下文。那么 lama 在 处理上下文的时候,他会把之前遇到的内容缓存起来,然后来加速处理这个缓存,命中 token 的 价格是最便宜的,那如果说上下文内容在一直改变,对吧?那我们前面的缓存就会失效, 因为缓存是按照顺序来存取的,你前面如果变了,后面存的再多的缓存都没用了,接下来全部从头来过,它不是增量改变的,而是全部推倒重来。 而且还有个现象就是我们知道现在市面上很多中转站,对吧?那你会看到很多这种垃圾中转站为什么都可以用的这么快?原因之一就是因为它不让你去命中缓存,全部给你用最贵的消耗方式。那我们看 hermes 它是怎么做的? hermes 它完全不一样,它会在绘画开始的时候执行一个操作,叫做 frozen snapshot 冻结快照,他会把当前所有的记忆文件等等等等上下文全部读起之后锁定,然后注入到上下文里面去。那在绘画进行的过程中呢?如果说这些文件被修改了,他直接不管, 他继续使用锁定的版本,等这次绘画结束之后,他才会把这个修改写入文件,然后在下一个绘画开始的时候,他会读取最新的版本。那这样做有什么好处呢?首先第一点,最显而易见的就是可以保持前缀的缓存命中性能更好,并且更节约前。第二点,他可以避免 a 键在绘画中途修改记忆导致人格飘逸的问题。 那什么是人格漂移问题呢?打个比方,就像现在我们正在写一篇论文,那假如说我们现在写第一章,并且已经把所有的参考论文文献全部找好了,那我们在写的过程中,我们就一边看一边写,对吧?那现在这时候有个人跑过来跟你说,参考文献更新了,你需要加一篇新的,然后再删除一篇旧的, 那你是不是想把这个给红出去?因为你论文写到一半,参考文献给我改了,那这不是捣乱吗?所以说如果说你修改的话,你的逻辑就已经不值价了,这个论证链条就会受到影响。那 herb 的 说法就是你不用管,你就用旧的参考文献来完成第一章的章节,然后在进入第二章之前,你再去拿最新版本的参考文献。这样的好处就是第一章的论证逻辑是稳定一致的,不会因为中途文献的增加修改而改变。 那上面我说的这几点呢?就是 hermes 和小龙虾的最主要的差别。那简单来说,小龙虾就像是一本人工维护的笔记本,你说什么,然后就记什么,满了之后我们就压缩。但是 hermes 呢?它更像是一个自动整理的一个档案系统, 它自己会判断价值不够了,会主动合并,并且会把做过的事情变成一个可以用的技能,这也是它为什么越用越聪明的原因。现在我们就开始安装设置这个 hermes, 然后本地部署 java 这个大模型,并且把两者打通。 那现在我们来安装欧拉玛。欧拉玛是什么东西呢?简单来说,欧拉玛它是一个本地的大圆模型运行器,我们知道所有的大圆模型,它可能参数不同,启动方式不同,那是不是很不方便我们去使用,因为他们没有一个统一的标准。那欧拉玛就做了一件事情,他把常见的这些模型全部包装成了统一的重格,使得我们去很方便的调用切换,所以说它是一个统一的包装层。 那如何安装欧拉曼呢?也非常简单,我们只需要打开他的官网,那么来到他的首页,我们点击 download, ok, 那 可以看到这里,他让我们选择三个系统,我们选择我们的 micros, enix 和 windows, 那 这里我是 micros, 那 我就选择 micros。 那 大家如果是 windows, 我 们就点一下, 然后把这个命令复制终端里面去运行就好了。那,那如果说你发现你在终端运行这个命令是失败的,那我们也可以选择下载它的这个 app 形式,那这里我就选择在终端安装,那我复制这条命令, 打开 terminal, 然后粘贴上去,然后回车。那大家注意,如果说你使用终端安装的话,你最好把你的这个魔法开成 t u n 全剧模式, ok, 那 安装好了之后,它就是这样一个界面,那现在我们来继续安装 java for, 然后把它部署到我们的本地上面。那很简单,我们点击这个 models, 然后这里我们就选择我们的贾玛 four, 然后点进来之后,我们可以看到它这里给了模型的好几个版本,一二币、一四币、二十六币、三十一币和三十一币 cloud。 ok, 那 现在你可能会问,那我怎么知道我该下载哪一个模型呢?那这里给大家推荐一个网站,叫做 what models。 打开这个网站呢,我们只用在这里选择我们的这个 gpu 是 什么, 比如说你是英伟达的,你是 amd 的, 或者你是苹果的,好吧,选择你的 gpu, 这里有五零七零,五零六零,然后比如说你是英伟达的 四零九零,你就可以看到你能跑的很好的模型有哪些,对吧?然后你一直往下拉,基本上可以升了很多模型了,那就是说你跑的有点吃力的啊,这个就是你完全跑不了的, 所以说大家可以根据自己这个显卡的配置去选择,那我们回来安装,那我在这里的话就选择安装这个一四 b 的 版本就好了,然后因为一二 b 确实太蠢了,二十六 b 的 话,我目前这个笔记本是有点吃力,所以说我选择这个一四 b 的 版本就好了。 那安装这个模型非常简单,我们把它的名字复制一下,然后我们打开终端,我们输入欧拉玛库,然后粘贴它的模型名字,然后回车等等,等待它安装就好了。 ok, 那 可以看到现在我们就安装好了,那我们输入欧拉玛 list, 就 会看到我们现在本地安装了哪些模型。 可以看到我们这里本地安装了一个 java 一 四 b 的 版本,然后这个 size 的 话是九点六。那现在我们来测试一下 java 的 多模态信息处理能力,我们可以看到我给了他一张图片和一段文字,可以看到他思考了三十一秒时间, 那现在我们看看他在处理开放问题的时候表现怎么样。现在我给了他一个问题,现在 ai 什么都会做了,那我们普通人应该怎么做?普通人该怎么才能保证自己不会被 ai 淘汰?给我详细分析一下, 可以看到他思考了四十五秒钟时间,然后生成了这么长的回答,并且说的还是挺有道理的。那现在我们来安装一下 hermes agent, 那 安装也非常简单,我们打开它官网,然后复制一下这个命令, 我们打开终端粘贴回车,等待它安装就好了。可以看到他先会看我们一些必要的包有没有,没有的话就给你安装,有的话就直接跳过, ok, 那 现在我们看到他已经把所有的依赖全部安装完成了,然后的话他开始了这个安装向导,然后他检测到了我们已经安装到了 open class 小 龙虾,然后他开始问说你是否想看看有没有什么可以导入的?那我们选择 yes, ok, 那 现在我们看到他在问我们要不要把 open class 的 这个配置牵引过来,然后他给出了一个预览界面, 那如果说你觉得你的这个小龙虾调教的非常好,你可以直接把它牵引过来,那这里我有了演示,我就直接选择 no, 不 牵引过来。 然后现在我们来到了配置界面,那这里我们直接选择快速配置就好,然后这里它就让我们选择你要使用哪个大模型呢?那我们可以看到你可以使用 gemine, 可以 使用 srappik, 可以 使用 openend codex, 可以 使用千万,对吧?可以使用 gitopilot, 也可以使用 hackbase 上面自己下载的这个大模型。 那刚才因为我们已经在本地上面部署了 java for, 所以 说这里我们选择 modividers, 然后进来之后我们可以观察到它多出了更多选项,比如说有智普的,有 kimi 的, 有 mini max 的, 有 kilo, 有 open code 的 等等等等。 那因为我们要选择本地部署大模型,所以说这里我们选择 custom endpoint 就 好,那在这里我们填写我们的 base url, 默认就是这个,大家记住就好,然后复制粘贴,然后这里他们选择填写这个 a j i key, 那 我们直接跳过就好,然后这里他们填写模型的名称,那我们就用填写刚才下载好的模型名称就好了。那这里是加码 four, 那 是 e c b 的 版本,这里他们选择上下文的长度,那我们直接回车默认检测就好。然后现在他们选择是否要进入聊天平台,那我们选择设置就好。 大家可以选择我们要接触聊天平台,比如说飞书,微信, telegraph, discord 都可以,那这里我们选一个菜单,那我们选微信,然后我们回车。先第一步它让我们设置我们的 telegraph, 那 我们只用找到这个 boat father, 创建一个新的 boat, 然后把 token 复制过来就好。 然后这里咱们选择谁能给这个 bug 发消息,那这里大家一定要好好选择,因为说如果你什么都不捡的话,那他就会默认所有人都给他发消息,并且他会回复。那这里我们只用填写我们自己的 user id, 如何获取你的 user id 呢?大家关注这个 bug, 然后给他发一条消息,他就会把你的信息返回过来。这里上我们选择是否要把我们的 user id 作为默认频道,那我们选择 yes, 然后现在他开始让我们选择登录微信了,那我们选择 yes, 把这个链接复制浏览器打开,扫描二维码登录 这里他让我们配置谁可以给这个 boss 发消息就私发消息。那第一个选项就是手动批准,第二个选项就是允许所有的私发消息,第三个选项就是只允许白名单,第四个选项就是谁都不能给我发,那我选择第一个选项就好。 然后这里他让我们配置谁可以建立群聊,然后发消息,他怎么处理群里面的消息?那有三个选项,第一个就是不允许群聊,第二个是允许所有的群聊,第三个就是只允许白名单里面的群聊,那选推荐选项就好, 然后这里他们选择是否要把我们的微信平台作为默认屏,那我们选择 yes, 现在我们已经全部配置好了,然后他问我们是否需要重启网关,那我们选择 yes。 现在配置完成后,他问我们是否需要立即启动,那我们选择 yes, 那 现在我们来接入微信使用,那我们可以看到因为它需要手动授权,所以说那我们在终端运行下这个命令就好。 ok, 那 这里显示已经授权成功了,我们再给他发消息试一下,我们可以看到它这里显示对方正在输入中给出了回复,那我们可以成功使用了。那刚才我们是使用本地部署的模型,那大家如果想切换和云端的话,那也非常简单,我们只用在终端输入这行命令。 hermes model, 然后在这里大家就可以自由切换了。那如果说这里找不到你想要的模型,那大家就可以自由切换了。 那在这里我选择 mini max china, 然后配置一下我们的 api key, 那 接下来配置我们的 base layer, 我 们把它复制过来,然后粘贴。那大家注意一个点,就说如果这里你不是点 com 结尾,而是点 i o 结尾,那就是配置到海外去了,所以说要保证你是点 com 结尾。 然后大家选择自己想要的模型,那我就选择二点七,那现在我们来测试一下。那如果说我们想要启动终端的聊天界面也很简单,我们输入 hermes chat, 我们给他打个招呼, 可以看到我们已经成功替换好的模型。朋友们,那这就是本期视频的全部内容,我是 jerry, 我 们下次再见。

今天是一期 linux 系统下 openclaw 的 安装教程,我们直接开始,首先这个命令是更新系统的软件包锁眼,确保后续安装的软件版本是最新的。 然后安装 q 工具用于安装 openclaw 脚本,然后输入 openclaw 官方安装命令,这个命令会自动帮我们安装 note 和其他环境。 弹出这个配置界面,表示 openclaw 已经安装完成了。接下来我们选择 yes 开始配置, 这里选择第一个快速配置,接下来选择模型,这里我选择的是 kimi 二点五的模型,大家可以根据自己的需要自行选择。 配置完模型之后,下面是对接的各种软件,我们先跳过,后面再配置,这里也选择跳过 这里是配置技能也先跳过,这里也选择。跳过, 这里是选择在哪里使用 openclaw, 我 们使用的是 open to 二四点零四的 server 版本,我是用另一台 windows 的 网页来使用它,所以选择的是第二个外部页面,我们需要在 windows 上的 partial 执行一下生成的这个命 令,输入密码执行就可以了。 接下来我们再复制这个网址, 在 windows 网页下打开这个网址就成功了,接下来就可以使用 open call 了。

服务器存储部署面临多重瓶颈, m 二拆装反锁散热不足。 u 二因接口和空间限制难以部署, e 三 s 新规格却缺乏适配,仓位升级成本高昂。 icdog 以全场景企业级硬盘抽取方案,一站式解决所有存储部署难题。针对 m 二硬盘拆装反锁散热不佳的痛点,我们带来全球首创的可拆卸硬盘抽取架构 mb 七二零、 m 二 k 高密度抽取盒,还有 pcie 四点零转 m 二的 mb 八四二 mpb, 实现真正的机箱外免工具,可插拔操作。全金属结构强化散热风暴,保障硬盘持续满性能稳定输出。 u 二 u 三硬盘性能卓越,却常因接口和空间限制无法部署。 ic doc 提供全方位应对方案。四盘为 pci 五点零抽取了 mb 六九九 v 五及转接组建,满足高密度存储需求。 pcie 叉槽是 mb 幺幺幺,适配紧凑空间、军工级防护。 mb 六零幺 v 四面向边缘计算、车载等严苛环境设计 面向 pci 五点零六点零下一代存储规范。 e 三 s 无需更换,整机即可平滑升级 mb 幺幺幺 f 无转接方案,实现 e 三 s 硬盘无缝兼容现有服务器。二零二六年上半年正式发布,以最小改动获得下一代高速存储能力。 ic doc 持续引领企业存储创新, e 三 s 前沿概念产品 c p 幺三九和 c p 幺四四即将亮相,您期待这些前沿产品尽快量产吗?点赞留言告诉我们您的想法,您的每一次支持都是推动技术创新的重要力量。

今天我将跟着大家一起本地步数加码四,接入 open core, 彻底告别托肯焦虑,接下来跟着我操作。 这里我们先进入 elama 的 官方网站,进入官方网站过后,我们直接点右上角的 download 下载,我们这里是 windows 系统,选择下载 for windows, 点击这里, 这里就等它下载好。下载好之后,我们这里就直接双击运行,这是它的安装界面,我们直接点安装这里,等它默认安装好。 好了,这里 elama 就 安装好了。然后我们到这个地方 elama 的 官方网站,选择 models, 这个地方选择 command 四, 然后这里我们选择我们的模型,这个模型的选择我们根据我们的显卡显存大小来选择。我们这边看一下我们的显存是多少, 这里看到我使用的是四零七零的显卡,显存是十二 g b 的 显存,十二 g b 的 显存的情况下,我们可以选择这个九点六 g 的 模型,这个一四 b, 这个我们直接点进去,选择一四 b。 点击进去过后,我们直接复制这条命令,然后运行一个 cmd 窗口, 直接粘贴这里,它就会欧拉玛会自动地给我们安装这个模型。呃,这里等的时间是比较长的, 这里模型已经下载下来,并且运行起来了,我们向它发送一条消息,试一下你是谁, 反应还是可以的,这就跟了我们信息回答了。好了,在这里过后呢,我们就可以把这个窗口关闭掉, 关闭掉过后,在 lama 这个地方我们去选择这个模型,在这个位置也就可以和它进行通话了。 比如我们问他一句,你可以帮我做些什么, 他已经帮我回答了,在这里呢,我们因为我们是在本地虚拟机上安装的,所以而且我们为了方便以后可以在其他计算机上也可以调用,我们在这地方设置这个位置 点,这个位置点设置这个允许在网络上运行,把它开起来点了就可以了。 好了,我们下一步就开始配在 open core 上配置啊,在这里我们进入虚拟机之后,我已经执行了 npm i, 刚接 open core 全曲,安装 open core 的, 我们这里可以执行一下 mini, 看下我们安装的版本。 openclock 杠 v 是 安装的最新版本二零二六点四点五版本,然后我们执行 openclock on, 在 这里我们进行一个调试,这个地方我们 yes, 这里选择快速,这个地方它是让我们选择大模型,呃,大模型它这里有,我们选择本地的这个位置点确定 这里我们直接就选择本地的,不要选云,上面是带云端的,就选择本地模型。 这地方让我们选择模型,我们选择这个,这就是我们刚刚这个就是我们刚刚下载好的模型,就是 直接回车。等一下, 这里让我们选择通讯工具,我们这直接跳过,暂时不管这个,直接跳过。 呃, scale, 我 们这边也选择否先进行最简单的安装 网关,我们就直接重启, 选择 open ray web ui 好 了,我们看一下 open core 运行起来了没有。 open core getaway style sta 好了,已经运营起来了,我们进去看一下, 这边需要 token, 我 去看一下 token 是 多少,关于 token 的 话就是我们,我现在是在虚拟机里面安装的, 我要重新打开看一下,在虚拟机里面安装,我们就直接去通过这条 mini 访问我们的虚拟机, wsl 的 虚拟机访问,然后无斑图选择 home 目录,选择我们的用户, 然后这里选择点 opencloud 这个文件夹,然后这一个 opencloud json 让我们看一下,到 git 里面去,这个地方就是我们的 talking, 复制粘贴下来到这个地方,点连接好了,我们尝试给他发一条消息,你是谁? 在主位置这个地方,我们可以看到这地方是我的模型。 我再问他一条消息,你现在使用的是什么模型? 看这里已经是我当前运行的模型 工具,在这里我们就可以看到了,我们现在整个 open call 来使用的是我们本地模型,就不需要去购买 token 了。好,今天内容就这么多,谢谢大家。