sw网站建设合肥网站seo服务
news/
2025/10/2 19:28:55/
文章来源:
sw网站建设,合肥网站seo服务,网站开发 方案,wordpress主题还原前言-什么是数据幻觉#xff1f;它到底有什么危害呢
我们直接来举例#xff1a;
我是金银花一区的#xff0c;附近有什么小学#xff1f;
此时RAG带出如下信息#xff1a;
金银花小区一区、二区、三区附近教育资源有#xff1a;银树大学、建设小学金银花校区、金树高…前言-什么是数据幻觉它到底有什么危害呢
我们直接来举例
我是金银花一区的附近有什么小学
此时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类的知识库。
但是因为使用的是MapString, String的形式因此进入后实际物理存在在知识库内的数据为
答XXX 问XXX\n答XXX 问XXX \n
我们上手先把答和问调换一下顺序使得有问和答的全部遵从从左到右的自然规律。
重要的事情我们要说三遍的误区
我们还发觉了我们的研发的确使用了LlmaIndex这最目前最先进的RAG手法但是不是说用了LlmaIndex你的检索就是最先进的我们只能说这个技术是先进的不代表这成“结果”就是好的。
因此我们发觉每次LlmaIndex后得到的结果内有重复数据这即消耗了Token又消耗了算力。所以我们把LlmaIndex后的结果进行MD5的去重使得最终送给LLM的结果的唯一性。
因为如果不是唯一的比如说你送出去的结果里有这样的内容
金银花小区一区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
金银花小区二区附近教育资源有银树大学、建设小学金银花校区、金树高级中学、二区、三区附近教育资源有金银花小区一区、二区、三区附近所属的银树大学、建设小学金银花校区、金树高级中学
吴钩路金银花小区四区附近教育资源有吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
红南城小区四区附近教育资源有红南城小区四区附近所属的西瓜幼儿园、小飞象国际小学、灵不灵初中、灵不灵中学高中部
吴钩路金银花小区四区附近教育资源有吴钩路金银花小区四区附近所属的金黄大学、苹果幼儿园、苹果海洋资源勘探大学、金苹果小学
看两条金银花小区四区条数出现此时你们猜AI会怎么判断
重要的事情说三遍这是人类的思维模式于是LLM也这么想你给我这条数据推了2次。。。哦你是要强调这条数据重要是吧因此
第一次你问了我金银花小区四区的信息第二次你问了我金银花小区一区的信息对比第二次你问我金银花小区四区的信息加第一次你提供给我的上下文信息总计有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讲究的就是一个“反应要快”、要廉价、要普惠。那么做到了快、便宜、普惠的代价就是一定“牺牲了部分推理”能力。
我们用实例来说
金银花小区一区有4个苑白云苑、乌云苑、太阳苑、月亮苑。一区的快递驿站有AXXX金银花小区二区有2个苑星星苑、森林苑。二区的快递驿站有BXXX。
当这样的数据达上万条时你试图要让AI在RAG Embedding选出来的数据里通过以下这个关系
用户问白云苑的驿站让LLMAI试图通过白云苑-一区-驿站这么一层“血缘”关联来找到正确答案的机率仅仅只有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从字面上说叫“思维链”其实说白了就是告诉LLMAI如何“推理”的“公式”或者说叫“原理”再说了更白一点就是“业务逻辑”。
就拿我们手上这个案例来说我们的COT是怎么写的呢
{要求1每一次问答我会给到你一段内嵌知识库它是一个json数据格式每一条数据是单条知识库条目。用户的提问位于中。你在回答时注意以下匹配原则}
{匹配原则1每一条知识库条目有问有答请在回答用户提问时严格使用知识库中的小区、苑名去精准匹配用户的提问中的小区、苑名}
{匹配原则2当单条知识库中的“问”的区、苑名匹配上了用户提问的“匹、苑”名后用该条“问”后的“答”的内容来作为检索知识的内容并用于回答}
{匹配原则3如果用户提问中的苑、区名和知识库条目中有一处匹配不上就回答暂无信息并让用户转人工或者咨询官方相关信息为准}
要求2: 不要在上下文中作知识库内容检索而只在当前轮对话中使用内嵌的知识库来做你要的答案检索}
这就是COT的提示语写法告诉LLM一步步如何去理解、窜联给它的上下文。
当然这里面还有更多的技巧。笔者现在所在的公司和团队已经可以做到使用COT把一个一次发送几十行的猫娘压缩到只有一半甚至小三倍而精度更高的程度了。
总结
通过上述这些调优手段最终我们把本例中的幻觉彻底的100%的给消除了而实际只用了30个小时不到。
其实一切我们还是本着文中提到的重要的一个关键点那就是不要把AI当AI就把它当一个“新人”来对待AI不是万能也不是一无是处你得用教/带新人的方式去教它、带它。把培训、教育的方式写成脑图然后再去用计算机科学来思考如何解决脑图中那一个个环节让这些环节变成计算机的某个或者某些技术、自动化手段。千万不要一开始就被网上一大堆LLM、RAG、召回、熵、LlmaIndex给迷惑住。那些都只是最终的技术手段而己它们只是工具。而最重要的是核心思想、理念、打法先要形成这样才能以不变应万变最终把你的RAG系统做到省、快、准、合规。
好了结束今天的博文。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925229.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!