本文深入浅出地介绍了RAG技术,即如何结合AI大模型和私有知识库,解决大模型信息滞后和无法访问私有数据的痛点。文章详细阐述了RAG的核心概念、工作流程,并基于LangChain框架进行了实战代码演示,包括文档加载、文本分割、向量存储等关键步骤。通过学习本文,读者可以快速搭建一个属于自己的RAG问答系统,为AI应用开发打下坚实基础。

引言
搜索引擎知道一切,但不会总结;大模型会总结,但对你的私有数据一无所知。
有没有一种方案,能把两者的优势结合起来?
有。它叫 RAG(检索增强生成)——目前大模型落地应用最主流、最成熟的技术方案。无论是企业知识库、智能客服,还是 AI 搜索产品,背后几乎都跑着这套逻辑。
本文将从核心概念、完整工作流程,到基于 LangChain 的实战代码,带你一步步搭建一个属于自己的 RAG 问答系统。文章配套完整代码,复制即可运行。
一、RAG 核心概念与诞生背景
1.1 大模型与传统搜索引擎的优缺点
想要理解 RAG,我们可以通过「AI 大模型 + 搜索引擎」的组合逻辑快速吃透核心思想:
- AI 大模型:擅长语义理解、文本总结、逻辑推理、对话生成;但存在致命短板——训练数据有截止日期,无法获取实时信息,也无法读取本地、企业私有数据。
- 传统搜索引擎:擅长抓取全网公开实时数据;但缺点是信息零散、冗余,需要人工筛选、总结、整合,无法自动生成精准答案。
简单来说:大模型有智商但没新知识、没私有知识;搜索引擎有海量实时数据但无理解和总结能力。
而 RAG 技术的核心,就是将两者结合:给大模型配备「专属私有活字典」,让模型可以实时查阅自定义知识库,输出精准、合规、实时的答案。
1.2 RAG 与 AI 搜索的核心区别
- AI 搜索:知识库是互联网公开数据,通过联网检索全网信息辅助回答。
- RAG 检索增强生成:知识库是本地文档、企业私有文档、自定义数据,不依赖公网,完全私有化部署。
当用户向大模型提问时,RAG 会先在私有知识库中做语义检索,匹配相关上下文,再将「用户问题 + 检索到的私有上下文」一并交给大模型,最终生成贴合业务、贴合私有数据的精准答案。

二、RAG 完整工作流程
RAG 整体分为两大核心阶段:离线数据处理、在线实时检索生成,也是 LangChain 整套组件的核心学习地图。

