LLM RAG系统中消除数据幻觉的几个绝招-OPENAI公司内称的“大招”

前言-什么是数据幻觉?它到底有什么危害呢

我们直接来举例:

我是金银花一区的,附近有什么小学?

此时RAG带出如下信息:

金银花小区一区、二区、三区附近教育资源有:银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有:金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区:西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部

理想中的结果

理论上我们应该直接命中第一条,AI在回答时一定会选择:

金银花一区附近有建设小学金银花校区,可以满足您孩子上学的需要。

现实是骨感的

而实际呢,10次有9次AI回答(甚至10次AI都会回答):

金银花小区一区附近有:金苹果小学,可以满足您孩子上学的需求。

这是数据幻觉里最最恶心的一种现象也是最难解决的现象,对比其它不准或者找不到数据来说这种“已经明明带对了向量内的数据”,LLM就是不采纳,往往会让我们的研发人员从一开始信心满满到逐步放弃甚至退出这个行业。

我亲眼看到过一个研发人员在经历了上百小时,几百次,烧掉了几千块钱的Token费用就是调不好这么一个问题,最终用手机把电脑屏砸了(他的手机也肯定砸坏了)然后愤而离座永远放弃了这个行当。

的确,我在刚开始踏上RAG时也经历过这么痛苦的一个过程,因此还是觉得需要做一些总结,把如何最终解决的方法论写出来才能“授人于渔”。

数据越多幻觉越多

LLM Agent或者是RAG类系统需要大量的数据,我们假设数据质量打标都打得很好,但是依旧逃脱不了数据越多出现的幻觉越多的现象。

如我上次那篇“基于AI的RAG需要真正面对商业化场景和落地的几大致命陷井_rag ai-CSDN博客”中讲到过:

  • 当只有10条数据时,你搜草莓,哇。。。好准;
  • 当有50条数据时,你搜草莓带出了草莓,但同时还把草莓味冰激凌带出来了,虽然体验不太好但还算带出了草莓;
  • 当有100条数据时,你搜草莓,每次出现的是“草莓味”口香糖;

解决幻觉非一招搞定而是一个体系化工程

试图通过猫娘脚本解决

很多人在处理数据幻觉时,不断的调整“猫娘脚本”,调几下扩几条、写几个约束,测一把。。。不错,幻觉解决了。

结果一上线当会话持续个10轮后幻觉越来越多。

继续调整猫娘,发觉似乎又好了,又过了几轮,幻觉又出现了。继续扩。。。继续扩。。。哇,直到一个猫娘脚本发出去都要占用5K-6K Token。。。关键是幻觉依旧存在。

 试图通过数据打标解决

拿上例来说,我们自以为上面的数据还可以继续打标,于是我们这么来调整知识库内的数据:

金银花小区一区、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区附近教育资源有:红南城小区四区附近所属的西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部

哈哈哈。。。真的,是这么干的,很多时候,上万条数据用代码或者借助于LLM这么去打标。

其实还真有效果,但是会话当又多几轮的情况下依旧会出现幻觉。

我甚至还看到过这么来对上面的数据做进一步打标的(那个打标代码也是AI辅助写的,能写出来绝对水平也是不差的)打出来后是这样的数据:

金银花小区一区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区三区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区附近教育资源有:红南城小区四区附近所属的西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部

结果那个数据打标技术就搞了1个多月,上手来一个终极绝杀招就可以让它破防,因为我是这么问AI的:

我先问:

我是金银花小花四区的,附近小学有什么

AI回答是:

金苹果小学

我接着问:

我是金银花小花一区的,附近小学有什么

AI回答是:

金苹果小学

直接崩溃了!

现在,理解了我说的,为什么这种现像被称为“可以直接摧毁一个研发的信心”的道理了吧?

要解决数据幻觉先要理解LLM推理的过程

LLM就是AI、大模型,反正自媒体爱叫LLM因为这样可以把AI和之前的Alpha Go或者是决策树或者是Tensorflow一类的区分开来,我们就用LLM吧。LLM我们就认为他就是一个“人”,这是在之前那篇RAG落地几大陷井里写到的,不要把AI想成一无是处的智障也不要把AI想成是一个万能。

