收藏!小白程序员轻松入门RAG,手把手带你玩转大模型检索增强生成
本文通过代码和图解详细介绍了RAG检索增强生成系统的原理和实现过程主要解决大模型的“知识冻结”和“幻觉”问题。文章从RAG的必要性、向量数据库的核心概念、RAG的“洋葱模型”流程、动手实战等方面进行阐述强调数据准备、检索工程和结果生成三个阶段的重要性。同时也指出了RAG的局限性如语义稀释、聚合类问题等并建议在实际应用中注重数据清洗和检索策略优化。适合小白和程序员学习大模型和RAG技术。一、为什么我们需要 RAG先说痛点。大模型LLM有两个致命毛病知识冻结模型训练完那天它的脑子就停在那一刻了。它不知道时事新闻、最新数据因为它没见过。幻觉就是说胡话。再好的模型随着上下文增长也会出现幻觉这是Attention机制所不能避免的。。要解决这个问题最笨的方法是微调Fine-tuning但这玩意儿成本高得离谱而且你今天调完明天数据又更新了模型还更好难道换模型重新调企业亏麻了。所以RAGRetrieval-Augmented Generation应运而生。它的逻辑简单粗暴既然脑子记不住那就给它一本参考书。在回答问题前搜索知识库中的相关内容把找到的内容Context和问题一起扔给模型让 LLM 根据参考资料回答。二、核心概念向量数据库Vector Database要实现 RAG绕不开一个东西向量数据库。计算机不认识字它只认识数字。我们需要把文字、图片变成一串数字Vector/Embedding。神奇的地方在于经过 Embedding 模型处理后“苹果”和“梨”的向量距离很近。“苹果”和“卡车”的向量距离很远。(图注这就是语义空间意思相近的东西会聚在一起)传统数据库查关键词比如 SQL 的LIKE向量数据库查的是意思。哪怕你搜“红色的水果”它也能给你找出“苹果”虽然字面上完全不匹配。而神奇的是这些代表“语义”的数字竟然是可以像数学题一样进行加减运算的最经典的案例就是国王 - 男人 女人 ≈ 女王。神奇的是这是完全基于词汇向量的加减法进行的推理。所以说语言所承载的信息本身可能就是一种智慧。。。三、RAG 的“洋葱模型”从数据到答案结合文档内容一个标准的生产级 RAG 流程其实就是把数据掰开揉碎了存进去再读出来的过程。我们可以把它拆解为 9 个步骤。不过实际项目中你就会发现这里面全是脏活累活。。。第一阶段数据准备**1. 切块Chunking**第一步是把你的文档PDF、Word、网页清洗干净并切成小块。为什么要切TOKEN长度有限整本书塞进去Token 瞬间爆炸模型直接死机。语义稀释一段话只讲一个知识点检索才准。和做饭一样语料太多混在一起十三香一样模型根本搞不清它是什么味。PS1.切块策略固定大小、语义分割策略很多是 RAG 效果好坏的第一道生死线之后会详细写一篇文章说明。2.数据清洗是也是工程中极具挑战性的问题甚至是最费时间的比切块还麻烦。本文优先介绍RAG。2. 向量化Embedding切好块后用 Embedding 模型把这些文字块变成向量一串数字作为这段文字的提纲向量版。 这里用的不是简单的词匹配而是上下文嵌入模型比如双向编码器。它能听懂“人话”知道“苹果”和“手机”在某些语境下是相关的。3. 入库Indexing把生成的向量存进向量数据库Vector DB。 这是 RAG 的长时记忆机制来源。至此矢量数据库已创建完成。注意这里存的不仅仅是向量还有原始文本和元数据比如页码、作者。这样系统就可以基于向量指针搜索并引用原文。不然搜出来一堆数字。。。第二阶段检索工程4. 用户查询Query用户“ 表面亲和度是什么意思出处是哪个文件”背景资料{chunks}问题{query}请根据背景资料回答问题。5. 需求翻译Query Embedding系统得把用户的这句人话用同一个Embedding 模型也转换成向量。**注意必须是同一个模型**不然就像用英语字典查中文幻觉会非常严重。6. 粗筛Retrieval拿着用户问题的向量去数据库里比对。 数据库会通过“近似最近邻搜索”ANN给你返回 Top-K 个最像的文本块。 这一步叫召回。**7. 精排Reranking这一步很多教程都没讲**这是区分 Demo 和生产级系统的关键 向量检索第6步虽然快但有时候不够准。具体表现为相关性不佳Top 1 的结果通常没问题但Top 2-5 的结果相关度非常随机。这直接影响了最终给大模型LLM参考的上下文质量。ANN算法的精度损失随机性为了在大规模数据百万/千万级中实现毫秒级检索向量数据库通常使用****ANN近似最近邻算法其机制引入了随机性导致召回的文档排名并不完全准确最相关的文档可能没有排在最前面。所以我们需要一个更聪明的模型通常是 Cross-Encoder把捞回来的这些知识素材重新打个分把真正最相关的排到前面。Rerank 通过 **“粗排 精排”** 的两阶段策略在速度和精度之间找到了平衡根据Rerank模型计算出的精准分数对文档重新进行排序最后截取分数最高的 Top N例如Top 5投喂给大模型。这个过程会重新排列数据块以便优先处理最相关的数据块从而生成响应。虽然这一步会增加一点延迟但为了准确率这是必须要做的。。。第三阶段结果生成**8. 生成结果Generation**系统把排好序的最相关文本块Context填进 Prompt 模板里连同用户的问题一起扔给大模型LLM。这时候大模型就不再是瞎编了★“根据以下资料我们找出来的回答用户的问题…”而后模型综合这些上下文生成一句通顺的人话交给用户端。总结一下前三步是脏活累活数据工程中间两步是搜索技术检索工程最后一步才是AI 生成。RAG也好AI也好别光盯着最后的大模型看没有数据科学的基本功后面全是幻觉。。。四、动手实战全开源技术栈光说不练假把式。文档里给了一套完全开源的方案大家可以在自己的笔记本上跑起来试一试。工具栈大脑 (LLM): Llama 3.2 (通过 Ollama 运行轻量级)框架 (Framework): LlamaIndex (专门做 RAG 的框架)记忆 (Vector DB): Qdrant (开源向量库Docker 一键起)核心代码解析首先用 Docker 启动 Qdrantdocker run -p 6333:6333 -p 6334:6334 \ -v $(pwd)/qdrant_storage:/qdrant/storage \ qdrant/qdrant然后用 LlamaIndex 加载数据并建立索引。这一步就是把 PDF 变成向量存进去from llama_index.core import VectorStoreIndex, SimpleDirectoryReaderfrom llama_index.vector_stores.qdrant import QdrantVectorStore# 1. 读文件脏活documents SimpleDirectoryReader(./docs).load_data()# 2. 连数据库vector_store QdrantVectorStore(clientclient, collection_namechat_with_docs)# 3. 建索引自动完成切块、Embedding、存储index VectorStoreIndex.from_documents( documents, storage_contextstorage_context)最后查询并加入重排Reranking。这里用了一个SentenceTransformerRerank虽然慢点但精度提升巨大from llama_index.core.postprocessor import SentenceTransformerRerank# 设置重排模型rerank SentenceTransformerRerank( modelcross-encoder/ms-marco-MiniLM-L-2-v2, top_n3# 只取前3个最相关的)# 查询引擎query_engine index.as_query_engine( similarity_top_k10, # 先捞10个 node_postprocessors[rerank] # 再精选3个)response query_engine.query(What exactly is DSPy?)print(response)代码跑通你会发现模型能准确回答出 PDF 里的内容此时恭喜你通过代码搭建了RAG 的最小应用泼盆冷水RAG 的局限性虽然 Demo 跑通了很爽但作为工程实战派我得提醒大家几个坑文档最后也提到了非常真实语义稀释Semantic Dilution 如果你的切块太大里面混杂了无关信息检索精度会直线下降。聚合类问题Aggregation是死穴 如果你问这100份文档里哪一份提到的销售额最高 RAG 通常回答不出。因为向量检索是找相似而不是做统计。它很难把所有文档扫一遍再比较。中间迷失Lost in the Middle LLM 有个毛病它对 Prompt 开头和结尾的内容印象深刻中间的内容容易忽略。所以重排后的文档顺序也很重要。问题与答案不相似 有时候用户问的问题和文档里的答案在字面上完全不沾边。这时候可能需要引入 HyDE假设性文档嵌入这种高级技巧让模型先自己生成一个假答案拿假答案去搜真答案。最后在真实的企业级AI项目中我们 80% 的时间其实不是在调大模型而是在清洗数据和优化检索策略。AI系统的本质依然是数据工程系统。你可以把大模型理解成一个考试的考生而RAG、数据工程是背后那个递小抄的人。RAG 可以让大模型进行开卷考试而我们要做的所有工程上的努力就是确保在它提笔作答前把书翻到了最正确的那一页。最后对于正在迷茫择业、想转行提升或是刚入门的程序员、编程小白来说有一个问题几乎人人都在问未来10年什么领域的职业发展潜力最大答案只有一个人工智能尤其是大模型方向当下人工智能行业正处于爆发式增长期其中大模型相关岗位更是供不应求薪资待遇直接拉满——字节跳动作为AI领域的头部玩家给硕士毕业的优质AI人才含大模型相关方向开出的月基础工资高达5万—6万元即便是非“人才计划”的普通应聘者月基础工资也能稳定在4万元左右。再看阿里、腾讯两大互联网大厂非“人才计划”的AI相关岗位应聘者月基础工资也约有3万元远超其他行业同资历岗位的薪资水平对于程序员、小白来说无疑是绝佳的转型和提升赛道。对于想入局大模型、抢占未来10年行业红利的程序员和小白来说现在正是最好的学习时机行业缺口大、大厂需求旺、薪资天花板高只要找准学习方向稳步提升技能就能轻松摆脱“低薪困境”抓住AI时代的职业机遇。如果你还不知道从何开始我自己整理一套全网最全最细的大模型零基础教程我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的大模型学习资源希望能帮到你。扫码免费领取全部内容1、大模型学习路线2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 入门必看大模型学习书籍文档.pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里4、AI大模型最新行业报告2026最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、面试试题/经验【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】6、大模型项目实战配套源码适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】