2.1 离线数据处理(知识库构建)
原始的 PDF、Markdown、Word 等文档无法直接用于向量检索,需要经过标准化处理,构建成可检索的结构化知识库,核心步骤如下:
-
文档加载(Document Loading):通过 LangChain 各类加载器,读取 PDF、MD、数据库、网页等百余种数据源,统一转为
Document文档对象。 -
文本分割(Splitting):将超长文档切割为固定大小、语义完整的文本块,解决大模型上下文窗口限制、检索粒度粗糙的问题。
-
向量化存储(Embedding + Storage):通过嵌入模型将文本块转为向量数据,最终持久化存储到向量数据库,完成私有知识库构建。
2.2 在线检索生成(用户问答阶段)
-
检索(Retrieval):用户输入问题后,系统将问题向量化,在向量数据库中匹配相似度最高的文本块。
-
生成输出(Output):将「用户问题 + 检索得到的私有上下文」传入大模型,模型基于专属知识库生成精准、可靠的回答。
三、RAG 完整实战演示
本节基于「脚手架级微服务租房平台Q&A」文档(这里的文档你可以随意替换成你自己的),快速搭建最简 RAG 问答系统,实现自定义文档智能问答,要求模型精简作答(最多三句话)。
注意:文档内容越详细、语义越清晰,RAG 生成的回答就越精准、贴合业务。
四、LangChain Document 文档核心类
Document 是 LangChain 所有 RAG 应用的基础数据载体,所有文档加载、分割、存储操作,最终都是对 Document 对象处理。
4.1 Document 类核心参数
- page_content:核心文本内容,字符串格式,存储文档正文。
- metadata:元数据字典,存储文档来源、路径、页码、分类等附属信息。
- id:可选唯一标识,推荐 UUID 格式,用于精准区分文档块。
4.2 手动创建 Document 对象
from langchain_core.documents import Document# 自定义文档对象列表documents = [ Document( page_content="狗是很好的伴侣,以忠诚和友好而闻名。", metadata={"source": "mammal-pets-doc"}, ), Document( page_content="猫是独立的宠物,经常享受自己的空间。", metadata={"source": "mammal-pets-doc"}, ),]
通常单个 Document 对象,对应原始文档的一个分页或一个文本块,是 RAG 处理的最小单元。
五、实战:PDF 文档加载(PyPDFLoader)
LangChain 提供 PyPDFLoader 专门用于解析本地 PDF 文件,自动将 PDF 每一页转换为一个独立的 Document 对象。
5.1 PDF 加载代码
from langchain_community.document_loaders import PyPDFLoaderfile_path = "../Docs/PDF/脚手架级微服务租房平台Q&A.pdf"loader = PyPDFLoader(file_path)# 加载PDF,每页对应一个Documentdocs = loader.load()# 查看文档基础信息print(f"PDF 文件的总页数为:/n{len(docs)}/n")print(f"第一页文本内容前200字符:/n{docs[0].page_content[:200]}/n")print(f"第一页元数据:/n{docs[0].metadata}")
5.2 运行结果
问:PDF 文件的总页数为:32问:第一页文本内容的前200个字符是:脚手架级微服务租房平台通用问题1. 为什么做这个项目?回答1:(出于兴趣爱好开发)大学期间,我和同学在外合租过一段时间,使用了一些租房平台,于是我有个想法,自己能不能开发一个租房平台,可以让我将理论知识与实践相结合。我希望通过实际项目来加深对Java编程语言和相关技术的理解。于是我便查找了一些资料,看了一些开源项目,进行了一些改进。回答2:(开源项目的解释)这个问:第一页元数据:{'producer': 'pdfcpu v0.8.1 dev', 'creator': 'Chromium', 'creationdate': '2025-08-28T17:52:34+08:00', 'moddate': '2025-08-28T17:52:34+08:00', 'source': '../PDF/脚手架级微服务租房平台Q&A.pdf', 'total_pages': 32, 'page': 0, 'page_label': '1'}
拓展:对于含图片、图表、扫描件的复杂 PDF,可将页面转为图片,通过多模态大模型解析,精度远高于纯文本解析。并且PDF文档解析不了图片
六、实战:Markdown 文档加载(UnstructuredMarkdownLoader)
Markdown 是技术文档主流格式,LangChain 通过 UnstructuredMarkdownLoader 实现 MD 文件加载,支持两种加载模式,适配不同业务场景。
6.1 环境依赖安装
pip install "unstructured[md]" nltk
6.2 single 模式(整文档单对象加载)
默认模式,将整个 MD 文件合并为 单个 Document 对象,适合整体读取文档、简单分割场景。
from langchain_community.document_loaders import UnstructuredMarkdownLoaderfrom langchain_core.documents import Documentmarkdown_path = "../Docs/Markdown/脚手架级微服务租房平台Q&A.md"loader = UnstructuredMarkdownLoader(markdown_path)data = loader.load()# 校验结果:仅生成一个文档对象assert len(data) == 1assert isinstance(data[0], Document)print(data[0].page_content[:200])print(data[0].metadata)
6.3 elements 模式(结构化拆分加载)
按文档元素类型拆分,将标题、段落、列表、表格、图片单独拆分为 Document 对象,保留文档层级结构,适合精细化解析、结构化检索场景。
from langchain_community.document_loaders import UnstructuredMarkdownLoadermarkdown_path = "../Docs/Markdown/脚手架级微服务租房平台Q&A.md"loader = UnstructuredMarkdownLoader(markdown_path, mode="elements")data = loader.load()print(f"文档总个数:/n{len(data)}/n")print("前三个文档元素详情:")for document in data[:3]: print(f"{document}/n")# 查看所有文档元素类型print("文档包含的所有元素类型:")#生成器表达式的写法print(set(doc.metadata["category"] for doc in data))
补充:生成器表达式的写法以及调用流程:
顺序描述
书写:表达式 for 变量 in 数据源 执行流程:
-
右侧
for document in docs先取出一个 document -
运行左侧表达式,得到一个值
-
将该值送入 set 做去重存储
-
循环直到 docs 全部遍历完
-
我对生成表达式的理解
set(表达式 for document in docs) 会完整遍历一次 for 循环,每一轮循环拿到 document 后,执行前面的表达式算出一个值,把算出的值存入集合自动去重。
对于上面的代码含义就是:
从 data 列表中,取出每一个文档 doc,找到它的元数据 metadata 里的 "category" 字段,把所有不同的值收集起来,打印出来。
举个极简例子验证
nums = [1,2,2,3]res = set(x*10 for x in nums)
循环过程: x=1 → 110=10 → 放入集合x=2 → 210=20 → 放入集合 x=2 → 210=20 → 重复,丢弃x=3 → 310=30 → 放入集合 最终 {10,20,30} 这里 x*10 是计算,不是把 x 赋值给 x*10。
6.4 运行结果与元素类型解析
运行后文档被拆分为 441 个结构化文档对象,包含以下核心元素类型:
- Title:各级标题,包含层级深度、父子关联 ID
- NarrativeText:正文叙述段落
- ListItem:有序/无序列表项
- Table:表格内容
- Image:图片资源
- UncategorizedText:脚注、注释、页眉页脚等未分类文本
通过 parent_id 和 element_id 可以还原 MD 文档完整层级结构,实现精准的结构化检索。
整体代码:
七、总结
本文我们从零梳理了 RAG 的核心思想与完整工作流程,并通过 LangChain 实战演示了 PDF、Markdown 文档的加载与解析。总结一下关键要点:
- RAG = 大模型 + 私有知识库,解决模型“有智商无知识”的痛点
- 知识库构建分为两步:文档加载 → 文本分割 → 向量存储
- LangChain 的 Document 是所有 RAG 操作的最小数据单元
PyPDFLoader按页加载 PDF,UnstructuredMarkdownLoader支持按元素结构化拆分 MD
当然,这只是 RAG 的入门第一步。后续我们还将深入:
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握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大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


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


1065

被折叠的 条评论
为什么被折叠?