你把它想成是一个“刚毕业没有任何社会经验、业务知识的毕业生”好了,那么你需要付出的就是:教育、调教和训练他成长为技术、业务型能手。

那么你怎么去训练一个“人”的?是不是用人的思维方式去训练他呢?什么叫人的方式?就是自然的方式,这有点拗口,我们说白了,就是你怎么教一个人的包括一切自然习惯全部用到训练AI上面就可以了。此时请你抛弃一切计算机科技,先把一个训练人的自然行为理成脑图、行为树图。然后才来用计算机科技来解决这个图上那些需要做到的节点。

因此我就拿我来调开篇中这个最恶心的幻觉来举例来说明我们的手法。

建立自然习惯行为树(脑图)

用人的思维去思考RAG检索和AI思考的过程

人读知识库是从左到右、有问有答来阅读的

我们打开开篇中例子,往知识库进数据的那段代码看了一下,发觉实际知识库内存入的是一条条的:问+答的FAQ类的知识库。

但是因为使用的是Map<String, String>的形式,因此进入后实际物理存在在知识库内的数据为:

  1. 答:XXX 问:XXX\n
  2. 答:XXX 问:XXX \n

我们上手先把答和问调换一下顺序,使得有问和答的全部遵从从左到右的自然规律。

重要的事情我们要说三遍的误区

我们还发觉了我们的研发的确使用了LlmaIndex,这最目前最先进的RAG手法,但是不是说用了LlmaIndex你的检索就是最先进的,我们只能说这个技术是先进的,不代表这成“结果”就是好的。

因此我们发觉每次LlmaIndex后得到的结果内有重复数据,这即消耗了Token又消耗了算力。所以我们把LlmaIndex后的结果进行MD5的去重,使得最终送给LLM的结果的唯一性。

因为如果不是唯一的比如说你送出去的结果里有这样的内容 :

金银花小区一区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区附近教育资源有:红南城小区四区附近所属的西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学

看,两条金银花小区四区条数出现,此时你们猜AI会怎么判断?

重要的事情说三遍,这是人类的思维模式,于是LLM也这么想:你给我这条数据推了2次。。。哦,你是要强调这条数据重要是吧?因此:

  1. 第一次你问了我金银花小区四区的信息;
  2. 第二次你问了我金银花小区一区的信息;
  3. 对比第二次你问我金银花小区四区的信息加第一次你提供给我的上下文信息总计有3次你和我提到金银花小区四区,那么你要的是这条结果吧。

于是你就实际第二次问的是一区的信息而得到的是四区的信息。

对!这个幻觉结果就是这么来!

大家看,你们说AI不聪明吧?它其实很聪明!你说他聪明吧。。。这理解上有误!因此我前面才说:不要把它当万能也不要把它当作一无是处,它是一个刚踏上社会的学生,你要调教他,不要给他感观上错误的行为意识。

数据不光要打标记还要强调

什么意思呢?我们知道为数据明确标明一区、二区、三区是很重要的。可是AI这个“外国人”它熟悉的语言(包括一切LLM)你们猜最能理解的是什么“语言”?

是JSON数据格式。

我举例来说:

这样的内容让AI理解

金银花小区一区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区附近教育资源有:红南城小区四区附近所属的西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部
吴钩路金银花小区四区附近教育资源有:吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学

和以下这样的内容让AI理解

{"金银花小区一区周边教育资源":{"幼儿园:" "xxxxx"},{"小学:" "xxxxx"},{"中学:" "xxxxx"},{"大学:" "xxxxx"}
}\n
{"金银花小区四区周边教育资源":{"幼儿园:" "xxxxx"},{"小学:" "xxxxx"},{"中学:" "xxxxx"},{"大学:" "xxxxx"}
}\n

非常明显,拥有良好的json格式(或者带有格式,你也可以使用|或者是-来区分行中的每个字段)的比无格式混在一起的数据AI理解度可以高多少倍?我告诉大家一个数值,这是我的实测结果:

一次发送10条数据关键值标GPT3.5文心QWEN
响应时间

不使用json: 5秒

使用json: 2秒不到

不使用json: 4秒

使用json: 3秒不到

