对于刚接触大模型的程序员和小白来说,RAG(检索增强生成)是绕不开的核心实用技术——无需复杂微调,就能让LLM(大语言模型)摆脱“知识过时”“胡说八道(幻觉)”的痛点,通过检索外部数据库,输出更准确、更具时效性的回答。本文从基础概念、核心流程,到优化技巧、常见问题,全程干货无冗余,建议收藏慢慢学,手把手带你入门RAG!

一、什么是RAG?一句话讲透核心

RAGRetrieval Augmented Generation,检索增强生成),本质是给LLM“装一个外部知识库”——让大模型在回答问题前,先从你指定的数据库中检索相关上下文,再结合自身能力生成答案,核心目的是提升回答的准确性、时效性和可信度。

很多小白会疑惑:LLM已经训练了海量数据,为什么还需要RAG?

关键问题在于:LLM的训练数据有时效性上限(比如训练到2023年,就无法回答2024、2025年的新内容),且对专业领域的细分知识覆盖不足。而RAG无需重新训练模型,只需将你的私有数据、最新文档导入外部数据库,就能让LLM“掌握”新知识,完美解决纯生成模型的两大痛点:幻觉(编造不存在的信息)、知识过时。

划重点(小白必记):RAG = 外部知识库检索 + LLM生成,无需微调,上手成本低,是程序员落地大模型应用的首选方案之一。

二、RAG核心流程:两步实现“检索增强”(附实战demo)

典型的RAG流程分为两大核心阶段:构建向量存储(离线准备)和检索生成(在线响应),每一步都有明确的操作逻辑,小白跟着走就能快速理解。

1. 构建向量存储:给LLM准备“知识库”

这一步是RAG的基础,核心是将你的文档(PDF、TXT、Markdown等)处理成LLM能“看懂”的格式,并存入向量数据库,具体分为4个步骤:

(1)加载文档(Load)

首先需要将各种格式的非结构化数据加载进来,比如你本地的技术文档、行业报告、私有数据等。这里推荐小白使用Langchain框架——它封装了各种现成的DocumentLoaders(文档加载器),无需自己写代码适配格式,直接调用就能加载PDF、HTML、JSON等各类文档,极大降低上手难度。

(2)切分文本(Split)

加载后的文档通常篇幅较长,而LLM的对话token数量有限制,且长文本检索效率低,因此需要将文档切分成更小的文本块(Chunk)。切分的质量会直接影响后续检索和生成效果,这一点小白一定要注意。

(3)转化向量(Embedding)

LLM无法直接“读懂”文本,只能处理向量(浮点数数组)。因此需要使用Embedding模型(比如Sentence-BERT、OpenAI Embedding),将切分后的每个文本块,转化为固定维度的向量表示——这个过程就相当于“给文本贴标签”,方便后续快速匹配相似内容。

(4)存储到向量数据库(VectorStore)

将转化后的向量统一存入向量数据库(比如Chroma、FAISS、Milvus),这类数据库的核心优势是“相似性检索”,能根据用户的查询,快速找到最匹配的向量对应的文本块,为后续生成答案提供依据。

2. 检索生成:让LLM“查资料再回答”

这一步是RAG的在线响应环节,核心是“先检索、再生成”,具体逻辑的是:用户输入问题后,系统先到向量数据库中,通过相似性搜索找到与问题最相关的文本块(context),再将“用户问题(question)+ 检索到的上下文(context)”一起喂给LLM,让LLM基于检索到的真实信息,分析推理后生成答案,避免幻觉。

实战补充(小白可直接参考)

为了方便大家落地练习,我用LangGraph(Langchain旗下的图结构框架)构建了一个基础的RAG流程,新增了“文档评分”环节,进一步提升答案准确性:

流程逻辑:调用Retrieval Tool检索相关文档 → GradeDocument对检索到的文档进行评分(判断是否与用户问题相关)→ 若相关,GenerateAnswer生成答案返回;若不相关,Rewrite重新生成查询语句(query),再次检索,直到找到合适的文档。

相关代码已上传Github,小白可直接克隆学习、修改,快速上手实战:

https://github.com/Liu-Shihao/ai-agent-demo/tree/main/src/rag_agent

三、进阶优化:4个技巧,让你的RAG性能翻倍(小白重点收藏)

入门RAG后,很多程序员会发现:自己搭建的RAG系统,检索不准、生成质量差。其实只要优化好以下4个关键点,就能显著提升性能,小白直接套用即可。

1. 文档Chunking(文本切分)优化(最基础、最关键)

文本切分的核心是“适配token限制、保留语义完整性”,如果切分不当,会导致关键信息断裂,检索不到有用内容。以下是4种常见的切分方法,以及小白必记的优化原则:

常见切分方法:

