news 2026/4/16 21:53:21

【珍藏】RAG技术全攻略:大模型检索增强生成入门到精通,含手搓代码实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【珍藏】RAG技术全攻略:大模型检索增强生成入门到精通,含手搓代码实战教程

RAG 是目前大模型方面发展较热的方向,最近实习的项目也涉及这个方面,做了较多的研究,后续会陆续发送相关学习内容,含手搓代码!本文主要讲述RAG 的发展历程。

一、定义


RAG即检索增强生成(Retrieval-Augmented Generation),是一种通过集成外部知识源来增强大型语言模型(LLM)能力的技术范式。它通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,可提升内容的准确性和相关性,缓解模型幻觉问题,提高知识更新速度,并增强内容生成的可追溯性。

RAG的发展过程如下:

概念提出:RAG的概念首次于2020年被提出。早期研究焦点集中在如何通过预训练模型注入额外知识,以增强语言模型的能力。

Naive RAG是 RAG 技术的初始形态,其核心流程为索引→检索→生成三阶段线性架构。具体步骤如下:

  1. 索引阶段:将原始文档(如 PDF、HTML)转换为纯文本,按固定长度分割为文档块(Chunk),使用 BM25 或 TF-IDF 等传统检索模型建立倒排索引。
  2. 检索阶段:将用户问题通过关键词匹配从索引中召回 Top-K 文档块,直接拼接后作为上下文输入生成模型。
  3. 生成阶段:采用预训练语言模型(如 T5、GPT),将 “问题 + 检索结果” 作为提示词生成回答,依赖模型自身知识补全信息。

技术局限

语义理解不足:基于关键词匹配的检索无法捕捉语义关联,例如 “自动驾驶事故责任” 可能无法召回 “AI 算法缺陷” 相关文档。

上下文冗余:直接拼接所有检索结果可能引入噪声,导致生成模型注意力分散,例如包含与问题无关的段落。

幻觉问题:当检索结果不完整或模型依赖内部过时知识时,容易生成虚构信息

Advanced RAG 阶段(增强优化的检索生成)

  • 语义检索升级:采用 Sentence-BERT、DPR 等模型生成文档与问题的稠密向量,通过余弦相似度匹配提升召回精度。
  • 上下文精细化处理:

滑动窗口索引:将文档分割为重叠的细粒度块(如 200 字 / 块),保留语义连续性。

重排序机制:引入交叉编码器(如 BERT-CrossEncoder)对召回结果重新排序,过滤低相关文档。

上下文压缩:通过摘要模型(如 BART)对检索结果进行摘要,减少冗余信息。

生成控制增强:

提示词工程:设计结构化提示(如 “根据以下资料回答问题:{context}”),强制模型依赖检索内容。

幻觉检测:在生成后加入事实核查模块,对比检索结果与回答的一致性。

Modular RAG 阶段(模块化动态架构)

