- 博客(92)
- 收藏
- 关注
原创 langchain 尚硅谷day4-5 RAG检索增强生成Retrieval-Augmented Generation
终于到RAG方面的内容了,RAG其实很早之前就有所耳闻,之前还听舍友跟我高谈阔论过。现在来学一下他的工程化实现还真是有点意思。RAG目标:抑制大模型的幻觉,让模型的内容有理可依。我觉得阳哥说的:类似考试时有不懂的,给你准备了小抄。这个比喻挺形象生动。RAG到底是怎么做的?RAG一共分为两个主要的步骤:1.Index 制作索引的部分。
2026-04-29 16:54:05
392
原创 langchain 尚硅谷day4-5 向量数据库
然后我们通过调用这个对象的方法可以实现单句的嵌入与文档词的嵌入。终于终于快复习到我伟大的RAG方面的内容了。在RAG技术之前的前置知识:就是这个向量数据库,与传统的数据库一对一精确的进行检索不同,向量数据库其实是一种比较模糊的检索方式。千问的这个API输入的API key在不同的地方是不一样的喔哈哈哈哈。我们还是想基于Redis进行一个向量存储,但这里的Redis不是普通的Redis是我们上面讲过的redisStack。包括嵌入的这个循环是怎么操作的,还有用python去实现了一波余弦相似度的计算。
2026-04-29 11:10:49
405
原创 langchain 尚硅谷day4-5 Tool工具调用部分(function calling)
首先我们需要的是一个参数解析的大模型,就是能把我们的问题变成参数输入的形式的一个大模型。工具执行对应的操作后将结果返回给程序,然后我们的程序再去把具体的内容返回给大模型,大模型再根据相应的内容进行下一步操作!OK知道了Field这个方法后我们可以这样去理解:很多东西可能只是我们自己知道,但是没有传递给大模型,比如说我们这个参数有什么限制之类的,然后这个Field就可以去实现调用把我们定义的参数内容以大模型的可以读懂的格式书写。我们需要知道的就是具体来说有四个角色:用户,程序,工具,大模型。
2026-04-29 09:27:03
397
原创 langchain 尚硅谷day4-5 记忆缓存部分!
然后现在我们需要去实现的就是redis stack的存储方式,因为redis stack其实是满血redis,所以它支持了很多redis以前不支持的功能。我们现在对大模型的调用没法实现对记忆的缓存,要是想实现记忆的缓存的话,我们需要去实现问答的存储以及重新调用。记忆是真正实现对话交互的一个非常重要的模块。下面的这段代码其实比上面的会更适合全面一点,这个代码设置了记忆分对话存储的功能,他为每个不同的用户初始化了一个不同的实例。基于这个抽象基类会有很多的不同的存储的方式的扩展,最重要的就是下面框下的几个内容,
2026-04-28 16:46:53
421
原创 langchain 尚硅谷day4-5 LCEL部分内容!
这两天的内容可不是小卡拉米,也是蛮多的。可能也要写上几天了。等讲完这两天的内容,再重新复习一下关于parser部分的内容加上异步编程方面的内容。
2026-04-28 10:03:40
208
原创 langchain尚硅谷day1-3 p2
这一部分,其实我们只需要将大模型的内容给它就行。但过程是这样的:我们先需要利用JsonOutputParser()这个类去构建一个对象,然后通过这个对象去调用invoke()方法,把大模型的一堆输出他。祝福我吧各位,希望她能听我说话,希望她能听得到吧。1.在agent的构建中,其实我们有时候可能更需要的是一种结构化的数据,这种数据更稳定一些。当我们需要比较严格地限制输入的时候:可以利用关下面的这个Annotated去生成变量。这样的话就可以得到下面这样的json格式的内容。他这个就是专门来设置约束的。
2026-04-25 15:48:21
83
原创 langchain 尚硅谷day1-3总结实验
这里需要多填一个的就是模型的提供商,这里默认都填openai,如果是langchain支持的模型厂商,更改model_provider,可以不用base_url,咱们用的千问不在此列,所以直接只用openai,然后直接附上base_url就可以了。上面就是云端模型部分的一些内容了,当然还有我们前面提到的我们怎么去更换模型的厂商之类的一些内容。下面是提示词如今的变化:多角色说的就是分为系统提示词(预先说的),人类提示词(想要问的问题),ai提示词(ai回答的内容),工具提示词,后面调用工具的时候会提及。
2026-04-25 10:47:37
421
原创 langchain下载以及相关的一些包的下载
下面这个是初始化的本地ollama模型的代码。首先下载一个3.12的python环境。下载langchain本身。下载openai的专用组件。
2026-04-21 22:27:36
106
原创 在docker下部署Xinference
然后经过漫长的等待解决一些小bug就行了!1.首先先去弄一个持久化的目录。2.给docker提权。3.执行下面的下载代码。
2026-04-15 17:57:53
68
原创 在本地服务器上部署docker
3.添加Docker的官方秘钥以确保软件包没有被截胡,是正版的。然后来拉取一下hello-world看看。5.下一步就是去安装Docker了。4.设置Docker的存储库。2.去安装一些必要的工具。
2026-04-15 11:04:17
34
原创 大模型学习2
微调,在已经成熟的经过了预训练,SFT,RLHF这些操作过后进行的客制化操作。--模型能不足或者希望固化一些知识省promote的时候。工具调用:1.function call 不足:工具实现与服用比较复杂。可能代码没有很多健壮性的考虑禁不起测试。1.大语言模型的大脑 2.有记忆 3.会用调用工具 4.可以去进行规划决策 5.可以执行某个操作。RAG --大模型知识冻结 减少幻觉 类似开卷考试。1.全参微调 需要至少80G以上的显存。MCP标准,标准化工程函数。新语言新方式:续训。
2026-04-12 20:00:43
41
原创 大模型概述1
2. SFT--》学会按指令回答问题 (Supervised Fine-Tuning)监督微调,让模型学会如何按指令和执行特定任务,这样只能学到类人,但是没有办法真的完全是人。分类方式一:多模态的,多种形态的模型,专门处理文本:语言大模型,多模态理解大模型(图生文,非文本模态转换为文本),多模态生成大模型(文生图,文本模态转换为非文本模态)。大模型4要素,大模型权重参数,推理代码,训练代码(不开源),训练数据集(不开源)模型需要充当的角色,目标明确,背景与上下文,输入格式,输出格式,质量与约束。
2026-04-10 09:16:33
43
原创 力扣日刷48
我们需要一层又一层地去遍历二叉树,具体来说,我们cur数组去装当前的值,我们用nxt数组去装载下一层的值,当cur全部为空的时候退出装载。下面就是具体的代码:有一点困惑的地方就是该怎么生成nxt。其他的我觉得没什么问题。代码与上一题相似,只是需要设置一个反转判断的变量以及一个反转的判断。我不输出的时候需要干什么?分为什么时候我把结果输出(边界条件),其实也用层序排列可以做,只需要去选择出来那个值就可以了。这里对递过去归回来的思路有了一定的了解。3.下一个子问题是什么?这里的边界条件就是当字母的数字。
2026-04-09 08:42:02
32
原创 力扣日刷47-补
因为我们设置了返回条件,所以只有当确实到底了或者找到结点的时候才能返回,然后我们便是要去判断是不是公共祖先,当左边返回来有值,右边也返回来有值的时候这个节点就是我们要的最近祖先,如果左边有值,右边没值的话,返回左边的节点。这一道题是这样的,跟上一题差不多这一题,会更简单一点,这一题用到的是更加简易的判断。返回递归条件设置为了当两个值都在一侧的时候进入迭代,在哪一侧就进入哪一侧。然后直到p跟q的值在当前节点的两边。首先,我们的边界条件是,如果节点为空或者节点是pq其中一个返回节点的值。
2026-04-07 16:47:57
47
原创 力扣日刷47
其中迭代的逻辑是这样的,我们需要返回的是一个边界情况,当前节点值的通过比对左右的内容来更新判断。如果inf就越界了。这题我还真没有完全掌握nnd,它保存了两个左右边界的信息,然后当当前节点不在左右边界夹住的范围的时候我们返回一个报错inf。先左到底,这样的话我们就能得到最小的那个值,然后开始返回来跟下一个结点值进行比较,如果确实前项结点值小于后项结点值,我们就可以返回True,不然就返回false,或者只去判断返回false,当所有节点都不返回False的时候就返回True就好了。98.验证二叉搜索树。
2026-04-07 11:02:05
29
原创 力扣日刷45
这道题有点意思,这道题是求取树的深度的plus版本,这里我们的解法也是比较有意思。好那我们看看边界条件,边界条件就是最后一步需要返回什么,也就是到边界了该返回什么这里来说就是返回0,下一步,我们需要看看子问题怎么去拆分,找子树深度我们需要去遍历整个树,所以这里的递归就循环调用当前的方法也就是self.方法,通过不断把左右子树放入然后返回去完全遍历树。这一题其实跟上一题判断是否为相同的子树是一样的,只是我们的条件需要去做一下更换,对称的二叉树,需要对比的是左树的左树跟右树的右树,有点绕口不过确实就是这样的。
2026-04-06 21:09:58
61
原创 力扣刷题日常
题目中要的是不出现重复,最小不重复的判断其实就是两个元素,所以我们循环当cur.next 和 cur.next.next 都存在的时候可以运行,如果只有一个元素的话循环就中止了。然后到了下面第二部分,如何删光这重复的内容,我们需要知道的是,cur指向的是安排好的处理好的元素,而下面两个元素的指针是不确定的。我们可以得出来,head2为最后一个元素的时候,其实我们是不需要的,因为这个元素在原链表中也是存在的,我们只需要去保存原链表中的内容就可以了,所以我们的条件是head2.next。b+c是一圈的圈数。
2026-04-05 10:37:15
322
原创 力扣刷题复习
我们可以通过mid与mid+1的对比看出目前mid中的上坡与下坡关系,如果nums[mid]<nums[mid+1]的话,我们就可以让left指针等于mid +1,否则就让right指针指向mid-1。所以我们这么来玩:让mid的值与这个值做对比,如果mid大,那就说明是在第一段,我们可以去让left=mid+1,如果比mid小,那就说明在第二段我们可以让right =mid-1,一样是为了错过峰值让left等于峰值。第二种情况,首先还是抓住,我们要让target在我们的右边,我们才能更新左指针。
2026-04-02 16:30:17
313
原创 力扣日刷复习:
利用enumeratre去做枚举,然后将枚举的字母去计数,如果枚举出来的字母正好大于1个了,那就去移动左窗口,直到只有一个,然后循环外需要去比较不同的for循环下面的最大无重复子串。713.乘积小于k的子数组:要点:1.也是利用滑动窗口去解决这个问题,原因:单调性。原因:单调性,全部的内容都是大于0的。167,两数之和: 解法,相向双指针,原因:1.提供的是递减排序的数组。42.接雨水,左右双指针,利用谁短谁动的原理,循环条件为两个指针相遇相等,因为可以指向同一个位置进行最后的计算。
2026-04-01 16:45:38
39
原创 Dify4:functioncalling
1.脚本开发---生成python代码 2.后台运行脚本API 3.创建工具 4.配置Schema 5.测试 6.应用ps:这个我得自己走一遍,然后增加一些每日科技实时汇报之类的功能后续补充。
2026-03-23 09:46:41
66
原创 Dify3:RAG介绍说明
出现:大模型训练出来之后存在一些问题:1.大模型训练的语料存在一定的时间性,时效性不足,无法直接基于本地知识去回答时效性比较强或者比较近的信息。2.大模型答非所问,存在幻觉,RAG可以减少幻觉解决方法:RAG ---- 检索增强技术具体的流程图就是如下图所示,我们输入的文本,需要补充最新的背景信息,然后再给我们产生回答,那他是怎么获取需要补充的最新消息的呢?先将我们的问题嵌入成向量,再在知识库的关系空间中找出最近我们知识的部分的上下文,然后整理打包塞入变成完整的promote。最后再输出。
2026-03-21 09:01:28
171
原创 Dify2:提示词工程与运用
角色越具体回复越专业:职业身份,专业领域,性格特征,从这三个角度分析一下。4.避免过度道歉,内容需要去做一些。,让智能体按一定的格式进行输出。
2026-03-20 16:39:15
42
原创 Dify的部署(详细步骤一步一步)
前言大模型本身具有局限性,1.知识老旧 2.无法联网 3.不能执行实际操作 4.领域知识中深度知识不足。---干不了活AI Agent -- 能力:1.工具调用 2.有专属知识库 3.可以拆解任务。主动执行。大模型+工具。能聊天能做事。Dify,是一个大模型构造工厂,低代码无代码。100多个主流模型介入,可以满足各种需求。
2026-03-20 14:40:32
353
原创 Python中:zip(w,w[1:])的返回
返回的zip取决于zip中最短的那个序列,如一个长度为10的序列与一个长度为5的序列,取值为长度为5的序列!
2026-03-12 10:57:29
23
原创 魔法方法__getitem__介绍
_getitem__方法跟昨天的__call__方法其实是蛮类似的,这个方法跟call的调用不同,这个方法是给实例加上[x]来调用的,其中的x是我们想要查询的项的代称。call可以理解为某个机器的启动按钮,输入相应的内容或是不输入都可以启动,getitem可以理解为在某个抽屉中找到相关的东西的操作,这两个魔法方法都挺有意思的,分别实现了方法调用跟切片这两个操作!
2026-03-12 08:48:26
21
原创 魔法方法def __call__(self,x)
就是类里面最通用方法的化简,当我们初始化好实例n之后,只需要在实例n后面加个(x)便可以调用魔法方法,就是不用特定去找某个方法,可以说是实例最主要用的方法,如果实例是初始化一个人的名字,性别,性格之类的信息,那么这个方法就是你叫它的名字他的举动!
2026-03-11 10:18:39
20
原创 BatchNorm2d详解
高层的网络需要去不断调整适应输出带来的分布的偏移 --- 内部协变量偏移。(不同层之间存在输出的分布偏差,层次深的时候会影响整体网络的训练效果以及训练速度)2.输入的值可能非常大也可能非常小,这样的数值塞入到模型中之后会让一些以sigmoid或者tanh这样的很大或者很小数值的时候的输出饱和的神经元。,第二层又跟第三层训练的分布不同,训练的时候,随着上一层分布变了下一层分布也要变化,层次变得十分的臃肿,3.batchnorm2d是什么?加快收敛,防止过饱和陷阱,在没有BN层的时候,训练。
2026-03-06 11:52:35
65
原创 实习投递小结
3.安可招聘(已经投具身智能 - 算法实习生)----做准备。后面再继续投,我不信我连个实习都找不到,持续保持更新~~~准备开始投实习投满100个!2.广电运通(已经投多模态算法)--- 做准备。1.小马智行(已投实习研发)--- 做准备。
2026-03-05 21:49:45
28
原创 多模态模型(图文)输入是怎么 Tokenize 的?
回答:首先,什么是Tokenize?Tokenization其实是一个分词的过程,他的目标是将。早期的方法有一词一模型的词袋模型方法,现在主要使用的是或者是。第二个问题:与embedding有什么区别?Tokenize 的目标主要将文字的内容(不含图像)给标签化,比如说用1代表i 用2代表love这样,embedding就是将标签化的标签内容给降维变成稠密的表示。输入一个标签 如10 得到的是一个高维的向量如[0.1,0.32,0.32....]这样的。
2026-03-05 12:03:25
244
原创 力扣日刷26112
第8题:这题可不简单,虽然他的代码很简单,但是其实已经包含了很多的内容,其中最为关键的是ans += left这个处理的理解,当我们不理解的时候,只觉得他是很简单的一行代码,他其实是一个完备的解的相加。这题也是用滑动指针,不过有一些条件不一样了,还有就是内部的循环条件其实是这些题的变数,外层就是一个一直往右的指针。第五题:跟上面的和不超过多少的子数组如出一辙,都是用同向的方法就可以解决。也是看了题解才写出来的,虽然是很标准的同向双指针,但是还是有点困难。第十题:逆反思维,找最大的集合,然后就可以求出来了。
2026-01-13 15:51:37
420
原创 力扣日刷26111
1.s[i].isalnum可以判断是否是字母或者数字。是的话返回true,可以用来消除标点空格。双向指针,两边往中间靠,同时记录下靠的过程中的最大取值。靠拢的依据是那个边比较短。125.验证回文串 这题没啥意思,主要是需要知道。先做4道题:11,42,125,2105。2.s[i].lower()可以小写化。时间复杂度空间复杂度,O(n)程度。第一次看到这题,有点子意思。今天仍然是双相双指针。2105.给植物浇水。
2026-01-12 13:18:46
315
原创 力扣日刷26110
这道题我没有做出来,思路有点像统计下标那道题。重写了一遍也没写出来,绷不住了哈哈哈。我再来一遍看看怎么样。ok最后一遍写出来来了。2.三数之和题目复习,难点1.定一个数然后变成两数之和题目。还有就是ijk的更新。相向双指针的解法:主要是需要理清楚count到底应该加几的关系。断更了许久,今天开始重新学习:打算跟着视频学习了。3.2824 有暴力解法:两个for循环可以解决。1.两数之和题目复习,构建相向双指针。今天一共写6题:都是。
2026-01-11 10:41:38
247
原创 鸢尾花机器学习复现说明
我们使用scikit-learnAPI辅助我们进行整个实验。在这个API中会存有一些数据的下载链接,他们还将数据封装好了,我们加载数据时(iris = load_iris())会返回一个字典类型的整个数据集。通过对字典的不同键的点击进入,我们就可以实现数据的加载。
2026-01-07 17:23:29
301
原创 力扣日刷251121
这一题,用迭代的逻辑就是:准备俩指针,一个负责一步一步往后走,另一个就一直指着头。往后走的指针走向哪个链表的判断条件是:两个链表的当前存储的值谁大,循环的条件是两个链表都不空。其实是一样的,这里我开始做的时候少写了一步迭代开始更新的:cur =cur.next 这一个逻辑是非常关键的一步,没它的话智能一步一步地走。意思差不多是吧哈哈哈哈。
2025-11-22 09:54:28
245
原创 vscode 中如何去选择不同的远程环境去debug
ctrl + shift +p 先调出上端命令行,然后输入python select interpreter 点击选择自己需要的interpreter即可!或者直接点下面也可以!
2025-11-20 16:32:38
242
原创 vscode远程连接方法:
连接即可,连接成功后。下面就是可以用vscode远程查看与控制相关目录之类的东西了!做完之后右下角是有一个连接的东西的,点击连接,然后输入密码。然后就是你ssh连接的地方了,这里的ssh连接 (然后点添加新的主机。
2025-11-20 16:23:02
144
原创 Linux看ip,改用户名字加权限,在单独用户下设置miniconda
bash Miniconda3-latest-Linux-x86_64.sh 默认安装在用户当前目录下,这个得自己看需要安装。安装完后,会有是否初始化miniconda的选择,选择yes即可。没有出现(base)也就是启动环境,是因为我们需要对环境进行一下激活。xxx (想要提权的用户名)xxx (自己想要的用户名)了,现在该看看gpu了!利用该代码便可以激活。
2025-11-19 18:04:15
276
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1