(1)固定长度切分(重叠分块边界):最简单的方法,按照固定的字符或Token数(如512、1024个token)切分,同时设置重叠部分(比如重叠50个token),避免边界信息丢失。缺点是可能截断语义(比如把一个完整的技术知识点切成两半)。

(2)按照句子边界切分:借助NLP框架(如SpaCy),按照标点符号(句号、感叹号等)切分,贴合自然语义。缺点是长段落可能被切分成多个零散块,导致语义断裂。

(3)自定义规则分割:用正则表达式或DOM解析器(如BeautifulSoup),按照文档的逻辑结构(标题、段落、章节)切分,适合PDF、Markdown等结构化文档。缺点是需要手动设计分割规则,小白需简单了解正则基础。

(4)基于语义的分块:用Transformer模型分析文本的语义关系,将语义连贯的内容划分为一个块,最贴合RAG需求,能最大程度保留关键信息。缺点是计算成本稍高,但小白可借助现成的工具(如Langchain的RecursiveCharacterTextSplitter)快速实现。

小白必记优化原则:

① chunk块大小需匹配Embedding模型和LLM的token限制(比如LLM的上下文窗口是4096token,chunk大小建议设置为512-1024token);

② 关键信息(如技术术语、实体、关系)尽量保留在同一个chunk中,避免截断。

2. 相似性算法优化(提升检索准确性)

相似性算法是RAG检索环节的核心,用于衡量“用户查询”与“向量数据库中文本块”的关联程度,算法选择直接影响检索效果。以下是4种常用算法,小白需掌握它们的适用场景和核心特点:

(1)欧氏距离(L2)

最常用的距离度量,计算两个向量之间的直线距离,值越小,相似度越高。适合数据连续的场景,优点是计算速度快,缺点是对向量长度敏感,可能受异常值影响。

(2)余弦相似度(COSINE)

通过计算两个向量之间夹角的余弦值,衡量相似度,取值范围在[-1, 1]之间,值越大,夹角越小,相似度越高。是文本Embedding检索的首选算法,适合衡量文本语义相似性,但也有明显缺点(下文详细说明)。

(3)BM25(Best Matching 25)

基于“词频(TF)”和“逆文档频率(IDF)”的算法,不依赖向量,直接衡量“用户查询关键词”与“文档”的相关性,广泛应用于搜索引擎(如Elasticsearch默认使用BM25排序)。小白可重点关注其核心逻辑:

① 词频(TF):查询词在文档中出现的频率越高,相关性越强,但通过k1参数控制饱和效应,避免高频无关词(如“的、是”)过度影响得分;

② 逆文档频率(IDF):惩罚常见词,提升罕见词的权重(比如“RAG”在技术文档中出现次数少,IDF值高,对相关性贡献更大);

③ 文档长度归一化:缓解“长文档得分偏高”的偏差,让短文档也能获得合理得分。

(4)Jaccard相似度(Jaccard Index)

通过比较两个集合(如查询关键词集合、文档关键词集合)的“交集与并集比例”,衡量相似度,取值范围在[0,1]之间,值越大,相似度越高。适合文本去重、用户兴趣匹配等场景,在RAG中常用于合并重复的检索结果。

RAG中的典型应用(小白直接套用):

① 初步检索:用余弦相似度(快速筛选候选文档,提升效率);

② 重排序:用交叉编码器(精细排序Top-K结果,提升准确性);

③ 去重:用Jaccard相似度(合并重复片段,减少冗余)。

补充:余弦相似度的缺点及解决方案(小白避坑)

虽然余弦相似度常用,但小白需注意其两个核心缺点,避免影响检索效果:

缺点1:忽视向量长度信息

余弦相似度只关注向量的方向(语义),忽略向量的长度(模),可能导致两种问题:① 高频词干扰(长文本的高频词会主导向量方向,即使语义不相关,相似度也可能偏高);② 未归一化的向量会导致计算偏差(长文本向量模更大,影响相似度判断)。

缺点2:语义相似≠答案相关

余弦相似度基于表面关键词匹配,可能出现“语义相似但逻辑相反”“词序颠倒但相似度相同”的情况,比如:

文档1:“猫和狗是常见的宠物。”(正向描述);文档2:“猫和狗不适合作为宠物。”(负向描述)——余弦相似度高,但语义相反;

句子A:“医生治疗病人。”;句子B:“病人治疗医生。”——词序颠倒,余弦相似度相同,但逻辑完全不同。

解决方案(小白可直接落地):

① 向量归一化:对所有Embedding向量进行L2归一化,强制向量长度统一,避免长度干扰;

② 结合其他算法:将余弦相似度与BM25结合,兼顾语义相似性和关键词相关性;

③ 引入重排序(Re-rank):用交叉编码器(如MiniLM-L6-v2)精细化排序,修正表面匹配的偏差;

④ 混合检索:结合关键词检索(BM25)和向量检索,提升检索准确性。

