CrabNote螃蟹笔记

RAG 面试题总结

RAG 是 AI 应用开发里最容易被低估的模块。 很多人以为 RAG 就是“文档切块 -> 转向量 -> 存向量库 -> 检索 -> 拼 Prompt”。Demo 阶段这么理解没问题,但一到真实业务

RAG 是 AI 应用开发里最容易被低估的模块。 很多人以为 RAG 就是“文档切块 转向量 存向量库 检索 拼 Prompt”。Demo 阶段这么理解没问题,但一到真实业务,问题马上变复杂:文档解析不干净、Chunk 切碎了语义、Embedding 模型选错、召回结果不准、权限过滤漏了、知识库更新后旧版本还在、模型拿到证据却没有正确回答。 所以,RAG 面试真正考的不是“你会不会接向量数据库”,而是: 你能不能把一个检索增强生成系统拆成可定位、可优化、可评测、可更新的工程链路。 这份 RAG 面试题根据 AI 专栏现有文章整理。建议你用下面这条主线复习: 1. 先理解 RAG 解决什么问题,以及它和微调、长上下文、传统搜索的区别。 2. 再理解 Embedding、相似度、ANN 索引和向量数据库选型。 3. 接着理解文档处理、Chunk 策略、元数据和权限过滤。 4. 然后掌握 Hybrid Search、Query Rewrite、Rerank、上下文压缩等优化手段。 5. 最后补上 GraphRAG、知识库更新和评测闭环。 面试官真正想考什么 RAG 题通常会从概念开始,但很快会追到排查和优化。你可以按下面几个层次准备。 | 考察方向 | 面试官想确认什么 | 常见扣分点 | | | | | | RAG 基础 | 你是否知道 RAG 解决知识更新、私有数据和可溯源问题 | 只说“降低幻觉”,讲不出链路 | | Embedding 和索引 | 你是否理解向量检索的近似性和成本取舍 | 把向量数据库当普通数据库 | | 文档处理 | 你是否知道召回质量从文档进入系统前就开始决定 | 只调 TopK,不看解析和 Chunk | | 检索优化 | 你是否能定位召回不准、排序不准、上下文噪声问题 | 遇到效果差只改 Prompt | | GraphRAG | 你是否理解多跳关系和全局问题为什么难 | 认为 GraphRAG 一定比向量 RAG 好 | | 更新与评测 | 你是否能维护长期运行的知识库 | 没有版本、灰度、回滚和评测意识 | 回答 RAG 题时,尽量把问题拆成“数据进入索引前、检索召回时、上下文注入时、模型生成后、线上持续更新”几个阶段。这样面试官会更容易感受到你的系统化思维。 RAG 基础 参考文章:《万字详解 RAG 基础概念》 这一组题是 RAG 面试的入口。重点要讲清楚 RAG 的价值和边界:它不是让模型突然变聪明,而是给模型提供外部证据,让回答更可引用、可审计、可更新。 建议掌握这些关键点: RAG 主要解决大模型知识过时、缺少私有数据、回答不可溯源等问题。 传统搜索返回文档列表,RAG 返回基于证据综合后的答案。 RAG 和微调不是替代关系。知识频繁变化、需要引用来源时优先 RAG;要固定风格、格式或能力倾向时再考虑微调。 长上下文适合少量材料深度分析,但企业级知识库仍然需要检索来控制成本、权限和噪声。 RAG 不能彻底消灭幻觉。检索错、证据不足、上下文噪声、模型不遵循证据,都会导致错误答案。 高频面试题: 什么是 RAG?为什么需要 RAG? RAG 和传统搜索引擎有什么区别? RAG 和微调怎么选?什么时候用 RAG,什么时候微调,什么时候两者结合? RAG 系统中 Embedding 模型怎么选?为什么? 余弦相似度、内积和欧氏距离有什么区别? RAG 的幻觉问题怎么解决?RAG 一定不会产生幻觉吗? 什么是 Lost in the Middle 问题?怎么应对? 长上下文窗口是否会取代 RAG? RAG 系统的评估指标有哪些? RAG 的优势和局限性是什么? 什么场景适合用 RAG?什么场景不适合? 一个更完整的回答方式是:RAG 的价值在于把模型回答绑定到可检索证据上,但它的上限由检索质量决定。如果正确证据没有被召回,后面的 Prompt 写得再漂亮也救不回来。 向量数据库与索引 参考文章:《万字详解 RAG 向量索引算法和向量数据库》 这一组题会考到一些底层概念,但面试官通常不是让你推公式,而是看你是否理解向量检索的取舍:速度、召回率、内存、构建成本、过滤能力和运维复杂度。 建议掌握这些关键点: Embedding 把文本映射到语义向量空间,相似文本在空间中距离更近。 ANN 近似检索牺牲一部分精确性,换取更高查询性能,这是大规模向量检索的常见取舍。 Flat 适合小规模和评测基准,HNSW 查询快但内存成本高,IVFFLAT 更节省资源但依赖聚类和参数调优。 PostgreSQL + pgvector 适合中小规模和已有 PostgreSQL 技术栈,专业向量数据库更适合大规模、高并发、复杂检索场景。 向量检索经常要和元数据过滤、权限过滤、关键词检索结合,不能只看相似度。 高频面试题: 什么是 Embedding?为什么需要把文本转成向量? RAG 场景为什么需要向量数据库? ANN 算法为什么可以接受不是 100% 精确的结果? 有哪些向量索引算法?各自优缺点是什么? Flat、HNSW、IVFFLAT、IVF PQ 分别适合什么场景? HNSW 和 IVFFLAT 有什么区别? HNSW 的 参数怎么调?调大和调小分别会怎样? 向量数据库和传统数据库最核心的区别是什么? 如果向量数据从 100 万增长到 1 亿,架构上需要做什么调整? 为什么选择 PostgreSQL + pgvector?什么时候应该换专业向量数据库? 如果被问“向量数据库怎么选”,不要只报产品名。更好的回答是先问规模、延迟、过滤条件、运维能力、云服务偏好、数据安全要求,再给方案。技术选型不是榜单投票,而是约束匹配。 文档处理与 Chunk 策略 参考文章:《RAG 文档处理与切分策略:从解析、清洗、Chunking 到多模态内容处理》 很多 RAG 问题的根源不在模型,也不在向量库,而在文档处理。垃圾内容进索引,后面检索出来的也只是高相似度垃圾。 建议掌握这些关键点: 文档处理管线通常包括解析、清洗、结构化、切分、元数据补全、Embedding、入库和校验。 Chunk 切分不能只按固定长度切。标题层级、段落语义、表格、代码块、FAQ、章节边界都要考虑。 Chunk 太大,召回不精准且上下文成本高;Chunk 太小,语义不完整,容易丢失上下文。 Overlap 可以缓解切分边界问题,但过大容易引入重复内容和检索噪声。 元数据很关键,包括来源、标题、页码、更新时间、权限范围、文档版本和业务标签。 高频面试题: RAG 文档处理管线通常包含哪些步骤? 文档解析、清洗、结构化分别解决什么问题? Chunk 切分为什么不能只按固定长度切? Chunk 大小、Overlap、语义边界应该怎么取舍? 表格、代码块、图片、多模态内容进入 RAG 前怎么处理? 文档处理阶段如何保留标题层级、页码、来源和权限元数据? Chunk 质量差会带来哪些召回和生成问题? 如何从零搭建一套企业级文档处理管线? 面试里如果问“Chunk 怎么切”,建议不要直接说固定 500 字或 1000 字。更稳的回答是:先根据文档类型和问答粒度确定基本范围;优先按标题、段落、语义边界切;对表格、代码、FAQ 做特殊处理;保留父级标题和元数据;最后通过检索评测验证 Chunk 策略,而不是凭感觉调参数。 RAG 检索优化 参考文章:《万字详解 RAG 优化:从召回、重排到上下文工程的系统调优》 这一组题最能体现实战经验。RAG 效果差时,不要一上来就改 Prompt。先判断问题发生在哪一段:没有召回正确证据、召回了但排得太后、放进上下文的内容太吵、模型没有正确使用证据,还是评测样本不稳定。 建议掌握这些关键点: Hybrid Search 结合关键词检索和向量检索,适合专业术语、编号、实体名、语义表达混杂的场景。 Query Rewrite 解决用户问题表达不规范、口语化、多意图、缩写和上下文省略问题。 Rerank 负责在候选结果里重新排序,解决向量相似度不等于答案相关性的问题。 上下文压缩可以降低噪声和成本,但压缩错误会丢失关键证据。 RAG 优化必须基于失败样本集,不能只拿几条主观案例反复调。 高频面试题: RAG 召回率低应该怎么排查? Chunk 策略、Metadata、Hybrid Search、Query Rewrite、Rerank 分别解决什么问题? Hybrid Search 是什么?BM25 和向量检索怎么融合? Query Rewrite、HyDE、Self Query 分别适合什么场景? Rerank 解决什么问题?为什么不能只依赖向量相似度排序? 上下文压缩有什么价值?什么时候会伤害答案质量? RAG 优化为什么必须先建立失败样本集? 线上 RAG 出现“答非所问”,应该按什么路径定位? 推荐的排查顺序是:先看正确文档是否进入候选池,再看排序位置是否靠前,再看上下文是否被截断或污染,最后看模型是否忠实使用证据。这样能避免把检索问题误判成 Prompt 问题。 GraphRAG 参考文章:《万字详解 GraphRAG:为什么只靠向量检索撑不起复杂知识问答》 GraphRAG 题通常出现在更深入的面试里。它不是标准 RAG 的银弹,而是用图结构补足向量检索在实体关系、多跳推理和全局性问题上的短板。 建议掌握这些关键点: 标准向量 RAG 擅长局部相似内容召回,但不擅长跨文档关系、多跳推理和全局总结。 GraphRAG 会抽取实体和关系,构建知识图谱,再通过局部检索、全局检索或社区摘要回答复杂问题。 社区摘要可以帮助回答全局问题,但构建和更新成本很高,也可能引入摘要偏差。 GraphRAG 的权限过滤比文档级过滤更复杂,因为节点、边、邻居和摘要都可能带来信息泄露。 成熟系统往往不是纯 GraphRAG,而是根据问题类型在关键词检索、向量检索、多向量、图检索之间动态路由。 高频面试题: GraphRAG 解决什么问题?和标准向量 RAG 有什么区别? 为什么说 Chunk 是信息孤岛? 向量相似度为什么不擅长多跳推理? GraphRAG 中实体、关系、社区发现分别是什么? 全局检索和局部检索有什么区别? GraphRAG 的社区摘要有什么价值?它的成本在哪里? GraphRAG 如何做权限过滤? 什么场景适合 GraphRAG?什么场景不适合? 成熟系统为什么通常不是纯 GraphRAG,而是混合路由架构? 如果被问“要不要上 GraphRAG”,不要默认回答要。更稳的判断是:如果业务问题大量涉及跨文档关系、组织网络、实体关联、多跳推理和全局总结,可以评估 GraphRAG;如果只是 FAQ、产品文档、政策查询,标准 RAG 加检索优化通常更划算。 知识库更新与评测 参考文章:《RAG 知识库文档如何更新:增量更新、版本控制、去重与全量重建》、《AI 应用评测体系:从 Golden Set 构建到线上灰度闭环》 RAG 上生产后,最容易被忽视的是“长期维护”。文档会更新,Embedding 模型会升级,Chunk 策略会调整,权限会变化,业务问题分布也会变。没有更新和评测机制,RAG 很快就会从“知识库问答”变成“旧知识随机复读”。 建议掌握这些关键点: 知识库更新要处理新增、修改、删除、版本、去重、权限、灰度和回滚。 Embedding 模型升级通常意味着向量空间变化,旧向量和新向量混用会带来检索质量问题。 Chunk 策略变更可能影响所有历史切片,通常需要全量重建。 RAG 评测要分检索指标和生成指标。检索差和生成差,优化方向完全不同。 线上失败样本要回流到评测集,形成持续改进闭环。 高频面试题: RAG 知识库为什么不能只新增不删除? 增量更新和全量重建怎么选? Embedding 模型升级后,为什么通常需要重建索引? Chunk 策略变更会影响哪些历史数据? 如何避免同一文档多个版本同时被召回? 知识库更新如何做灰度、回滚和审计? RAG 评测为什么要分检索质量和生成质量? MRR、NDCG、Recall@K、Context Precision、Faithfulness 分别衡量什么? 回答更新题时,可以用“数据版本 + 索引版本 + 灰度发布 + 指标监控 + 快速回滚”这条线。这样比只说“定时同步文档”更像生产系统。 排查框架 RAG 效果差,可以按下面路径排查: 1. 问题理解:用户问题是否口语化、缩写、多意图、需要多跳推理。 2. 文档处理:原始文档是否解析正确,Chunk 是否保留语义和元数据。 3. 召回阶段:正确证据是否进入候选池,召回池是否足够大。 4. 排序阶段:正确证据是否排在前面,是否需要 Rerank。 5. 上下文阶段:证据是否被截断、重复、污染,是否存在 Lost in the Middle。 6. 生成阶段:模型是否忠实基于证据回答,是否需要引用和拒答策略。 7. 评测阶段:是否有稳定样本集,是否能复现问题。 这个框架非常适合面试,因为它能把 RAG 从“一个链路”拆成“多个可诊断模块”。 常见扣分点 把 RAG 简化成向量数据库接入。 只关注 TopK,不关注文档解析、Chunk、元数据和权限。 效果差时只改 Prompt,不看检索和排序。 认为向量相似度高就等于答案相关。 认为 GraphRAG 一定优于标准 RAG,不考虑成本和适用场景。 没有知识库版本管理、灰度、回滚和评测闭环。 复习建议 建议按“基础概念 向量索引 文档处理 检索优化 GraphRAG 更新与评测”的顺序复习。 复习时要始终记住一句话: RAG 的核心能力不是生成,而是把正确证据稳定、低成本、可治理地送到模型面前。 如果你能围绕这句话展开,RAG 面试基本不会跑偏。