不使用json: 4秒

使用json: 2秒不到

token数

不使用json: 4,000

使用json:1,200不到

不使用json: 4,000

使用json: 2,000不到

不使用json: 4,000

使用json: 2,000不到

命中准确率

不使用json: 命中81%

使用json:命中99%

不使用json: 命中80%

使用json:命中97+%

不使用json: 命中81%

使用json:命中97%+

这个提高,不是一倍而往往是两倍。

这就是始终坚持使用json格式来构建你的RAG的道理。因为json格式对于LLM在阅读时变相起到了一个“强调”的作用,相当于打标后再在下面划上两道横线这么一个“强记忆”功能。

以最小原子颗粒去做折分

任何LLM其实很多人不知道,是分成:聊天型(完成型)和任务型(跑批处理、数据清洗)两类的。

因此才有completion和prompt两种说法,这其中有其奥妙的。

特别是completion,讲究的就是一个“反应要快”、要廉价、要普惠。那么做到了快、便宜、普惠的代价就是一定“牺牲了部分推理”能力。

我们用实例来说:

  1. 金银花小区一区有4个苑:白云苑、乌云苑、太阳苑、月亮苑。一区的快递驿站有:AXXX
  2. 金银花小区二区有2个苑:星星苑、森林苑。二区的快递驿站有:BXXX。

当这样的数据达上万条时,你试图要让AI在RAG Embedding选出来的数据里通过以下这个关系:

用户问白云苑的驿站,让LLM(AI)试图通过白云苑->一区->驿站,这么一层“血缘”关联来找到正确答案的机率仅仅只有30%~50%,可能准确率实际更低。

什么意思呢?

第一次问:我住在白云苑我有一个快递说放在驿站了,请问是哪个驿站?地址是多少?

你得到正确答案。

第二次问:我住在星星苑我有一个快递说放在驿站了,请问是哪个驿站?地址是多少?

你得到正确答案。

第三次问:我住在白云苑我有一个快递说放在驿站了,请问是哪个驿站?地址是多少?

你得到错误答案。

这种错误就是经典的:上下文循环中造成的数据污染

这和RAG是否准确无关,因为每次RAG带出来的数据是绝对正确的也有的,但是AI就是会把准确答案和错误答案随机的跳,正是因为。。。算力问题导致的。

因为为了快、为了成本低便宜、为了普惠,因此这种隔了一层的数据血缘关系会随着“后台MAAS”或者是自建大模型的硬件算力的波动而波动。

这就是俗称的“AI偷懒”。

经过实际分析和观察LLM后台扫描来自embedding的知识库内容我们发觉它会出现:随机找一条只要包含单词、或者相近的答案去给用户回答。亦或者:使用第一条答案去给用户当作答案推送给用户。

这很恶心。

因此,我们才需要尽量帮AI去做不通过LLM通过代码、自动化手段就能做到的“数据血缘”。

我们举例来说:

安妮:是一个飓风的名称;

起床:代表飓风生成了;

现在你告诉一个第一天进气象局的大学生:安妮已经起床了。。。并且这样的术语从他进气象局的第一分钟开始到下班多达几千条术语充斥着他的大脑,试问,他能理解什么叫:安妮起床了?

因此你是不是得先告诉他安妮和起床这些背后的“业务逻辑”呢?

所以我们需要本身把数据拆到业务原子颗粒最细,再以细化的数据去关联那些用代码、用传统决策数就可以做到的“数据打标”、“关联”、“数据血缘”是显得非常重要的。

这也是我在上一篇中提到的:假设我们说控制好数据质量你只要付出1份精力,而在RAG输出数据时你要提高它的质量你需要花费的是10份精力的终极原因。

使用COT来完善你的猫娘

这可能是我第一次或许也是国内为数不多(可能不超过5人)共开提到了COT这么一个东西,即:Chain Of Though。

这个在OPENAI DEV大会上被提到过一嘴,几乎所有人都忽略了COT。

就拿我们手上这个例子来说,当知识库内容全部整理成了json数据格式、从左到右、有问有答、精准打标、关联血缘后还是会出现数据幻觉。

此时就要上COT了。

