RAG学习笔记-面试看这篇就够了

RAG学习笔记-面试看这篇就够了 RAGRAG全称 Retrieval Augmented Generation检索增强生成大致分为两个阶段离线阶段数据入库在线阶段检索生成离线阶段主要做文档解析 → 数据清洗 → 文档分块 → 向量化 → 建索引在线阶段主要做用户提问 → 查询改写 / 知识库选择 → 召回 → 重排 → Top K 过滤 → 拼接上下文 → 大模型生成回答文档解析与数据清洗文档解析• 多格式适配 兼容各种文件格式如 PDF、Word、Markdown、HTML、JSON、TXT 甚至 Excel• 内容提取 从原始文件中剥离出“净文本”。• 如果是 PDF需要解析文字层如果是扫描件则需要 OCR。• 如果是 HTML需要剔除脚本、样式表只保留正文。• 元数据Metadata提取 在提取文本的同时记录文档的属性如文件名、页码、标题、作者、创建时间、章节层级等。• 数据清洗 去除文档中的冗余信息如乱码、过多的空格、特殊的非打印字符、邮箱、版权声明、水印文案等。经验与问题1.PDF 多栏排版解析错乱传统 PDF 解析工具比如 PyPDF2是按行从上往下读的对多栏解析存在问题。正确做法是引入版面分析Layout Analysis技术。 先识别出文档的物理布局——哪些区域是左栏、哪些是右栏、哪些是表格、哪些是页眉页脚——然后按逻辑结构而非文本顺序提取内容。推荐使用 MinerU 或 Marker 这类专门做文档解析的工具它们内置了版面分析能力能正确处理多栏、表格等复杂布局。2.OCR 把表格和代码全毁了对表格区域做专门的表格识别按单元格顺序输出并保留结构化格式对代码块设置 OCR 保持换行和空格格式。整体建议使用 PaddleOCR 配合版面分析先检测区域类型文字/表格/代码/图片再分别用针对性策略处理。3.PPT 里的图片信息直接丢了python-pptx 能提取文本框里的文字但对嵌在图片里的文字完全无能为力解决办法对 PPT 中的图片元素先提取出来做 OCR 识别把图片中的文字也纳入知识库。同理视频类文档需要先做语音识别ASR得到字幕文本再按内容语义分段入库。文档分块文档分块Chunking本质上是在尽量保持语义完整的前提下把长文档拆成适合 Embedding 和 RAG 检索的小块。按照复杂度和智能程度大致可以分为下面几类分块方式核心思想优点缺点适用场景按 Token 数分块固定长度切分如 512 Token一般带 Overlap 10%~20%简单、高效容易截断语义大规模数据预处理递归字符切分按段落 → 句子 → 单词逐层拆分保持文本结构仍是规则驱动通用 RAG 默认方案基于结构切分利用 Markdown、HTML、JSON 等文档结构保留逻辑层级依赖格式规范API 文档、技术文档按语义分块根据句子语义相似度决定边界语义完整检索效果好计算成本高长文档、知识库Meta-Chunking语义逻辑增强利用 LLM 的 PPL 感知逻辑边界并进行语义补全最符合人类理解方式成本最高实现复杂高质量 RAG、复杂知识库固定长度切块 → 结构切块 → 语义切块 → Meta-Chunking逻辑感知 语义补全 全局摘要向量化Embedding 原理输入文本 苹果手机很好用│▼Tokenization[苹果,手机,很,好用]│▼添加特殊TokenCLS/SEP[CLS,苹果,手机,很,好用, SEP]│▼Token ID [101,512,678,321,789,102]│▼TokenEmbeddingPositionEmbedding查阅embedding模型中预定义的表格每个ID拿到一个例如1536维的初始向量│▼┌───────────────────────────────────────────────────────────────┐│TransformerEncoder││││Input X │││││├──► Q XWQ ││├──► K XWK ││├──► V XWV │││││├──►Self-Attention││├──►AddNorm││├──►FeedForwardNetwork(FFN)││├──►AddNorm│││││└──►重复12~24层│└───────────────────────────────────────────────────────────────┘│▼ContextualTokenEmbeddings│▼PoolingMean/ CLS /Max│▼L2 Normalization将池化后生成的向量进行归一化即使其模长长度等于1│▼SentenceEmbedding模型选型在 Embedding Leaderboard 选择https://huggingface.co/spaces/mteb/leaderboard主要考虑如下点• 模型参数大小• 支持维度• 语言能力支持哪些语言• clustering 聚类• Retrieval 检索能力• Classification 文本分类• STS 语义相似度• Summarization 摘要匹配• Instruction Retrieval 指令检索• Reranking 重排序检索Query 改写解决的问题• 指代消解Coreference Resolution 处理多轮对话。例如用户问“它的价格是多少”改写器会根据上下文将其改写为“华为 Mate 60 Pro 的价格是多少”。• 纠错与去噪 修正错别字剔除无意义的口语助词如“那个…我想问一下…”。• 术语对齐 将口语化的表达转化为专业术语。例如将“肚子疼怎么办”改写为“腹痛的治疗建议”。• 结构转换 将复杂的长难句拆解或简化提取出核心语义特征。检索通常方案为混合检索主要方案为稠密向量稀疏向量稠密向量BM25。稠密向量通常是低维向量例如 384、768 或 1024 维其中大部分值非零稀疏向量高维向量例如 30,000 维其中大部分值为零。通常稀疏嵌入中的每个活动维度即具有非零值的维度对应于模型词汇表中的特定标记从而具有可解释性。BM25BM25 通过计算查询中的每个词在文档中的重要性然后加权求和得到一个相关性分数。分数越高表示文档与查询越相关。稀疏向量为什么使用稀疏嵌入模型解决的是词汇匹配角度问题稀疏嵌入模型在传统的词汇方法如 BM25和稠密嵌入模型之间占据了一个有价值的细分市场。它们具有以下优点• 混合潜力与稠密模型结合效果非常好稠密模型可能在词汇匹配很重要的搜寻中遇到困难。• 可解释性你可以确切地看到哪些标记对匹配做出了贡献。• 效能在许多检索任务中效能可与稠密模型媲美甚至更好。关于更多稀疏嵌入模型可参考文档https://huggingface.tw/blog/train-sparse-encoderrerank在重排序阶段利用交叉编码器Cross-Encoder把问题Query和“候选文档”拼在一起作为一个长句子塞进模型比如gte-rerank。模型可以同时看到问题和文档的每一个字。通过自注意力机制Self-Attention在 Transformer 的每一层中Query 中的每一个 token 都可以直接通过 Attention 机制观察到文档中的每一个词。生成答案提升回答能力可以明确在提示词中要求不要瞎猜例如你必须严格基于提供的知识内容回答不允许猜测。 如果知识未覆盖请回答“知识库暂无相关内容”。可以让大模型给出引用的 chunk 内容。可以让大模型回答两次然后做一致性校验。当然对于内部客服智能体来说必要性不高。评估ragas可以采用开源框架ragas[1]来评测 rag 效果。ragas 评测主要是依赖于大模型判断。ragas 从四个指标方面来衡量• generation 生成• faithfulness忠实性用于衡量生成的回答与检索到的上下文在事实逻辑上的一致性。• answer relevancy回答相关性用于衡量生成的回答与用户输入之间的相关程度• retrieval 检索• context precision上下文精度衡量的是检索出的内容中相关文本块被放置在排序列表顶部的程度。• context recall上下文召回率衡量的是在所有相关的文档中有多少被成功检索了出来。自研可以选择三个核心指标• Recall Score检索召回率• Correctness答案正确度• Groundedness基于知识库程度指标衡量什么反映什么RecallScore检索是否找到正确知识RAG 是否准确Correctness回答是否正确大模型对问题理解与表达是否准确Groundedness回答是否基于知识大模型是否存在幻觉• retrieved_context即 RAG 知识库召回的内容用作后续给大模型提示的上下文以下会简称 context• answer即大模型根据提示输出给用户所见的答案• ground_truth三个值中唯一由人类编写的基准问题答案计算方法如下• 召回率recall_scorecontext 与 ground_truth 的余弦相似度对比• 正确度correctnessanswer 与 ground_truth 的余弦相似度对比• 是否基于知识groundednesscontext 与 answer 的余弦相似度对比面试问题离线解析模块是怎么做的或者知识库是怎么建的先讲挑战。 我们项目有 5000 份多格式文档包含 PDF多栏排版、扫描版、PPT、纯文本甚至视频。主要挑战是多格式统一解析、OCR 对表格和代码的还原、以及分块时保持语义完整性。再讲方案。 解析层面我们针对不同格式做了针对性处理——PDF 用版面分析技术处理多栏和表格扫描件用 PaddleOCR 配合区域检测PPT 对图片元素做 OCR 补充提取视频走 ASR 转字幕。分块层面采用规则语义融合的三层切分策略配合 chunk overlap 保持连续性。同时给每个 chunk 打上层级标签、内容类型和来源元数据支持在线阶段的精准过滤。最后讲效果和联动。 chunk 大小通过实验配合 LLM 上下文窗口调优元数据标签在检索阶段支持按时间、来源、类型等维度过滤整体提升了召回的准确率。我们用解析失败率、平均 chunk 长度等指标监控离线流程质量持续迭代优化。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】