- 博客(96)
- 收藏
- 关注
原创 对话系统学习,问答型数据库,闲聊型对话数据库
LLM输出: {'function':'BuyTicket','params':{'departure':'北京','arrival':'上海'}}在实际工作中,比如修改了系统中的某一点东西,对整体都已潜在的影响,为了能测试完整的功能,于是需要对话模拟器不断发起请求,测试某个功能分支。准备很多问答对,然后用户问题来了,做相似度计算找到最相似的,找到就找到答案了,现在也可以用embedding来做,文本转向量的方式。nl2sql的方式,同时也可以用大模型来做,给表结构和问题,让大模型做语句,然后执行。
2026-06-06 17:20:20
176
原创 基于LLM的垂直领域问答方案,知识图谱
如果把每个SQL都写个对应的问题,那么数量会非常夸张,比如查**歌的时长是多少,那数据库早就装不下了,实际上这种问题只是换槽位的问题,所以是一个到槽位的sql,然后从q中提取。由于知识图谱中的知识来源广泛,存在知识质量良莠不齐,来自不同数据源的知识重复,知识间的关联不够明确等问题,所以必须要进行知识的融合。,因为一个三元组一般称第一个实体为头实体,后面那个称为伪实体,5个就是头实体,头实体中间,伪实体,伪实体中间,无关字。就是拆解很麻烦,另外完成的sql语句也只是简单的,多表关联,嵌套则没办法处理。
2026-06-04 18:02:10
229
原创 多模态相关知识,大模型怎么解决所有语种一起编码问题 ,KV cache推理加速
把一整张图切成若干个小块,这些小块按顺序来排序,一张图本身就是一个大的矩阵,然后过个线性层,类似于文本的embedding,加上位置编码,然后交给模型就可以,因为模型处理的是张量,只要能转换成张量,模型就能处理。着的是文字编码,竖着的是图像编码,对角线上的是对应的,其他不对应,最终训练出,也就是目标,只有对应位置是1,其他为0。字符集合 ['a','c','d','e','g','h','i','m','n','o','s',''t]
2026-06-01 17:00:06
243
原创 RAG方法,FunctionCall和Mcp,Agent
这样,每个人都能开发自己的function,然后,把服务放在服务器,在服务器上建立一套MCP服务,建立function描述,别人的大语言模型接入MCP,就会访问服务器,拿到function描述,注入到模型调用中,输出调用工具,把信息在发给服务器,然后处理完再发给大模型。<FunctionCallBegin>[{"name":"get_news","parameters":{"topic":"科技","region":"中国","count":3}}]<FunctionCallEnd>
2026-05-29 20:25:37
202
原创 大模型训练
在transformer中有很多线性层,在任一一个线形层旁边都可以选择加上一个黄色矩阵的分值,这两黄色矩阵 一个是升维,一个是降维,r则是降到r维,左边冻结,两加起来当作线性层的输出。如图,假如有4个gpu,把1000分数据均分到4个gpu上,一个250份,但是会出现4个不一样的梯度,因为相当于分到4个模型上来训,那么权重更新就会出现4个梯度,那肯定不行。本质上时数据并行,每个gpu包含模型的所有信息,包括模型的参数(蓝色的),梯度(黄色的),优化器内的权重,这样可以在每一块卡上完成梯度计算和反向传播。
2026-05-26 19:08:02
332
原创 强化学习的知识
GRPO去掉了价值模型,Reference Model 是 SFT微调后的模型,Reward Model 不一定是个模型,也可以是硬规则,如图,当然也不是 非0即1的。奖励:输赢是一种由环境给出的奖励 这个和监督学习有区别,奖励不是实时的,就是不是每下一步就能有反馈当下完的时候才能有输赢,而监督学习是每一个x都对应一个y。r@(x,y) 是奖励模型得到的,减去 后面的那个,后面那个代表 RL得到的比上 第一版本得到的值,因为。表示从状态s开始,遵循策略Π(当前的模型)所能获得的长期积累奖励的期望。
2026-05-25 21:15:06
334
原创 大模型结构学习
人们为了减少运算量,K,V就不用 h*h了,用 h* h/12 这里的12是头数,一般的多头机制,bert为12,所以用12了就,然后就是 L*h/12,然后。最右边的那4*4矩阵是怎么来的, i=0,i=0,i=1,i=1 这就是公式中pos说的不是在句子中的位置实在向量中位置,比如每个字把它分成4个字,那么就是上图。正常情况下,新生成的一个token假如第三个加到原来的后面,再次输出给模型,再次预测出第四个 图中右边,则是不在加到后面,加到模型预测的结果上,
2026-05-24 11:58:51
382
原创 预训练模型演化,提示词工程
loss(让学生模仿老师的软标签输出,就是一个好的大模型,可能有多个正确答案)+ MLM loss(让学生直接预测正确的 token)+ 余弦loss(让学生和老师的隐层表示尽量一致)插件可以理解为其他应用或者产品,为AI模型准备的接口(function call),插件成为模型的“眼睛”和“耳朵”,“手”和“脚” 帮助模型获取信息,并完成具体事务。先预训练好权重,然后在下游任务的时候,将预训练好的权重,和通过embedding转化成向量的输入拼接到一起送入RNN ---------->
2026-05-21 21:10:47
381
原创 生成式任务
而当T>1的时候,T不能过大,T在适当大的时候,e的x方,在x小的时候值是相差较小的,那么x除以T之后,softmax就会更大可能出现概率分布差不多的情况,那么模型的选择就多了,在做softmax时是进行 e的x方,当T=1时就是正常的结果,可是当0<T<1的时候,x除以T之后会变大,e的指数函数会随着x的增大会变得更大,原来的差距只会越来越大,用于限制语言模型输出的重复内容,我们根据前四个字预测第五个词时,会出现许多词的概率选择,我们会调整前4个词的概率,让他们降低,避免重复出现,这样问题也有了,
2026-05-18 18:30:14
384
原创 序列标注任务
花/BA 园/MA 北/MA 路/EA 的/O 北/BO 医/MO 三/MO 院/EO 里/O, 昏/O 迷/O 三/O年/O 的/O 我/O 听/O 杨/BP幂/EP 的/O 爱/O的/O供/O养/O时/O起/O身/O关/O了/O收/O音/O机/O。上图为3分类,句子长度为3,那么 我们的计算量就是 3*3*3,这个计算量是小,但是比如上面提到的10分类,句子再长点,计算类就上去了,单纯的把所有路径都算一遍,这种方法效率太低了,有什么方法吗》》
2026-05-12 20:57:48
613
原创 文本匹配任务
假如一个词在某类文本(假设为A类)中出现次数很多,而在其他类别文本(非A类)出现很少,那么这个词是A类文本的重要词(高权重词)比如我的货还没到 ,那么我是找售后服务,还是配送查询,还是订单查询,都有道理,那么用户的体验感极差。恒星,黑洞 ---> 天文。理论上是可以的,但是答案不一定是文本,而是视频,又或者图片,所以一般不会与答案匹配。用于文本匹配:根据两个文本中,不同的字或词所占的比例,来衡量两个文本之间的相似度。那么就让用户以自然语言描述自己的问题,算法进行fap库的检索,给出对应的答案。
2026-05-07 18:29:12
366
原创 贝叶斯,支持向量机,深度学习
设事件组{Bi} 是样本空间的一个划分, 且P(Bi) >0(i=1,2,...n)则对任一事件,有P(A) = P(Bi)P(A|Bi) (i=1,2,3,...n)建立 K(K-1)/2 个svm分类器,每个分类器负责k个类别中的两个类别,判断1输入样本属于哪个类别。想要计算文本S属于A1类别的概率P(A1|S) = P(A1|W1,W2,W3..Wn)所谓的核函数即为满足条件:K(x1,x2) = y(x1)*y(x2) 的函数统称。3.更换loss直接由模型进行多标签分类 (BCELOSS)
2026-04-28 21:04:05
548
原创 语言模型 预训练语言模型BERT - 结构Transformer
这里是因为,word2vec可以把语言弄成向量,但是无法做到语义上的理解,就好比苹果,是指苹果手机还是能吃的苹果,word2vec做不到。EA代表第一句 ,EB代表第二句,一共就准备两个embeding,第三句又会用上EA,第四句又会用上EB。3.Transformer模型结构由很强的拟合能力,词与词之间的距离不会造成关系计算上的损失。BERT成功的原因一个是预训练,另一个则是提出大名鼎鼎的结构,transformer结构。X为embedding层的输出,WQ,WK,WV都是 h*h,所以QKV是l*h。
2026-04-22 21:21:21
130
原创 语言模型学习-统计语言模型 神经语言模型
P(今天天气不错) = P(今)*P(天|今)*P(天|今天)*P(气|今天天)*P(不|今天天气)*P(错|今天天气不)P(今天天气不错) = P(今)*P(天|今)*P(天|今天) * P(气|天天) * P(不|天气) * P(错|气不)就比如这个预料 ,P(今天 天气 糟糕) = P(今天)*(天气|今天)*P(糟糕|天气)P(今天 天气 不错) = P(今天)* P(天气|今天)*P(不错|今天 天气)输入即为拼音序列,每个拼音自然的有多个候选汉字,根据语言模型挑选高概率序列。
2026-04-22 17:03:19
415
原创 词向量化和文本向量化,KMeans
1. 选取词频最低的两个节点,词频更低的放在左侧,较低的放在右侧,形成一个二叉树,顶点的值记录为二者频率之和。词j出现在词i周围的概率,被称为词i和词j的共现概率 P(天气|今天) = 2/2 = 1。2. 选择剩余词中词频最小的,将其与前两个词之和对比,仍然是小的放在左侧,形成树。文本是由词和字组成的,想将文本转化为向量,首先要能够把词和字转化为向量。如果两个词在文本中出现时,它的前后出现的词相似,则这两个词语义相似。(明白,你)(明白,想) (明白,了)(明白,吗)
2026-04-17 18:44:53
330
原创 神经网络NLP分词任务,jieba,TF-IDF
3. 对于文档D,计算query中的词在文档D中的TFIDF值总和,作为query和文档的相关性得分。他会先选文本,然后根据切分做出词典,统计词频,就是在跟我们做任务之前,他已经准备好了,词典。2.对于一个待分词的字符串,从前向后寻找最长的,在此表中出现的词,在词边界做切分。3. 如果窗口内的词不是一个词的前缀,则记录已发现的词,并将窗口移动到词边界。3. 如果在词表中,在词边界处进行切分,之后移动到词边界处,重复步骤2。2. 对于每篇文本D,计算S中的每个词的词频,将其作为文本的向量。
2026-04-11 20:24:02
488
原创 优化器Adam,神经网络处理文本,CNN,RNN
缩,也就是如上面的我们要进行列的压缩,而不是行,拿上面的例子来说,文本长度为4,因为我们要#弱化字与字之间的关系,我们才把它进行向量化成长度为5的样本,也可以是其他长度,如果我们不交换之间进行layer,那么我们做的向量化就是无效的了。4*5 矩阵 ---- 向量求平均--------> 1 *5 向量。"abcd" ---- 每个字符转化成向量 -------> 4* 5矩阵。
2026-04-08 20:07:17
436
原创 神经网络学习
损失函数 (y_pred_y_true)**2 其中 y_pred 含有我们要的自变量 2*(y_pred-y_true) * (y_pred对相应自变量的导数)H(p=[1,0,0],q=[0.5,0.4,0.1]) = -(1*log(0.5)+0*log(0.4)+0*log(0.1)) 约等于 0.3。sigmoid f(x) = 1/ (1+numpy.exp(-x)) 它的导数 为f(x)*(1-f(x)) 取值范围也是(0-1)
2026-04-05 17:20:50
365
原创 机器学习,深度学习
因为我们要让预测值和真实值更接近或者等于,也就是让损失函数无限接近或者等于0,而导数和梯度告诉我们函数变化的方向。拟合(假如我们有个公式,我们给它变量,它给我们返回一个值,与真实值的差我们称之为拟合)给予机器的数据没有标注信息,通过算法对数据进行一定的自动分析处理,得到一些结论。这里的输入和输出,不只是数字,它可能还有别的含义,比如花的颜色代表1之类的。梯度的反方向告诉我们下降最快的方向,而优化器则是告诉我们往这个方向走的程度。训练集就相当于我们平常做题,验证集就相当于月考之类的,而测试集就是期末。
2026-04-04 12:06:44
419
原创 TF-IDF算法原理
TF高,IDF低: 词在文档中频繁出现,但在整个文档集中也经常出现->常用词,区分度低。TF高,IDF高: 词在文档中出现的频率高,但在整个文档集中很少出现-> 重要关键词。TF低,IDF高: 词在文档中出现少,但在整个文档集中很少出现 -> 可能是专业术语。TF低,IDF低: 词在文档中出现少,在整个文档集中也经常出现-> 普通词,不重要。TF(t,d) = 词t在文档d中出现的次数 / 文档d的总次数。IDF(t,D) = log(总文档数/包含词t的文档数)TF(文档中出现的频率)
2026-03-31 13:03:53
32
原创 Pyhton自带库和三方库
print(f"平均值:[df["成绩"].mean():.2f]")print(df.groupby("班级")["成绩"].mean)print(df["班级"].value_counts())index = True 和index= False的差别。print(df.groupby("班级").add({"成绩":["max","min"],True的时候 好像是多了个序号。"年龄":"mean"中位数: median()平均值: mean()最小值: min()最大值: max()
2026-03-28 22:49:17
71
原创 RAG开发
在PromptTemplate(通用提示词模板)和FewShotPromptTemplate(FewShot提示词模板)的使用,我们使用了如下:模板对象的format方法,模板对象的invoke方法。prompt_text = few_shot_template.invoke(input={"input_word":"左"}).to_string()", #示例之后的提示词。res=chain.invoke(input={"lastname":"张","gender":"男"})
2026-03-26 21:46:46
337
原创 LangChain:RAG开发
另外没有api_key是因为系统环境配置了,这是为了安全,如果没有配置,就在model前面加上api_key然后输入的密钥就行。:通过处理多种来源多种格式的文档提取其中文本,将其切分为标准长度的文本块,并进行嵌入向量化,向量存储再向量数据库中。在我们用的时候,ai回答我们的时候总是直接把整个语句给我们了,如果语句过长用户就会等较长的时间,体验感较差。在我们用网页版的豆包和Deepseek的时候它们是慢慢的给我们回复的,这就是流式输出。
2026-03-25 19:38:29
393
原创 OpenAI库的基本使用
什么是流失输出: 就是我们在问ai时,ai回答我们是怎么回答的,流失输出就是ai一段字一段字的回答我们,而不是一下子回答完我们。1.在client.chatt.completions.create() 调用模型的时候设定参数: stream=True。Zero-show学习,称为零样本学习,模型在训练时从未见过测试集中的新类别,在模型训练和提示词优化中均有体现。system角色: 设定助手的整体行为,角色和规则,为对话提供上下文框架,是全局的背景设定,影响后续所有交互。每个字典消息包含2个key。
2026-03-25 11:46:01
257
原创 AI头条项目二用户模块的实现,全局异常处理器
就是如果我们访问其他的请求时,HTTP是不知道我们登录过的,既然没登陆过,怎么能访问其他请求呢,所以我们要弄个token,登录成功后,我就给你一个临时token,每次访问其他请求的时候,先验证token,如果token没啥问题,你就能登录。这个业务的是实现,首先就是我们在创建账号的时候,我们不可能注册相同的用户名,所以我们在注册的时候,我们就需要先根据用户名查数据库里是否存在,如果不存在,我们才能使用,如果存在,那么我们就抛个异常处理。作用: 解决HTTP是无状态的问题,在每次请求中"自我证明省份"
2026-03-24 21:05:50
357
原创 AI头条项目一
/这里要注意为什么我们要提前提交,因为我们要让数据库操作完成之后+1,所以我们在完整之后就立马提交,而不是等依赖项里面的对话。prefix就是前缀路由的前缀, 真实的路由是 /api/news/categories 只不过有很多公共的,所以提出来了。Web应用,通过浏览器向另一个源的服务器发起跨域HTTP请求,并在服务器授权的前提下获取资源。这里参数,db:AsyncSession必须在前面,因为其他的是位置参数。# 允许的源,开发阶段允许所有源,生产环境需要指定源。简略一下返回的响应结果的写法。
2026-03-23 22:26:13
387
原创 FastAPI进阶-ORM操作 查询,新增,更新,删除
app.get("/book/books") async def get_book_list(db: AsyncSession = Depends(get_database)): # 查询,select(Book)得查询方式。result = await db.execute(select(Book).where(Book.author.like("曹%")))book1 = result.scalars().first() # 如果不用select(Book)聚合计算:func.方法(模型类,属性)
2026-03-22 18:16:17
326
原创 FastAPI进阶
update_time: Mapped[datetime] = mapped_column(DateTime,insert_default=func.now(),default=func.now,onupdate=func.now(),comment="更新时间")create_time: Mapped[datetime] = mapped_column(DateTime,insert_default=func.now(),default=func.now,comment="创建时间")
2026-03-22 16:37:31
407
原创 FastAPI框架 路径,查询,请求体参数,JSON,文本,HTML响应类型,异常
response_model是路径操作装饰器的关键参数,它通过一个Pydanticc模型来严格定义和约束API端点的输出格式。description里面填的,会在上面显示,但是小于和大于啊这些的,如果超出范围,发送的请求会返回错误。return {"id":id,"title":f"这是第{id}本书"}# 需求 查询新闻->分页 skip:跳过的记录数,limit:返回的记录数 10。参数的作用是让同一个接口能根据不同的输入,返回不同的输出,实现动态交互。<h1>这是HTML</h1>
2026-03-21 16:08:09
560
原创 网络机器人(爬虫)-入门
robots协议也称为爬虫协议,爬虫规则,是指网站根目录下存放的一份文本文件robots.txt,用于告诉爬虫那些页面可以抓取,哪些页面不能抓取。开始 ---> 发送Http请求 ---> 解析结果提取数据---->数据处理(清洗)-->数据存储 --->结束。数据清洗:是指对采集到的原始数据进行处理,修正,转换和标准化的过程,目的是让数据变得数据变得规范,准确。CSS负责网页的表现(页面元素的外观,位置等样式,如颜色,大小等)一个网页是由三个部分组成的,分别是:HTML,CSS,JS。
2026-03-20 21:25:08
1362
原创 AI智能伴侣-文件保存 会话的 保存 新建 加载 删除
st.button每按一下,并不会先执行里面的逻辑,整个页面会被渲染一下,如果chat_message().write出现的早,那么就会出现,明明新建了但是对话还在,这是因为逻辑代码后执行,我们的st.session_state.message=[] 实在代码里面。每个按键都必须有自己的key,不然会报错,❌这里最容器出错,因为当你没指定key是,他的key默认就是键名,如果没指定key,所有的名字都是“”,就会报错。创建一个新的会话,创建一个,我们应该把上次的message情况,以及时间刷新一下。
2026-03-19 22:47:03
391
原创 AI智能伴侣项目
nick_name = st.text_input("昵称",placeholder="请输入昵称",value=st.session_state.nick_name)nick_name = st.text_input("昵称",placeholder="请输入昵称",value=st.session_state.nick_name)character = st.text_area("性格",placeholder="请输入性格",value=st.session_state.character)
2026-03-19 19:13:33
414
原创 函数的总结
函数的说明文档(Docstring)是写在函数开头,用三个引号包裹的字符串,用于解释函数的功能,参数,返回值等信息,方便使用者清楚函数的具体作用及细节。函数定义时的参数列表与返回值语句是可有可无的(有需求确定),函数必须先定义后执行(函数定义时,内部代码并未执行,在调用时才执行)局部变量: 在函数内部定义的变量,称之为局部变量,只能在该函数内部使用,外部无法访问(函数执行完毕后,会自动销毁其内部局部变量)普通参数: 数字,布尔,字符串,列表,元组,集合,字典等。
2026-03-16 17:54:47
216
原创 网络基础知识 域名,JSON格式,AI基础
1. 基于文本的协议: 请求和响应部分的协议内容为文本格式,底层通过TCP协议传输,稳定性强。另外,每个服务器可能有多个应用,就比如百度,百度旗下有很多应用,那我们是怎么精准到那个应用呢。对象: 用{} 表示,{}之间是键值对形式,键是字符串,值可以是任意其他类型。与ai大模型的交互本质是无状态的,每一次请求响应都是相互独立的。POST: 请求参数在请求体中,POST请求大小是没有限制的。列表: 用[] 表示,[]中列表的元素,多个元素以,分割。数字:整数和小数都是数字,例如:12,3,14。
2026-03-16 12:02:35
70
原创 Python 数据容器
注意: 字典(dict)中的value可以是任何类型的数据,而key不能为可变类型,(什么是不可变类型比如str,int,float,这些是不可变的,setlist这些都是可变的)t1 = (100) 当只有一个元素的时候,这些写的话t1就不是一个元组 print(type(t1)) 你就会发现他是一个整形。字符串中的每一个字符元素都有其对应的下标,通过元素对应的索引,就可以获取到对应的元素。pop(): 删除列表中指定索引位置的元素(如果未指定索引,默认删最后一个)
2026-03-15 19:28:39
244
原创 微服务,拆分原则,远程调用,服务治理,OpenFeign
requestEntity, //请求实体。Spring给我们提供了一个RestTemplate工具,可以方便的实现Http请求的发生。String url, // 请求路径。低耦合:每个微服务的功能要相互独立,尽量减少对其他微服务的依赖。HEADERS: 在BASIC的基础上,额外记录了请求和响应的头信息。高内聚:每个微服务的职责尽量单一,包含的业务相互关联度高,完整度高。FULL: 记录所有请求的响应的明细,包括头信息,请求体,元数据。//1.根据微服务名称,拉取服务的实例列表。
2026-03-14 17:47:51
362
原创 Docker
当容器和docker桥连接时,docker会给他一个ip地址,只要ip地址在docker允许的范围,ip就会发生变化,当发生变化时,再通过那个ip地址连接到那个容器时,就会出现一些情况,所以不建议。这个是进入什么什么容器,我们的容器放在了一个隔离环境,但是我们可以进去,执行上述命令即可, bash则是用什么交互,bash交互就是和虚拟机的形式一样。创建容器放到宿主机,而宿主机是对外隔离的,我们没办法直接连接到容器,但是我们可连接到宿主机,所以把端口映射到宿主机上即可。
2026-03-11 18:19:53
392
原创 Mybatis-Plus
logic-delete-field: flag # 全局逻辑删除的字段实体字段名,字段类型可以是boolean,integer。userService.page 返回的Page<User>p p.getTotal总条数,p.getPages 总页数。logic-not-delete-value: #逻辑未删除值(默认为0)@JsonValue: 则是前端返回那个字段,不加则是枚举,加了之后,加在哪,返回什么样的数据类型。因此,不太推荐逻辑删除,如果数据不能删除,可以采用把数据迁移到其他表的办法。
2026-03-09 20:31:55
374
原创 MyBatis-Plus
3. ASSIGN_ID: 分配ID,接口IdentifierGenerator的方法nextId来生成id,默认实现类为DefaultIdentifierGeneratoe 雪花算法。type-aliases-package: com.itheima.mp.domain.po # 别名扫描包(扫描类名所在的包,方便xml文件中 resulttype)map-underscore-to-camel-case:true #是否开启下划线和驼峰的映射。
2026-03-08 19:15:51
352
原创 mysql 触发器,锁
触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。当我们开启一个事务,并且执行update语句是,就会对更新那一行产生行锁,那么我们在此对着表进行表锁时,这个表就会把每一行进行检查,看有没有行锁,避免所冲突,那样就性能大大降低。全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。锁定粒度最小,发生锁冲突的概率最低,并发度最高。
2026-03-07 15:39:30
385
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