COT从字面上说叫“思维链”,其实说白了就是告诉LLM(AI)如何“推理”的“公式”或者说叫“原理”再说了更白一点就是“业务逻辑”

就拿我们手上这个案例来说我们的COT是怎么写的呢?

{"要求1":"每一次问答我会给到你一段内嵌知识库,它是一个json数据格式,每一条数据是单条知识库条目。用户的提问位于<>中。你在回答时注意以下匹配原则"}
{"匹配原则1":"每一条知识库条目有问:有答:,请在回答用户提问时严格使用知识库中的小区、苑名去精准匹配用户的提问中的小区、苑名;"}
{"匹配原则2":"当单条知识库中的“问:”的区、苑名匹配上了用户提问的“匹、苑”名后用该条“问:”后的“答:”的内容来作为检索知识的内容并用于回答;"}
{"匹配原则3":"如果用户提问中的苑、区名和知识库条目中有一处匹配不上就回答:暂无信息并让用户转人工或者咨询官方相关信息为准;"}
{"要求2": "不要在上下文中作知识库内容检索而只在当前轮对话中使用内嵌的知识库来做你要的答案检索"}

这就是COT的提示语写法,告诉LLM一步步如何去理解、窜联给它的上下文。

当然,这里面还有更多的技巧。笔者现在所在的公司和团队已经可以做到使用COT把一个一次发送几十行的猫娘压缩到只有一半甚至小三倍,而精度更高的程度了。

总结

通过上述这些调优手段,最终我们把本例中的幻觉彻底的100%的给消除了,而实际只用了30个小时不到。

其实一切我们还是本着文中提到的重要的一个关键点,那就是:不要把AI当AI,就把它当一个“新人”来对待,AI不是万能也不是一无是处,你得用教/带新人的方式去教它、带它。把培训、教育的方式写成脑图,然后再去用计算机科学来思考如何解决脑图中那一个个环节让这些环节变成计算机的某个或者某些技术、自动化手段。千万不要一开始就被网上一大堆LLM、RAG、召回、熵、LlmaIndex给迷惑住。那些都只是最终的技术手段而己,它们只是工具。而最重要的是:核心思想、理念、打法先要形成这样才能以不变应万变,最终把你的RAG系统做到:省、快、准、合规。

好了,结束今天的博文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Python模拟绘制自由落体运动过程中的抛物线

目录 一、引言 二、自由落体运动的基本原理 三、使用Python模拟自由落体运动 四、扩展功能&#xff1a;添加速度曲线和动画效果 五、总结与展望 一、引言 自由落体运动是物理学中最基础的运动形式之一&#xff0c;它描述了一个物体在仅受重力作用下的运动轨迹。在这个…

Django工具

一、分页器介绍 1.1、介绍 分页,就是当我们在页面中显示一些信息列表,内容过多,一个页面显示不完,需要分成多个页面进行显示时,使用的技术就是分页技术 在django项目中,一般是使用3种分页的技术: 自定义分页功能,所有的分页功能都是自己实现django的插件 django-pagin…

springboot260火锅店管理系统

火锅店管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来发挥其高效…

方法的使用

1.什么是方法(method) 在java中方法就是一个代码片段.。几乎相当于c语言的函数。 2.方法定义 方法跟函数是几乎一样的。所以语法是大差不差的。就多了一点东西。之前我们在c语言里已经很详细讲过了函数。这里就简便的讲一下。 相比c语言函数多了个修饰符 。 现在看下其注意…

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法&#xff0c;常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则&#xff0c;从历史样本中集中找出与现在的最相似的一…

OSPF收发报文实验简述

1、OSPF采用组播形式收发报文&#xff0c;这样可以减少对其它不运行OSPF路由器的影响。 通过wireshark软件对r2 e0/0/0 端口进行数据抓包&#xff0c;发现224.0.0.5为组播地址&#xff0c;如下图

每日OJ题_牛客WY28 跳石板(动态规划)

目录 牛客WY28 跳石板 解析代码 牛客WY28 跳石板 跳石板_牛客题霸_牛客网 解析代码 #include <iostream> #include <vector> #include <climits> #include <cmath> using namespace std;void get_div_num(int n, vector<int>& arr) {for…

