收藏!小白程序员轻松入门RAG,手把手带你玩转大模型检索增强生成
本文通过代码和图解,详细介绍了RAG(检索增强生成)系统的原理和实现过程,主要解决大模型的“知识冻结”和“幻觉”问题。文章从RAG的必要性、向量数据库的核心概念、RAG的“洋葱模型”流程、动手实战等方面进行阐述,强调数据准备、检索工程和结果生成三个阶段的重要性。同时,也指出了RAG的局限性,如语义稀释、聚合类问题等,并建议在实际应用中注重数据清洗和检索策略优化。适合小白和程序员学习大模型和RAG技术。
一、为什么我们需要 RAG?
先说痛点。大模型(LLM)有两个致命毛病:
- 知识冻结:模型训练完那天,它的脑子就停在那一刻了。它不知道时事新闻、最新数据,因为它没见过。
- 幻觉:就是说胡话。再好的模型,随着上下文增长也会出现幻觉,这是Attention机制所不能避免的。。
要解决这个问题,最笨的方法是微调(Fine-tuning),但这玩意儿成本高得离谱,而且你今天调完,明天数据又更新了,模型还更好,难道换模型重新调?企业亏麻了。
所以,RAG(Retrieval-Augmented Generation)应运而生。
它的逻辑简单粗暴:既然脑子记不住,那就给它一本参考书。
在回答问题前,搜索知识库中的相关内容,把找到的内容(Context)和问题一起扔给模型,让 LLM 根据参考资料回答。
二、核心概念:向量数据库(Vector Database)
要实现 RAG,绕不开一个东西:向量数据库。
计算机不认识字,它只认识数字。我们需要把文字、图片变成一串数字(Vector/Embedding)。神奇的地方在于,经过 Embedding 模型处理后:
- “苹果”和“梨”的向量距离很近。
- “苹果”和“卡车”的向量距离很远。
(图注:这就是语义空间,意思相近的东西会聚在一起)
传统数据库查关键词(比如 SQL 的LIKE),向量数据库查的是意思。哪怕你搜“红色的水果”,它也能给你找出“苹果”,虽然字面上完全不匹配。而神奇的是这些代表“语义”的数字,竟然是可以像数学题一样进行加减运算的!
最经典的案例就是:国王 - 男人 + 女人 ≈ 女王。
神奇的是,这是完全基于词汇向量的加减法进行的推理。所以说,语言所承载的信息本身可能就是一种智慧。。。
三、RAG 的“洋葱模型”:从数据到答案
结合文档内容,一个标准的生产级 RAG 流程,其实就是把数据掰开揉碎了,存进去,再读出来的过程。
我们可以把它拆解为 9 个步骤。不过实际项目中你就会发现,这里面全是脏活累活。。。
第一阶段:数据准备
**1. 切块(Chunking):**第一步是把你的文档(PDF、Word、网页)清洗干净并切成小块。
为什么要切?
TOKEN长度有限:整本书塞进去,Token 瞬间爆炸,模型直接死机。
语义稀释:一段话只讲一个知识点,检索才准。和做饭一样,语料太多混在一起,十三香一样,模型根本搞不清它是什么味。
PS:1.切块策略(固定大小、语义分割)策略很多,是 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 启动 Qdrant:
docker 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(client=client, collection_name="chat_with_docs")# 3. 建索引(自动完成切块、Embedding、存储)index = VectorStoreIndex.from_documents( documents, storage_context=storage_context)最后,查询并加入重排(Reranking)。这里用了一个SentenceTransformerRerank,虽然慢点,但精度提升巨大:
from llama_index.core.postprocessor import SentenceTransformerRerank# 设置重排模型rerank = SentenceTransformerRerank( model="cross-encoder/ms-marco-MiniLM-L-2-v2", top_n=3# 只取前3个最相关的)# 查询引擎query_engine = index.as_query_engine( similarity_top_k=10, # 先捞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%免费】