3. Rerank 重排序(进一步提升检索质量)

小白搭建RAG时,很容易遇到“初步检索结果冗余、相关性低”的问题——比如检索到的文档语义相似,但没有包含用户需要的答案。这时候就需要重排序(Reranking)技术,对初步检索的Top-K结果进行二次优化,提升相关性。

重排序的核心逻辑:不改变初步检索的结果范围,而是结合更多特征,重新调整结果的顺序,让最相关的文档排在前面。小白常用的3种方法:

(1)交叉编码器(Cross-Encoder):最常用的方法,如MiniLM-L6-v2,直接计算“用户查询”与“每个检索文档”的相关性分数,比Embedding模型更精准,但计算速度稍慢,适合对检索质量要求较高的场景;

(2)学习排序(Learning to Rank):训练专门的排序模型,综合多特征(如关键词匹配度、文档新鲜度、点击率)进行排序,适合大规模RAG系统;

(3)规则调整:最简单的方法,手动设置规则(如去除重复内容、优先展示新鲜度高的文档、优先展示短文档),适合小白快速优化。

4. Graph RAG(解决复杂推理问题)

传统RAG的短板的是“无法处理多跳推理”——比如用户查询“A公司的竞争对手的CEO是谁?”,需要先找到“A公司的竞争对手”,再找到该竞争对手的CEO,传统RAG只能检索到单一文本块,无法完成多步推理。而Graph RAG(知识图谱增强RAG)就能完美解决这个问题。

Graph RAG的核心:将文档中的“实体(如人名、公司名、技术术语)”和“实体关系(如竞争关系、雇佣关系)”提取出来,构建知识图谱(KG),检索时不仅返回文本片段,还返回相关的子图结构,让LLM能基于实体关系,完成多跳推理。

传统RAG与Graph RAG的核心区别(小白一目了然):

特性 传统 RAG Graph RAG
检索单元 文本片段(Chunks) 实体+关系子图
推理能力 单跳语义匹配(只能回答简单问题) 多跳推理(如 A→B→C,解决复杂问题)
适用场景 简单问答(如“RAG是什么?”) 复杂关系查询(如多跳推理、实体关联分析)

Graph RAG实现步骤(小白可分步学习):

(1)实体识别(NER):用SpaCy NLP模型或LLM,从文本中提取实体(如人名、地名、公司名、技术术语等),比如从“字节跳动推出了豆包大模型”中,提取实体“字节跳动”“豆包大模型”;

(2)关系抽取:用LLM提取实体之间的关系,生成三元组(〈主体 (Subject), 关系 (Predicate), 客体 (Object)〉),比如上面的例子,可提取三元组〈字节跳动, 推出, 豆包大模型〉;

(3)图谱存储:将提取的实体(节点Node)和关系(Relations),存入图数据库(如Neo4j),方便后续基于关系进行多跳检索。

小贴士:三元组是知识图谱的基本单元,小白只要记住“主体+关系+客体”的结构,就能快速理解知识图谱的核心逻辑,比如〈RAG, 解决, LLM幻觉问题〉。

通过Graph RAG,RAG系统能从“平面检索文本”升级为“立体推理实体关系”,尤其适合技术问答、行业分析等需要复杂推理的场景。

四、RAG评估:怎么判断你的RAG系统好不好用?

小白搭建完RAG系统后,很容易陷入“自认为好用,但实际检索不准”的误区。其实RAG的评估很简单,重点关注两大维度:检索质量和生成质量,每个维度有明确的评估指标,小白直接套用即可。

1. 检索质量(核心:能不能找到有用的文档)

检索质量是RAG的基础——如果检索不到相关文档,再强的LLM也无法生成准确答案,重点关注两个指标:

(1)上下文准确率(Context Precision):前K个检索结果中,“相关文本块”的比例。比如检索Top5个文档,其中3个与问题相关,那么准确率就是3/5=60%,准确率越高,检索的精准度越好;

(2)上下文召回率(Context Recall):所有“相关文档”中,被检索到的比例。比如总共有10个相关文档,检索Top5只找到3个,那么召回率就是3/10=30%,召回率越高,遗漏的相关文档越少。

2. 生成质量(核心:能不能生成准确的答案)

生成质量是RAG的最终目标——即使检索到相关文档,若LLM生成的答案不相关、有幻觉,也没有意义,重点关注两个指标:

(1)答案相关度(Response Relevancy):生成的答案与“用户问题”的契合度。比如用户问“RAG怎么优化?”,若答案重点讲RAG的优化方法,相关度就高;若扯RAG的概念,相关度就低;

(2)忠诚度(Faithfulness):生成的答案与“检索到的上下文”的事实一致性。核心是“答案是否严格基于检索内容”,避免LLM忽略检索文档、依赖自身知识编造信息(幻觉),忠诚度越高,答案越可信。