个人博客系列-后端项目-RBAC角色管理(6)

修改上一篇文章创建的用户表 ## 用户表 from django.contrib.auth.hashers import make_password, check_password from django.contrib.auth.models import AbstractBaseUserclass User(AbstractBaseUser):username models.CharField(max_length255, uniqueTrue, verbose_na…

React-useEffect

1.概念 说明&#xff1a;用于在React组件中创建不是由事件引起而是由渲染本身引起的操作&#xff0c;比如发送 A列AX请求&#xff0c;更改DOM等。 2.案例 // useEffect用于组件不是由事件引起的而是由渲染本身引起的操作&#xff0c;如ajax,更改Dom等。 import { useEffect,…

数学建模-敏感度分析(美赛)

从多个不确定性因素中逐一找出对投资项目经济效益指标有重要影响的敏感性因素&#xff0c;并分析、测算其对项目经济效益指标的影响程度和敏感性程度&#xff0c;进而判断项目承受风险的能力。若某参数的小幅度变化能导致经济效益指标的较大变化&#xff0c;则称此参数为敏感性…

Spring Boot整合MyBatis Plus配置多数据源

Spring Boot 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9278145.html Spring Cloud 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9287932.html GitHub&#xff1a;https://github.com/dkbnull/SpringBootDemo Gitee&#xff1a;https://gitee.com/…

macOS系统浏览器设置“检查元素“功能

目录 第一步 点击Safari浏览器&#xff0c;选择"设置" 第二步 选择高级&#xff0c;参照下图勾选"在菜单栏中显示开发菜单" 类似于windows系统的f12快捷键。Mac默认是不支持f12的&#xff0c;右键也没有"检查元素"&#xff0c;如果需要使用&am…

《vtk9 book》 官方web版 第3章 - 计算机图形基础 (3 / 5)

3.8 演员几何 我们已经看到了光照属性如何控制演员的外观&#xff0c;以及相机如何结合变换矩阵将演员投影到图像平面上。剩下的是定义演员的几何形状&#xff0c;以及如何将其定位在世界坐标系中。 建模 计算机图形学研究中的一个重要主题是建模或表示物体的几何形状。…

搭建Android Studio开发环境

一、JDK 1、下载 2、安装 双击进行安装&#xff0c;修改安装路径为&#xff1a;D:\Java\jdk-17.0.4.1即可&#xff0c;安装完成后目录如下&#xff1a; 配置环境变量 3、测试 WinR&#xff0c;输入cmd&#xff0c;按Enter后&#xff0c;键入&#xff1a;java --version&…

网络安全: Kali Linux 使用 MSF 漏洞利用

目录 一、实验 1.环境 2.POC验证与nmap扫描&#xff08; ms15-034 &#xff09; 3. Kali Linux 使用 MSF 漏洞利用&#xff08; ms15-034 &#xff09; 4.Windows server 安全加固 5.Windows server 安装补丁 6. Kali Linux 使用 MSF 漏洞验证 &#xff08; ms17-010&…

代码随想录算法训练营第23天|669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇

目录 一、力扣669.修剪二叉搜索树1.1 题目1.2 思路1.3 代码 二、力扣108.将有序数组转换为二叉搜索树2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣538.把二叉搜索树转换为累加树3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣669.修剪二叉搜索树 1.1 题目 1.2 思路 本题递归代码分…

day14_用户前台项目环境搭建(首页接口开发,分类接口开发,网关服务搭建,Redis缓存,Spring Cache)

文章目录 1 尚品甄选H5介绍1.1 业务功能介绍1.2 系统架构1.3 前端H5开发说明 2 搭建项目环境2.1 项目结构说明2.2 模块依赖说明2.3 环境说明2.4 项目模块创建2.4.1 spzx-parent2.4.2 spzx-service2.4.43 service-product 2.5 导入接口文档 3 首页接口开发3.1 需求分析3.3 接口开…

理解JavaScript中的WeakSet和WeakMap

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Yolov8-pose关键点检测:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8-pose,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_6377421…

SSRF服务器请求伪造原理和pikachu靶场实验

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、SSRF简介 SSRF全称&#xff1a;Server-Side Request…