大白话讲透RAG!彻底搞懂检索增强生成原理
文章目录一、先吐槽大模型的两大经典毛病二、RAG 是什么说白了就是开卷考试三、以前的搜索只认字不懂意思四、语义搜索终于能看懂人话了五、手把手整个最小版语义搜索第一步准备好接口客户端第二步批量把文章转成向量第三步把用户问题也转成向量第四步算相似度挑最相关的六、完整的 RAG还差两步七、RAG 和普通搜索到底差在哪八、真要上线坑多着呢最后唠两句P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01一、先吐槽大模型的两大经典毛病不知道你们用AI有没有踩过这俩坑。第一种问点新鲜事它直接摆烂“我的知识截止到某个时间这个我不清楚。”第二种更气人不清楚就不清楚吧它还一本正经给你瞎编逻辑顺得不行你不核实根本发现不了。说白了就是要么装哑巴要么装懂哥主打一个薛定谔的靠谱。为啥会这样很简单模型训练的时候学的都是公开旧知识。你公司的内部文档、刚写完的项目代码、小区刚改的物业规定它见都没见过。总不能为了这点内容就把大模型拉回去重新训一遍吧那成本跟给全公司发双倍年终奖差不多了。二、RAG 是什么说白了就是开卷考试为了解决这个问题就有了 RAG 这个东西。全称叫 Retrieval-Augmented Generation中文叫检索增强生成名字听着挺高科技其实原理特别接地气。拆成三步就是先找相关资料再把资料塞给模型最后让模型照着资料组织答案。说直白点就是不让大模型闭卷答题了提前给它把相关的资料都翻好摆到它面前照着抄就行。模型本身啥新知识也没学会但架不住它翻书快、抄得工整啊。三、以前的搜索只认字不懂意思说到找资料咱们先说说传统的关键词搜索。就好比你去图书馆找书跟管理员说“找书名带Vue的”管理员就把所有带Vue字样的书全给你抱过来。好使吗也能用但有个致命毛病它只认字面不懂语义。你搜“酸辣土豆丝的做法”它绝对不会给你推“马铃薯家常烹饪指南”。合着土豆换个马甲叫马铃薯它就不认得了跟我那换个发型就认不出员工的领导似的。只要字面上没匹配到哪怕意思一模一样它也假装看不见。四、语义搜索终于能看懂人话了怎么破这个局靠 Embedding也就是文本向量化。这玩意说玄乎也玄乎说简单也简单就是给每一段文字生成一串数字坐标。语义越接近的文字在向量空间里的距离就越近。就好比“土豆”和“马铃薯”字面长得完全不一样但意思差不多所以它们的坐标就住对门。“Vue”和“前端框架”哪怕一个字都不重样语义近坐标也挨得近。这样搜索的时候就不是比有没有相同的字了是比谁的意思更贴近。你问“马铃薯怎么做”系统一算坐标哦跟“酸辣土豆丝做法”挨得最近直接就给你捞出来了。终于不用跟搜索引擎玩文字抠字眼游戏了。五、手把手整个最小版语义搜索光说不练假把式咱们整个最简单的 demo 感受一下四步就能搞定。第一步准备好接口客户端先搭好 embedding 接口的调用工具现在很多平台都兼容 OpenAI 的 SDK改个请求地址、填个密钥就能用。友情提示密钥一定要放环境变量里别写死在代码里。不然哪天代码不小心传公开仓库了你就等着收到天价账单吧。第二步批量把文章转成向量写个小脚本把你库里的每一篇文章都调用接口生成对应的向量提前存起来。相当于提前给每本书都编好语义门牌号以后搜索直接查门牌号就行不用每次都重新算一遍。不然每次搜索都把所有文章算一遍向量那速度比我下班收拾东西还磨叽。第三步把用户问题也转成向量用户输入问题之后别着急搜先把问题也转成向量。相当于你要找书先把你想问的话也换成门牌号这样才能跟书架上的书比远近。第四步算相似度挑最相关的向量之间怎么比远近最常用的就是余弦相似度。不用纠结公式啥意思你就理解成看两个向量的方向对不对齐方向越一致说明语义越像。给每篇文章算个相似度分数排个序把分数最高的前几个拎出来就是最相关的内容。到这一步咱们就把语义搜索搞定了也就是 RAG 的前半段检索。六、完整的 RAG还差两步很多人以为语义搜索就是 RAG其实不对这才刚走了三分之一。完整的 RAG 分三步检索、增强、生成。咱们刚才只做完了检索也就是找到了相关资料。接下来还要做两件事第一把找到的资料整理好塞到给大模型的提示词里这叫“增强”相当于把参考资料递到模型手里。第二让大模型看着这些资料组织语言生成最终的答案这叫“生成”。整个流程串起来就是用户提问题 → 问题转向量 → 检索相关资料 → 资料塞进提示词 → 大模型输出答案。全程不用改模型一丁点儿参数纯纯的开卷考试资料带够就能答题。七、RAG 和普通搜索到底差在哪有人说了这不就是搜索吗跟普通搜索引擎有啥区别区别可太大了。普通搜索是啥你搜个问题它给你甩一堆链接列表你得自己点开一篇一篇翻自己总结答案。相当于你去书店问问题店员给你抱来十本书说“答案都在里面了自己找吧”。RAG 是啥你问问题它自己找资料自己读完总结直接给你最终答案。相当于你雇了个专属助理你问啥它自己去翻书整理好要点告诉你连书都不用你碰。所以像企业知识库、客服机器人、文档助手、制度查询这些场景用 RAG 就特别合适。谁上班摸鱼的时候愿意翻几十页制度文档啊直接问一句“报销五千以上走啥流程”一秒出答案多爽。八、真要上线坑多着呢刚才那个 demo 看着简单跑起来也美滋滋但真要放到生产环境用那坑可就多了去了。比如文档怎么切分切太大了搜不准切太小了上下文又断了跟切葱花似的多一点少一点都不对味。比如召回几个结果合适召多了模型记不住召少了信息不全跟食堂打饭似的多了吃不了少了不够吃。还有要不要做重排序向量数据库选啥敏感资料权限怎么控搜不到资料的时候怎么回答才不瞎编说白了demo 只是个 Hello World真正的工作量全在这些细节里。别觉得写了个语义搜索 demo 就懂 RAG 了那才刚摸到门槛。最后唠两句最后简单总结一下。Embedding 让文字能按语义攀亲戚检索把相关的资料捞出来增强把资料塞给模型生成让模型照着资料输出答案。RAG 不是让大模型变成行走的数据库它是给大模型配了个专职资料员。不用重新训练模型就能让它用上私有资料还能减少胡说八道这就是它最香的地方。也是目前大模型落地最实在、最容易上手的玩法之一。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01

相关新闻