小白小贴士:初期无需追求复杂的评估工具,可手动对比“检索结果”和“生成答案”,判断是否符合以上4个指标,后续再逐步引入自动化评估工具(如RAGAS)。

五、RAG常见缺点及解决方案(小白避坑指南)

无论是小白还是资深程序员,搭建RAG时都会遇到各种问题,以下是6个最常见的缺点,以及对应的解决方案(小白可直接落地),收藏起来,遇到问题直接查!

1. 检索质量依赖外部数据库

问题:如果知识库不完整、内容过时,或者包含大量无关信息(噪声),检索到的内容就会不相关、错误,导致生成的答案质量下降;

解决方案:定期更新知识库(比如实时爬取权威数据源、手动更新私有文档),同时清理知识库中的噪声数据,保证数据的完整性和时效性。

2. 分块导致上下文碎片化

问题:固定大小的分块的可能截断关键信息,比如一个完整的技术步骤,被切成两个chunk,导致LLM无法获取完整上下文,生成的答案不完整;

解决方案:采用动态分块,按照语义边界(如段落、章节、句子)切分,结合基于语义的分块方法,尽量将完整的语义单元保留在同一个chunk中。

3. 语义相关≠答案相关

问题:向量检索(如余弦相似度)可能返回语义相似,但没有包含答案的文档。比如用户问“如何搭建RAG?”,检索到的却是“RAG的核心概念”,语义相关但无实际答案;

解决方案:引入重排序模型(如交叉编码器),对初步检索结果进行二次筛选;结合混合检索(向量检索+关键词检索BM25),提升答案的相关性。

4. 生成模型忽视检索内容

问题:LLM可能忽略检索到的文档,仍依赖自身的训练知识生成答案,导致出现幻觉,违背RAG的核心逻辑;

解决方案:强化提示工程,在给LLM的提示词中,明确要求“严格基于以下上下文回答,不得使用上下文以外的知识”,强制LLM参考检索到的内容。

5. 无法处理多跳推理

问题:传统RAG难以回答需要多步推理的问题,比如“RAG优化中用到的交叉编码器,属于什么类型的模型?”,需要先找到“RAG优化方法”,再找到“交叉编码器的类型”,传统RAG无法完成这种多步检索;

解决方案:引入知识图谱,搭建Graph RAG,显式建模实体之间的关系,让LLM能基于关系进行多跳推理;也可采用迭代检索,让系统自动生成中间查询语句,逐步逼近答案。

6. RAG流程响应时间长

问题:RAG包含“检索+生成”两个阶段,尤其是引入重排序、Graph RAG后,计算成本增加,导致响应时间较长,影响用户体验;

解决方案:缓存高频查询结果(比如用户经常问的“RAG是什么?”,将检索和生成结果缓存起来,下次查询直接返回);对Embedding模型和LLM进行量化,降低计算成本;采用分层检索(先快速筛选候选文档,再精细检索),提升响应速度。

总结表格(小白快速查阅):

缺点类别 具体问题 解决方案
检索质量 知识库不完整/碎片化、内容过时 动态更新知识库、语义分块、重排序
生成偏差 忽视检索内容、出现幻觉 强化提示工程、模型微调(小白可先不做微调)
效率问题 响应延迟高、计算成本高 缓存高频结果、量化模型、分层检索
知识覆盖 领域盲区、数据偏见 多源数据融合、去偏处理
复杂推理 多跳推理困难 Graph RAG、迭代检索

六、最后总结(小白必看)

RAG作为无需微调就能增强LLM性能的核心技术,上手成本低、实用性强,是程序员落地大模型应用的首选,也是小白入门大模型的绝佳切入点。

本文从基础概念、核心流程,到优化技巧、评估方法、避坑指南,全程围绕小白和程序员的学习需求,去掉冗余内容,新增实战提示和实用技巧,建议收藏备用——后续搭建RAG时,遇到问题可直接对照查阅。

最后提醒:RAG的核心是“检索准确+生成可信”,小白初期无需追求复杂的优化,先搭建基础流程(向量存储+检索生成),再逐步优化分块、相似性算法、重排序等细节,多动手实践(可参考文中的Github代码),就能快速掌握RAG技术。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2026 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》下方扫码获取~
在这里插入图片描述

① 全套AI大模型应用开发视频教程

(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
在这里插入图片描述

② 大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
在这里插入图片描述

③ 大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
在这里插入图片描述

④ AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
在这里插入图片描述

⑤ 大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
在这里插入图片描述

⑥ 大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

图片

以上资料如何领取?

在这里插入图片描述

为什么大家都在学大模型?

最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

图片

不出1年,“有AI项目经验”将成为投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!
在这里插入图片描述
在这里插入图片描述

这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

以上全套大模型资料如何领取?

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