Modular RAG 将 RAG 系统拆解为可插拔的独立模块,支持动态流程编排,核心模块包括:

  • 索引模块:支持层次化索引(如文档→章节→段落三级结构)和知识图谱索引,提升复杂语义关联能力。
  • 预检索模块:
  1. 查询重写:使用 LLM 扩展用户问题(如将 “血糖控制” 扩展为 “饮食、运动、药物三方面的血糖管理方法”。
  2. 多查询扩展:生成多个变体查询并行检索,覆盖语义多样性。
  3. 后检索模块:

迭代检索:根据初步生成结果中的缺失信息触发二次检索,形成 “生成→检索→再生成” 闭环。

结构化解构:将检索结果解析为结构化数据(如 JSON),便于生成模型精准调用。

编排模块:通过状态机或 LLM 决策动态调整流程,例如根据问题类型选择不同检索策略(技术问题→产品文档,投诉→处理流程)。

多模态支持:整合图像、表格等非结构化数据,例如用 CLIP 模型检索图片,用 Table-BERT 解析表格。

动态路由:基于用户意图(通过意图分类模型)自动选择最佳检索路径,例如法律咨询优先检索法条库,医疗问题优先检索临床指南。

长期记忆:缓存高频检索结果,建立用户专属知识库,实现个性化响应。

二、RAG 架构


为了更直观地呈现RAG(检索增强生成)的全流程,我将以流程图形式展示核心环节,并针对每个节点的常见问题及解决方案进行说明。

2.1 各节点问题与解决方案对比

2.2.1 RAG的分块策略

选择合适的分块策略,是解决RAG实际应用中准确性、召回率与复杂文档解析等痛点最直接有效的方式,也是我们建设RAG系统最关键的一个环节。最常见的RAG分块策略包括:固定大小分块、语义分块、递归分块、基于文档结构的分块、基于LLM的分块。

  1. 定长分块

按照固定长度分块

  1. 语义分块

语义分块(Semantic Chunking),根据句子、段落、主题等有语义内涵的单位对文档进行分段创建嵌入,如果第一个段的嵌入与第二个段的嵌入具有较高的余弦相似度,则这两个段形成一个块。通过合并相似内容,确保每个块表达完整的语义内容。由于每个分块的内容更加丰富,它提高了检索准确性,让大模型产生更加连续和相关的响应。但是它依赖于一个阈值来确定余弦相似度是否显著下降,而这个阈值在不同类型文档中可能涉及不同的参数设置。

  1. 递归分块(Recursive Chunking)

递归分块(Recursive Chunking),先按主题或段落初步划分,再对超长块递归细分,直至满足大小限制。递归分块融合了结构化与非结构化处理逻辑,与固定大小的分块不同,这种方法保持了语言的自然流畅性并保留了完整的内容语义。

  1. 基于文档结构分块(Document Structure-based Chunking)

基于文档结构分块(Document Structure-based Chunking),利用文档固有结构(如标题、章节、列表、表格)进行切分,每个结构单元作为一个块。它通过与文档的逻辑部分对齐来保持结构完整性。这种分块适用于文档有清晰的结构,但很多时候,一个文档的结构会比想象中复杂,此外,很多时候文档章节内容大小不一,很容易超过块的大小限制,需要结合递归拆分再进行合并处理。

  1. 基于LLM的分块(LLM-based Chunking)

基于LLM的分块(LLM-based Chunking),直接将原始文档输入大语言模型(LLM),由模型智能生成语义块。利用LLM的语义理解能力,动态划分文本,保证了分块语义的准确性,但这种分块方法对算力要求最高,对时效性与性能也将带来挑战。

三、开源化方案对比


以下是当前主流的开源RAG(检索增强生成)方案及其对比分析,涵盖实现方法、技术特点和适用场景。

一、核心开源方案

1. LangChain

  • 文档支持:支持TXT、PDF、CSV、HTML等常见格式,通过UnstructuredFileLoader处理非结构化数据。
  • LLM模型:支持开源模型(如LLaMA、Alpaca)和API模型(如OpenAI、Anthropic),可通过LLMChain灵活调用。
  • 向量化模型:嵌入模型 | LangChain中文网 向量存储 | LangChain中文网
  • 免费选项:HuggingFaceEmbeddings(如Sentence-BERT、BAAI/bge-small-zh-v1.5)。
  • 配置示例:from langchain.embeddings import HuggingFaceEmbeddings。
  • 框架构造:模块化链式结构,通过ConversationalRetrievalChain整合检索与生成。

检索方式:

混合检索:向量检索(FAISS)+关键词检索(BM25),通过逆序位融合(RRF)重排结果。

查询优化:支持子问题分解(如将“比较两框架star数”拆分为两个子查询)。

数据库选型:FAISS、Pinecone、Elasticsearch(开源版)。

2. LlamaIndex

  • 文档支持:支持PDF、DOCX、PPTX、CSV,通过SimpleDirectoryReader批量加载。
  • LLM模型:支持本地模型(如Qwen2.5、Llama2)和API模型(如OpenAI),通过LLMPredictor封装。
  • 向量化模型:

免费选项:BAAI/bge-m3(中英文高效)、MiniLM-L6,可通过VectorStoreIndex配置。

框架构造:以索引为核心,支持树状索引(Tree Index)和知识图谱索引,动态选择检索策略。

检索方式

智能检索:查询引擎(Query Engine)通过子问题分解和查询重写提升召回率。

上下文管理:使用模糊匹配关联生成内容与原始文档,支持引用标注。

数据库选型:FAISS、Qdrant、Pinecone。

3. LightRAG

  • 文档支持:

支持TXT、PDF、DOC、PPT、CSV,通过LLM提取实体和关系构建知识图谱。

  • LLM模型:

支持本地模型(如Ollama的StableLM)和API模型(如GPT-4o-mini),通过ollama_model_complete调用。

  • 向量化模型:

免费选项:NanoVectorDBStorage(轻量级向量数据库)、Sentence-BERT。

框架构造:双层检索架构(低层次实体检索+高层次主题检索),结合图结构与向量表示。

  • 检索方式:

双层检索:低层检索(实体级)与高层检索(主题级)结合,通过混合模式(Hybrid)提升全面性。

增量更新:仅更新变化部分,减少重复计算。

数据库选型:NanoVectorDB、FAISS。

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01教学内容

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例:带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

vx扫描下方二维码即可
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:

04视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)

05行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!

0690+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:34:14

基于51单片机智能洗衣机控制 加水位检测

目录 51单片机智能洗衣机控制系统概述水位检测模块设计电机控制模块洗涤模式逻辑系统集成与调试注意事项 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 51单片机智能洗衣机控制系统概述 智能洗衣机控制系统基于51单片机实现&#xf…

作者头像 李华
网站建设 2026/4/16 11:10:51

5步掌控窗口置顶工具:让关键内容始终可见的效率秘籍

5步掌控窗口置顶工具:让关键内容始终可见的效率秘籍 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在信息爆炸的数字时代,我们每天面对数十个打开的窗口…

作者头像 李华
网站建设 2026/4/15 19:10:10

智能追踪科研工具:Elsevier投稿状态高效管理解决方案

智能追踪科研工具:Elsevier投稿状态高效管理解决方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 学术投稿过程中,科研工作者常面临投稿状态监控难题,传统方式需频繁手动登录系…

作者头像 李华
网站建设 2026/4/16 11:11:22

一键启动AI卡通梦,科哥镜像真实使用分享

一键启动AI卡通梦,科哥镜像真实使用分享 你有没有试过把一张普通自拍变成漫画主角?不是靠美颜滤镜,也不是手动描线,而是让AI几秒钟内完成从真人到二次元的跨越——这次不用折腾代码、不配环境、不调参数,点一下就出图…

作者头像 李华
网站建设 2026/4/16 11:09:50

Z-Image-Turbo保姆级教程:连参数都不会设也能用

Z-Image-Turbo保姆级教程:连参数都不会设也能用 你是不是也遇到过这样的情况:看到一个超酷的文生图模型,点开文档第一行就写着“请先安装PyTorch 2.3、ModelScope 1.12.0、CUDA 12.1……”,再往下翻全是--guidance_scale、--num_…

作者头像 李华
网站建设 2026/4/15 13:26:31

Android系统开机自动运行脚本,新手入门必看

Android系统开机自动运行脚本,新手入门必看 在Android设备开发和定制过程中,经常需要让某些服务或脚本在系统启动完成时自动运行——比如初始化硬件参数、配置网络环境、启动后台守护进程,或者执行一些诊断检测任务。但很多刚接触Android底层…

作者头像 李华