RAG学习笔记
RAG是什么
RAG是(Retrieval Augmented Generation)的缩写,Retrieval:检索,特制从数据库或系统中搜索;Augmented 增强的
连起来就是通过自有垂域数据库检索相关信息,然后合并成为提示模板,给大模型润色生成回答。通俗一点,就是让大模型“先查资料,再生成回答”。
为什么要RAG
- 大模型知识库不一定最新,有知识截止日期,熟悉的都懂,不做介绍了,RAG让大模型查最新或内部资料
- 大模型容易出现幻觉(胡说八道),RAG提供特定领域的资料,回答更精确
- RAG把行业或公司的私有数据喂给大模型,将其调教为私域AI
- 重新训练一个模型成本太高,RAG提供轻量化小成本解决方案
RAG架构
RAG完整阶段
离线准备阶段:文档加载→文档清洗→文本分块(Chunking)→文本向量化(Embedding)→向量入库+索引构建
**文档加载 (Loading)**:业务方扔过来一堆《员工手册.pdf》、《薪酬核算办法.docx》。咱们的系统通过代码把这些文件读取进来。
**文档清洗 (Cleaning)**:企业文档里有很多没用的东西,比如页眉页脚、错乱的乱码、空白页。清洗就是把这些杂质过滤掉,提取出纯净的文本。
**文本分块 (Chunking)**:大模型脑容量有限,一口吃不下 100 页的文档。所以我们要按“段落”或者“固定字数(比如 500 字)”,把长文档切成一块一块的“知识切片”。
**文本向量化 (Embedding)**:这是核心黑科技!把每一块切片,翻译成一段多维度的数字坐标(向量)。这相当于给每一段文字打上了一个“极其精准的语义经纬度”。
**向量入库+索引构建 (Vector DB)**:把这些带有坐标的切片,存进向量数据库(比如我们用的 Chroma)。建索引就像给字典加上拼音目录,为了以后能一秒钟搜出来。
在线查询阶段:Query预处理→Query向量化→检索召回(Retrieval)→重排序(Reranking)→Prompt构建→大模型生成→后处理
**Query预处理 (Preprocessing)**:用户可能问得非常简写,比如“算工资”。系统会偷偷把这句话扩充补全,或者纠正错别字,变成“如何进行每月的薪酬核算操作?”
**Query向量化 (Embedding)**:把用户这句话,也丢进模型,翻译成一个数字坐标(向量)。
检索召回 (Retrieval):拿着用户的坐标,去向量数据库里找距离最近、意思最相关的切片。这就是所谓的“粗排”,一口气先捞出 20 个相关的段落。
重排序 (Reranker) :前面“检索召回”那一步虽然快,但特别粗糙。它捞出来的 20 个段落里,可能有 5 个是讲“2025年薪酬”,3 个是讲“外包薪酬”,只有 2 个才是真正回答“2026年正式员工薪酬”的。如果把这 20 个全给大模型,大模型绝对会乱说。检索召回就像是 HR 用软件按关键词筛选简历,只要简历里有“Java”就全捞进来(不管你精通还是只会拼写),一口气捞了 20 份。重排序 (Reranker) 就是技术总监亲自面试!它极其严格,它会拿着用户的问题,对着这 20 个段落,逐字逐句地交叉对比、深度阅读,给每一段打出一个极其精确的分数(0~100分)。
Prompt构建 (Prompt Construction):这是大模型生成回答前的“最后一道包装工序”。系统会动态生成一段模 板化的指令,把人设、参考资料、用户问题像三明治一样死死地夹在一起。下图是prompt构建的真实代码
RAG系统架构图
Embedding
Embedding (嵌入)的本质,就是一个超级翻译官,它强行把人类语言映射成高维空间里的一串“空间坐标”。也就是向量化。意思越相近的词汇或句子,它们在空间里的物理位置就挨得越近。
向量数据库
用来存放向量化后的知识库的数据库,和传统的关系型数据库不一样的是,它存放的是知识片段的语义向量。

