- 博客(306)
- 问答 (13)
- 收藏
- 关注
原创 大模型实战(三):langchain+OpenAI实现基于RAG的智能问答(超详细)
构建向量化知识库也可以使用Ollama或者OpenAI的embedding模型,但是由于它们库里面的embedding模型较少,且大多数不支持中文,因此推荐大家到huggingface找合适的embedding模型建立自己的知识库。注意这里使用的模型名称要正确,国内代理商提供的模型可能和官方会有一些小差别,要以你的OpenAI Key提供商的模型为准。这里的实例化还是为了之后调用已经构建好的知识库做准备,并不是用于再次重复为文档编码、得到知识库。),调用OpenAI的模型,搭建自己的AI问答机器人。
2024-11-19 09:43:28
669
原创 OpenAI调用报错:openai.BadRequestError: Error code: 400 - {‘error‘: {‘message‘: ‘The completion operation
找到下面这个调用语句,修改model的名称即可。具体修改成什么请看你的OpenAI KEY提供商有哪些模型,
2024-11-19 09:39:54
2019
原创 大模型实战(二):langchain+Ollama调用本地大模型实现RAG(保姆级)
主要需要修改的是llm = Ollama(base_url= url, model="qwen2:72b",temperature=0.3), # 模型选择这个语句,该语句中,url就是第2步当中填写的ip地址和端口组成的大模型部署地址,model就是你想要调用的模型名称(该模型必须已经部署在url所引用的地址上),是模型回答创造性程度,该值越大,AI机器人的回答会越不可预料一些。# 定义查询方法。
2024-11-18 16:58:58
1291
原创 大模型实战(一):langchain调用huggingface大模型建立本地向量化知识库RAG(保姆级)
注意这里第3行代码中的chunk_size指的是将输入文本序列切分成多个部分时每个部分的最大长度,chunk_overlap 则是指相邻两个 chunk 之间重叠的 token 数量,这样做是为了保证文本语义的连贯性,如果你的原文档。下载后建议放到当前程序所在的文件夹内,这里代码的model_name填写你下载的大模型代码包的路径。对文档编码形成本地知识库无需使用GPU,只需要用CPU即可,所以笔记本没有好的显卡的小伙伴也不用担心啦~这里是对第3步中分割好的文档进行编码,使用的模型是。
2024-11-18 15:24:59
989
原创 从huggingface下载embedding大模型报错OSError: Error no file named pytorch_model.bin, model.safetensors
报错:OSError: Error no file named pytorch_model.bin, model.safetensors, tf_model.h5, model.ckpt.index or flax_model.msgpack。解决:去huggingface详细核对文件夹下面的包有没有遗漏,一般是少了pytorch_model.bin文件,下载下来放进去就好。我是用的git命令拷贝的,但回头核对发现还是少了pytorch_model.bin文件。
2024-11-14 11:34:24
746
1
原创 Axure从0到1学习之路(三):应用实例(附详细操作步骤)
产生数字,因此“开始的时候”对应的触发事件应写为“载入时”,随机产生通过“设置文本为函数实现”,又考虑到数字需要不断变化,因此这是一个以固定间隔时间为条件的无限循环(直到关闭这个界面),所以可以。:鼠标触碰地图块时变色并显示地名,移开后恢复原来颜色并隐藏地名(方便起见,以矩形代替某地为例)此外,我们不希望初始就显示地名,因此需要选中地名的文本框,右键将它设置为“隐藏”将需要的图形拖入(这里方便起见以矩形为例,实际可以导入需要的地图)最终效果(由于上传视频不便,仅放不同时刻的截图组合供参考)
2024-09-10 10:47:53
742
原创 pytorch成功安装cv2(报错failed building wheel for opencv-python解决方法)
【代码】pytorch成功安装cv2(报错failed building wheel for opencv-python解决方法)
2023-12-26 15:04:06
1698
1
原创 【力扣经典面试题150道(java)】392. 判断子序列
Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。时间复杂度:O(t.length()) (看似2个for循环,2个指针在前进,但是他们是同时发生的,且最多就移动了t.length()的距离)字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。最简单的就是在原来的基础上再加一层for循环,用于遍历每一个输入的Sn。的时候,“指针”挪到下一个元素。字符串的时候,所有s的元素都按顺序在。当中的元素,另一个指向字符串。
2023-09-13 22:33:09
317
原创 【力扣经典面试题150道(java)】1. 两数之和
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。空间复杂度:O(1) (来自于定义的一些int变量)你可以想出一个时间复杂度小于 O(n。O(n) (主要来自于for循环)O(n)(主要来自于hash表)
2023-09-13 18:26:05
268
原创 【力扣经典面试题150道(java)】290. 单词规律
指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”输入: pattern = “aaaa”, s = “dog cat cat dog”给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。中对应的单词都没有对应的。中对应的单词都有对应的。
2023-09-13 11:53:55
410
原创 【力扣经典面试题150道(java)】205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。因此,我们需要构造两个hash散列,长度均为128(因为字符是所有可见的ASCII字符),字符串中字符的ASCII码,值value(也就是hash[i])存放的是对应的。字符串中字符的ASCII码,值value可以用0或者1表示是否被占用。字符串中各个字符是否被对应,它的键值key(也就是下标)代表的是。字符串的映射关系,它的键值key(也就是下标)代表的是。
2023-09-12 22:06:29
190
原创 【力扣经典面试题150道(java)】125. 验证回文串
时间复杂度:O(2*s.length+s’.length) (2是因为toLowerCase遍历了一遍字符串,s’.length指的是经过删除非字母数字之后的字符串长度)如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。先进行string字符串的删改(转换大写为小写,删除字母数字以外的元素),然后再遍历字符串比较是否对称。(1) 对于方法二,如果两个元素不同,需要判断是大小写不同,还是“真”的不同(解释:在移除非字母数字字符之后,s 是一个空字符串 “”。
2023-09-12 15:54:12
348
原创 【力扣经典面试题150道(java)】383. 赎金信
空间复杂度:O(1) (其实是O(26) + 单独的变量占用的常量空间) (略少于方法1)输入:ransomNote = “aa”, magazine = “aab”空间复杂度:O(1) (其实是O(26)*2 + 单独的变量占用的常量空间)输入:ransomNote = “aa”, magazine = “ab”时间复杂度:O(magazine.length()+26),取决于。时间复杂度:O(magazine.length()+26),取决于。
2023-09-12 11:52:44
260
原创 【力扣经典面试题150道(java)】28. 找出字符串中第一个匹配项的下标
输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。字符串中的)元素,比较之后的字母是否一致,一致则输出下标;字符串的第一个匹配项的下标(下标从 0 开始)。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。(3) 如果在(2)中没有输出,则输出。字符串,如果是,直接。
2023-09-12 11:15:34
312
原创 【力扣经典面试题150道(java)】14. 最长公共前缀
(1) 由于每一个英文字符串长度不一,但是最长公共前缀肯定不大于最短的字符串长度,因此,先通过for循环找到最短英文字符串的长度;(2) 每取一个字符,遍历每一个字符串,核对是否相同,如果不同,立刻停止,记录此时下标,返回公共字符串。str.substring(i,j)返回的是str.charAt(i)到str.charAt(j-1)。输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]如果不存在公共前缀,返回空字符串。
2023-09-11 23:20:44
218
原创 【力扣经典面试题150道(java)】58. 最后一个单词的长度
由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。要求最后一个单词的长度,那么从后向前遍历字符串找到最后一个单词统计长度即可。输入:s = “luffy is still joyboy”单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。解释:最后一个单词是长度为6的“joyboy”。解释:最后一个单词是“World”,长度为5。解释:最后一个单词是“moon”,长度为4。输入:s = “Hello World”字符串可能会以空格结尾。s 中至少存在一个单词。
2023-09-11 22:51:39
254
原创 【力扣经典面试题150道(java)】13. 罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。,即为两个并列的 1。
2023-09-11 22:41:49
95
原创 Boyer-Moore算法:多数投票算法(majority voting algorithm)
这里的count代表的就是当前的candidate与其他元素之间出现次数的差距的绝对值,最后的candidate就是所找出的出现次数最多的元素(众数,也可以想成是得票最多的人)。上述过程与下面的动画所示是一致的。众数(majority element)的数目必须。时,count就增加1;的时候,candidate更新为。遍历数组,当遍历到的数组元素。时,count就减1;证明过程可以参考论文。
2023-09-11 18:33:37
659
原创 【力扣经典面试题150道(java)】169. 多数元素
空间复杂度:O(logn) (arrays.sort的O(logn) + 定义变量的O(1))时间复杂度:O(nlogn) (arrays.sort的O(nlogn) + for循环的O(n))因为数组长度只有n,且要求元素出现的次数大于n/2,因此数组最中间的那个元素一定会是答案。首先按照升序进行排序,然后遍历升序数组,找到出现次数大于n/2次的元素并且输出。尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。输入:nums = [2,2,1,1,1,2,2]
2023-09-11 18:13:14
126
原创 【力扣经典面试题150道(java)】121. 买卖股票的最佳时机
最值接的暴力法是利用两个for循环,计算出每一个prices[i]对应的最大利润,但是会超时。思路:采用的是每一次都假设当前的prices[i]是最小的,遍历prices[i+1]到最后一个元素,找到最大的元素值,然后作差,记录最大的差值最后输出。解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。,因此,我们可以遍历prices数组,记录下每一个日期之前的买入最低价,并且更新最大利润再输出即可。输入:[7,1,5,3,6,4]
2023-09-11 16:56:48
170
原创 【力扣经典面试题150道(java)】26. 删除有序数组中的重复项
且要求最终的数组保持原来的顺序。因此我们可以从头到尾遍历该数组,每当出现一个新元素就保留,且用for循环排除它之后的重复元素,直到数组的最后一个元素。这中情况,即最后一个数字是重复元素,因此我们需要加上判断(体现在代码的exist变量中):3之后的元素是否是重复元素。,返回删除后数组的新长度。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。解释:函数应该返回新的长度。
2023-09-10 19:08:49
143
原创 【力扣经典面试题150道(java)】27. 移除元素
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]
2023-09-10 17:43:06
234
原创 【力扣经典面试题150道(java)】88. 合并两个有序数组
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [1], m = 1, nums2 = [ ], n = 0。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [ ] 和 [1]。输出:[1,2,2,3,5,6]
2023-09-10 12:35:43
208
原创 一、 java语言基础知识和搭建java编程环境
,即编译后的java程序可以在windows系统中运行,也可以在linux系统中运行(又称为“跨平台”)。这是因为SUN公司(现已被ORACLE公司收购)开发了java虚拟机JVM(java virtual machine),让java程序在JVM中运行,这样java程序的运行环境不与计算机操作系统直接交互,从而实现了可移植。java语言底层是由C++实现的,但它屏蔽了C++中指针的概念,且不支持多继承,因此java语言相较于C++是简单的。java语言是纯面向对象的。java语言可以做到“
2023-09-06 12:06:38
267
2
原创 (保姆级)利用ffmpeg将flv批量转mp4
在实际使用过程中,我遇到了大量flv文件需要转换的情况,因此将批量转换的方法也在此分享。在存放flv的文件夹内,输入cmd打开命令窗口(这样可以省去cd路径的步骤)解压zip安装包,打开bin文件夹,将路径添加到系统变量。依次点击 “此电脑 – 属性 – 高级系统设置 – 环境变量”最后,打开cmd,cd到bat文件所在的路径下,直接输入。找到系统变量中的path,选中后点击 “编辑”如果希望转换完成的.mp4文件。如果希望转换完成的.mp4文件。执行bat文件即可。
2023-03-31 11:50:08
6139
原创 31. 下一个排列
整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。(2) 在下标为[i+1,end]的区间内,从后向前找到第一个数a[j],a[j]满足: a[j] > a[i];a[i], a[i+1](满足a[i] < a[i+1])(注意:在while中。不存在一个字典序更大的排列。
2023-03-27 23:39:19
180
原创 28. 找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1。链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string。来源:力扣(LeetCode)
2022-09-18 13:36:45
806
3
原创 45. 跳跃游戏 II
本题的考点是贪心算法,要使得步数最少,那就要使每一步走的最“有价值”——下一步的下标与下一步的值之和最大(比如:题目所给的数组a为[2,3,0,1,4],第一步可以走到a[1]和a[2],但是a[1]的“价值”是1+3=4,a[2]的“价值"是0+2=2,显然,选择a[1]可能走的更远)。链接:https://leetcode.cn/problems/jump-game-ii。给你一个非负整数数组 nums ,你最初位于数组的第一个位置。你的目标是使用最少的跳跃次数到达数组的最后一个位置。
2022-09-17 16:59:00
188
原创 264. 丑数 II
的思路,为了避免在2,3,5的公因数(如:2和3的公因数6)上取值重复,需要对每一个存入ans的值进行判断——是否是。给你一个整数 n ,请你找出并返回第 n 个 丑数。丑数 就是只包含质因数 2、3 和/或 5 的正整数。3或者*5产生的,如果发现是公因数,都需要让下标加一(超时:采用的是递归分解质因数,递归耗时过长。
2022-09-13 20:06:30
145
原创 2027. 转换字符串的最少操作次数
一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 ‘O’。注意,如果字符已经是 ‘O’ ,只需要保持 不变。给你一个字符串 s ,由 n 个字符组成,每个字符不是 ‘X’ 就是 ‘O’。返回将 s 中所有字符均转换为 ‘O’ 需要执行的 最少 操作次数。
2022-09-13 10:37:42
327
原创 2154. 将找到的值乘以 2
如果在 nums 中找到 original ,将 original 乘以 2 ,得到新 original(即,令 original = 2 * original)。给你一个整数数组 nums ,另给你一个整数 original ,这是需要在 nums 中搜索的第一个数字。只要能在数组中找到新 original ,就对新 original 继续 重复 这一过程。输入:nums = [5,3,6,1,12], original = 3。输入:nums = [2,7,9], original = 4。
2022-09-07 17:27:02
226
原创 PAT甲级1005:Spell It Right (20)
题目Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.Input Specification:Each input file contains one test case. Each case occupies one line which contains an N (≤10100).
2022-05-13 11:38:51
286
空空如也
浙大PAT乙级1054-测试点2
2021-12-15
浙大PAT1049数列的片段和测试点3、4,为何更换相乘顺序就无法通过了?
2021-12-03
PAT乙级1049测试点3,为什么调换乘法顺序就能通过?
2021-12-03
浙大PAT乙级1095(C语言)测试点3、4过不了
2021-12-01
浙大PAT乙级1075链表元素分类C语言 测试点5运行超时,请问如何优化
2021-10-13
浙大PAT乙级1067试密码(C语言)测试点2过不了
2021-10-11
浙大PAT乙级1048测试点4、5无法通过,求解
2021-10-09
浙大PAT乙级1040 C语言 测试点3、4过不了
2021-10-08
浙大PAT乙级1039(到底买不买)C语言测试点2无法通过
2021-10-08
浙大PAT乙级1005 “继续(3n+1)猜想 ”python解答部分正确_求教如何修改
2021-03-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人