RAG 面试知识手册检索增强生成 · 从原理到工程落地

RAG 面试知识手册

检索增强生成 · 从原理到工程落地的完整学习文档
依据「卡码笔记 · RAG 系列」11 篇文章知识整理 · 2026 年 9 月

知识框架总览(先看这一节,建立全局观)

本手册的知识骨架是一条主线:「为什么需要 → 怎么搭 → 怎么优化 → 怎么排障 → 怎么评估 → 怎么答」。

学习阶段章节解决的问题
动机第 1 章 为什么需要 RAG大模型的四大局限是什么,RAG 凭什么应对
搭建第 2 章 完整链路拆解离线建库 + 在线检索生成,每个环节做什么
搭建第 3 章 切片策略 Chunking文档怎么切,检索粒度怎么定
搭建第 4 章 Embedding 详解语义怎么变成向量,模型怎么选
搭建第 5 章 向量数据库海量向量怎么毫秒级检索,为什么不用 MySQL
优化第 6 章 优化思路全景Query 侧 / 检索侧 / 精排侧 / Context 侧四大类手段
优化第 7 章 长文档与代码检索结构不能断、版本不能错、权限不能漏
优化第 8 章 Agentic RAG该不该查、查几次、查什么、不够时怎么办
排障第 9 章 排障诊断方法论检索侧五类 + 生成侧四类问题逐一排查
评估第 10 章 评估体系与指标Recall/Precision/MRR/NDCG + RAGAS 四维度 + 采用率
表达第 11 章 面试回答框架五大落点、五步回答法、高频八问

学习路线建议:第一次学习按章节顺序通读(第 1→2→3→4→5 章是地基,必须先懂);复习时按「链路 → 排障 → 优化 → 评估」的面试追问顺序自测;最后用第 11 章的高频八问做模拟问答。


第 1 章 为什么需要 RAG

一句话定位:RAG 不是大模型能力的升级,而是大模型的「外置数据库」——让模型在回答时能检索自己的 cheat sheet,有据可依。

1.1 从一个真实的困境说起

公司有几千份内部文档(产品手册、操作规范、历史项目经验、客户合同),想做一个 AI 问答系统。直接用大模型,第一轮测试效果不错,但很快发现四个绕不开的问题:

这不是模型能力不够,而是大模型作为技术的根本性天花板——RAG 就是为突破这些天花板而诞生的。

1.2 大模型的四大局限 ⭐必背

(1)幻觉问题(Hallucination)

大模型本质是概率语言模型,生成每个 token 时做的是「预测下一个最可能的词」,而不是「从知识库里查询正确答案」。它不知道答案时不会说不知道,而是生成一个「听起来最合理」的答案——可能完全是捏造的,但语气坚定、格式工整,难以判别真假。企业场景里,它会以可信的方式传播错误信息,危害远比「回答错误」更严重。

(2)私有知识问题

大模型在公开数据上训练。内部文档、客户合同、产品手册、会议记录它从未见过。把文档全塞进 Prompt 的方案不可行:文档量到几百份、几千份时,token 成本和上下文长度成为瓶颈,且模型在极长上下文里注意力严重稀释,对中间内容利用率极低。

(3)知识更新问题

模型训练有截止日期,通常落后现实 6 个月到 1 年。价格变了、政策修订了、新对手出现了,模型全不知道。每隔几个月重训模型更新知识,在成本和时间上都不可接受。

(4)可追溯性问题

模型无法告诉你「这句话来自哪份文档的第几页」。法律、医疗、金融等对准确性要求极高的场景,没有来源引用的答案不可接受。

1.3 RAG 是怎么应对的 ⭐必背

RAG 全称 Retrieval-Augmented Generation(检索增强生成)。核心思路:在让模型回答之前,先去知识库检索出最相关的内容,作为上下文一起喂给模型,让模型「看着资料」回答。

大模型局限RAG 的应对
幻觉检索到的原文片段作为事实锚点,模型被要求「根据资料回答」;幻觉概率大幅降低,但不是归零
私有知识知识库自建自维护,可包含任何内部文档;模型只需基于检索到的片段推理和组织语言
知识更新更新知识库只需更新文档 + 重新向量化索引,与模型训练截止日期解耦
溯源每次检索都知道命中了哪份文档的哪个片段,答案可附引用来源供核查

1.4 适用与不适用场景 ⭐高频

适合 RAG 的场景:

不适合 RAG 的场景:创意生成、强推理任务、模型训练数据已良好覆盖的稳定领域——这些场景加 RAG 只是增加延迟和成本,没有实质收益。

1.5 常见误区

1.6 面试怎么问


第 2 章 RAG 完整链路拆解

一句话定位:RAG 不是一个算法,而是一条工程流水线。离线侧解决「知识怎么进去」,在线侧解决「知识怎么找出来、怎么用起来」。

2.1 链路总览 ⭐必背

离线阶段(把知识存进去):

  1. 文档加载:PDF / Word / 网页 / Markdown / 数据库记录 / 邮件,不同格式需不同解析方式。解析质量直接影响整个系统的上限——扫描件或排版混乱的 PDF 会带来噪声,「垃圾进,垃圾出」。
  2. 文档处理(清洗与预处理):去页眉页脚、无意义格式符号、重复内容;识别并保留标题结构;过滤表格乱码、图片占位符。这是工程量最大、最容易被低估的部分。
  3. 切片(Chunking):清洗好的文档切成更小的 chunk。整篇文档做检索单元会导致粒度太粗(相关内容被淹没)或上下文太长(放不进模型 / 注意力被稀释)。这是设计决策最多的环节。
  4. 向量化(Embedding):每个 chunk 经 Embedding 模型转成高维浮点向量,代表语义。关键约束:用户 Query 和文档 chunk 必须用同一个 Embedding 模型,两者才在同一语义空间,相似度计算才有意义。
  5. 存元数据:chunk 来自哪份文档、哪一页、创建时间等。支撑「只看最近三个月的文档」这类过滤需求。
  6. 存入向量数据库:Milvus / Weaviate / Chroma / Pinecone 等,同时向量与元数据分别存储。核心能力是 ANN 近似最近邻搜索,毫秒级找到 top-K。

在线阶段(找出来 + 用起来):

  1. Query 处理(可选):Query 改写(口语化问题转检索友好形式、复杂问题拆成子问题分别检索)、Query 扩展(同义词扩展提高召回覆盖面)。
  2. 检索(Retrieval):Query 向量化后与库内向量做相似度计算(通常余弦相似度),召回 top-K(K 常取 3-10)。进阶做混合检索:向量检索(语义相似)+ 关键词检索(BM25 精确匹配)两路合并。
  3. Rerank 精排:用 Cross-Encoder 模型对 (Query, Chunk) 对打分重排,只保留最相关的几条。最常见也最有效的优化之一,代价是多一次模型推理延迟。
  4. 上下文构建(Context):最终 chunk + 元数据(来源、页码)按格式拼装 Prompt。Prompt 结构通常包含:系统指令(区分指令与资料、要求资料不足时明确说明)、参考资料(带来源标注)、用户问题。
  5. 生成(Generation):LLM 基于上下文生成回答。Prompt 要有明确引导——优先依据资料回答,不依赖参数知识,并要求标注来源。

2.2 链路的核心认知 ⭐必背

2.3 常见误区 ⭐

误区纠正
RAG = 向量检索向量检索只是在线侧一步;完整系统还有文档解析、Chunking 策略、Embedding 选型、元数据管理、Rerank、Prompt 设计
模型够强,Chunking 随便切Chunking 是最底层基础设施;chunk 太短语义不完整、太长信息被稀释,模型能力无法弥补检索质量缺陷
Rerank 一定要加Rerank 有延迟和成本代价;实时性要求高、文档量小时,精准 Embedding + 合理 top-K 往往已够。先评估是否真需要

2.4 面试怎么问


第 3 章 切片策略 Chunking

一句话定位:Chunking 是 RAG 里最「不起眼」却影响深远的设计决策——糟糕的 Chunking 会让后面所有优化努力都打折扣。

3.1 核心矛盾 ⭐必背

类比:把 500 页教材撕成复习卡片——切太细,每张卡片上下文不完整;切太粗,要找的那句话藏在一堆无关文字里。

3.2 四种主流切分策略 ⭐必背

策略做法优点缺点 / 适用
固定长度 Fixed-size按字符数 / token 数硬切(如每 chunk 512 token)实现极简不管语义边界,可能切断句子、拆散论述;只适合原型验证,上线前换掉
递归字符 Recursive Character按分隔符优先级递归切:先 \n\n(段落),再 \n(换行),再句号……直到 chunk 达标在自然语义边界断开 + 控制上限;工程最常用、默认选择(LangChain RecursiveCharacterTextSplitter)普通文本场景的不错默认
语义切分 Semantic按句子切分,计算相邻句子的 Embedding 相似度,相似度明显跌落处 = 话题转换处切开语义完整性最好,chunk 主题聚焦需全文 Embedding 计算,慢、成本高,chunk 大小不规则
结构感知 Structure-aware按文档层级结构切:Markdown 标题(#/##/###)、法律条款编号、代码函数/类边界结构化文档最优、检索精准度往往最高要求文档有明确结构

3.3 Overlap:被低估的关键参数 ⭐

3.4 chunk 大小经验值(没有通用答案,需按业务效果调整)

场景参考范围
对话型问答256~512 token
知识库检索512~1024 token
长文档摘要1500~2000 token

3.5 策略选择决策框架 ⭐

3.6 面试怎么问


第 4 章 Embedding 详解

一句话定位:Embedding 不是把文字变成数字的简单编码,而是把语义压缩进可计算的空间——让相似的意思在空间里相互靠近。

4.1 Embedding 是什么 ⭐必背

4.2 Embedding 不是生成文本,是压缩语义 ⭐高频辨析

4.3 模型选型四维度 ⭐必背

维度要点
向量维度越高语义越细腻,但存储与检索开销越大。常见 384(轻量)/ 768(均衡)/ 1536(高精度);中等规模业务选 768 维是合理起点
最大 token 限制直接约束 chunk 大小上限(如 bge-small-zh 最多 512 token);选型前必核对
中文支持中文场景最关键依据。通用英文模型(如 OpenAI text-embedding-ada-002)中文偏弱;中文优选 BGE 系列 / M3E 系列
非对称检索支持RAG 典型场景是短 Query 找长文档;BGE 系列支持给 Query 加前缀 Represent this sentence for searching relevant passages: 提升效果

4.4 中文 vs 通用场景

4.5 Embedding vs Rerank ⭐⭐最高频

维度Embedding(双塔 Bi-Encoder)Rerank(交叉编码器 Cross-Encoder)
编码方式Query 和文档各自独立编码成向量Query 和文档拼接后联合输入模型
相关性计算向量距离(余弦相似度)直接输出相关性分数
速度文档向量可离线预计算,检索毫秒级,可处理百万量级无法预计算,需逐对推理,只适合少量候选(top-20 以内)精排
精度相对粗能看到 Query 与文档的完整交互,精度更高
角色粗筛:从全量文档召回 top-K(20-50 个)精排:精选出 top-N(通常 3-5 个)进 LLM 的 Context

两者是流水线关系:Embedding 快速召回候选池 → Rerank 精排过滤出最终上下文。

4.6 常见误区 ⭐

误区纠正
Embedding 模型越大越好不一定。大模型推理慢、占内存;轻量但针对检索优化的模型(如 bge-small-zh)可能更快更准更省
用 OpenAI 的 Embedding 就够了英文场景表现极好;中文场景要做评测对比,专门中文模型往往更好,还能减少第三方依赖、降低成本
Embedding 和 Rerank 模型随意配Rerank 最好与 Embedding 训练数据分布相近,否则评分口径不一致,精排效果不稳定
换了 Embedding 模型不用重建索引完全错误。不同模型向量空间不同,旧索引与新 Query 向量不可比;必须全量重新 Embedding + 重建整个索引

4.7 面试怎么问


第 5 章 向量数据库

一句话定位:向量数据库解决一个传统数据库根本没有设计来解决的问题——在海量高维向量中快速找到相似的那些。

5.1 解决的核心问题 ⭐

100 万个 768 维向量中找与 Query 向量最相似的 top-5:

5.2 为什么不能用 MySQL 做向量检索 ⭐⭐高频

5.3 ANN:在速度和精度之间取平衡 ⭐必背

ANN(Approximate Nearest Neighbor,近似最近邻搜索):预先构建索引结构,检索时只访问一小部分向量。「近似」= 不保证绝对最近邻,但实践精度通常 95%+(用 recall@K 衡量),速度提升是数量级的。

HNSW(分层可导航小世界图)

IVF(倒排文件索引)

5.4 向量数据库的附加能力 ⭐

5.5 主流选型 ⭐

类别代表特点 / 适用
专用向量数据库Milvus / Qdrant / Weaviate / Pinecone功能最完善、性能最优;大规模生产
传统数据库的向量扩展PostgreSQL + pgvector、ES + dense vectors已有基础设施的小规模场景可用;百万量级性能明显不如专用方案
轻量级本地库FAISS / ChromaFAISS 是纯向量索引库(非完整数据库,无持久化 / 元数据管理 / CRUD),适合嵌入应用做原型;Chroma 轻量级,适合开发调试

选型决策:几十万向量以内 → Chroma 或 pgvector 足够;百万以上、需要元数据过滤和混合检索 → Milvus / Qdrant;云端托管免运维 → Pinecone。

5.6 常见误区 ⭐

误区纠正
ANN 结果不精确,所以不可靠精度通常 95%-99%(recall@K),对 RAG 完全够用,速度收益是数量级的
索引参数越高越好超参越大精度越高但内存/构建时间成比例增加;按实际场景找平衡点
向量相似度高 = 语义相关相似度取决于 Embedding 模型的训练质量和领域覆盖;模型不行,相似度没意义
用 FAISS 就是用了向量数据库FAISS 只是索引库;生产环境需自己封装持久化和业务逻辑,或用封装好的向量数据库

5.7 面试怎么问


第 6 章 RAG 优化思路全景

一句话定位:RAG 优化没有万能药——先诊断问题出在哪个环节,再选择对应手段;「加个 Rerank 就搞定」很多时候是拿锤子找钉子。

6.1 优化框架:四大类 ⭐必背

6.2 Query 侧优化 ⭐

6.3 检索侧优化 ⭐

6.4 精排优化:Rerank ⭐⭐

6.5 Context 侧优化 ⭐

6.6 初学者优化方法论 ⭐⭐必背

  1. 先建立 baseline,做好评估:用 Recall@K + 答案质量指标(LLM 打分或人工评估)建立可量化基线。没有基线就无法判断优化是否有效。
  2. 优先解决「能不能找到」,再解决「找到了对不对」:Recall@5 低先优化召回(换 Embedding、调 Chunk 策略、加混合检索),而不是先加 Rerank。
  3. 每次只改一个变量:同时改 Chunk 大小、Embedding 模型和 Rerank,永远不知道哪个起了作用。
  4. 按成本/收益排优先级:混合检索成本低覆盖广,通常是性价比最高的第一步;Query 改写、Rerank 增加延迟成本,按业务 SLA 决定。

6.7 面试怎么问


第 7 章 长文档与代码检索

一句话定位:检索单位 ≠ 返回单位;相关 ≠ 可用。可用 = 完整 + 当前 + 有权限。结构不能断、版本不能错、权限不能漏。

7.1 三大硬问题 ⭐必背

「按 512 token 切 + overlap + 向量检索」适合原型,不适合真实系统:

7.2 长文档:按标题树建层级 ⭐

7.3 代码:按 AST 切分,不能按字符硬切 ⭐

7.4 Parent-Child 两级节点:找得准 + 读得懂 ⭐必背

每个 Child 保存 parent_id。命中 Child 后不是机械返回整篇文档,而是根据问题取父节点、标题路径、必要的相邻节点。

父级扩展是预算决策,不是固定动作:

7.5 版本与权限必须进索引 ⭐⭐

代码不是静态文本:同一路径在 main、功能分支和历史 commit 上可能完全不同。索引至少保存:

{
  "repo": "payment-service",
  "path": "src/refund/RefundService.java",
  "symbol": "RefundService.apply",
  "branch": "feature/refund-v2",
  "commit": "a1b2c3d",
  "parent_id": "class:RefundService",
  "acl": ["team:payment"]
}

原则:先过滤(版本/路径/ACL),后相似度召回。 如果先召回再删权限不匹配的结果:受限内容仍可能进入候选缓存、Rerank 服务或调试日志;且删除后候选数量不足,召回质量突然下降。访问控制要在检索边界生效。

7.6 在线检索链路(可落地版本)⭐

  1. 从会话或 IDE 获取 repo + branch/commit + user/tenant;
  2. 解析 Query,识别符号名、文件名、错误码和自然语言意图;
  3. 先做版本、路径和 ACL 过滤;
  4. 同时跑向量检索与 BM25,合并候选;
  5. 在 Child 粒度 Rerank(避免大父块稀释相关度);
  6. 根据 parent_id 取父级、标题路径或必要的相邻节点;
  7. 去重并按 Token 预算组装 Context,附带路径、行号和 commit 作为引用。

易错点:第五、六步最容易写反——先在小块上排序,再向父级扩展。如果先把所有 Child 展开成大块再 Rerank,相关信号会被大量父级文本冲淡,延迟也会上升。

7.7 落地与评估 ⭐

7.8 知识拓展四问 ⭐


第 8 章 Agentic RAG

一句话定位:混合检索/Rerank 解决「这一次怎么查得更准」;Agentic RAG 解决「该不该查、查几次、查什么、不够时怎么办」——系统知道自己为什么查、还缺什么、什么时候算查完。

8.1 演进路径:四个阶段 ⭐必背

阶段代表核心特征边界
第一阶段传统 RAG(2020 论文)参数化知识 + 非参数化知识结合;固定链路 Query→Top-K→Context→生成隐含假设「一句话足够适合检索且首次 Top-K 含答案」常不成立
第二阶段Advanced RAG加 Query 改写 / Multi-Query / 混合检索 / Rerank / 父子块 / Context 压缩流水线变强但仍固定:简单问题照跑,复杂问题不会加轮
第三阶段自适应与纠错Self-RAG(按需检索+反思)、CRAG(评估检索结果不可靠触发纠正)、Adaptive-RAG(按复杂度选不检索/单步/多步)—
第四阶段Agentic RAGFunction Calling / ReAct 使检索变成工具;Agent 规划-调用工具-根据结果调整—

演进对比:传统——路径写死、检索 1 次、带错误结果继续生成;Advanced——写死更多优化、固定若干次、依赖预设策略;自适应——分类器或模型判断、0 到多次、评估后改写补充检索;Agentic——Agent 按目标和状态决定、动态次数、换 Query 换工具补证据或拒答。

8.2 Agentic RAG 解决什么问题 ⭐必背(与混合检索/Rerank 不同层)

8.3 核心原理:五个角色 ⭐必背

  1. 规划与路由:判断复杂度——直接回答 / 单次检索 / 多步拆解;
  2. 检索工具:向量 / BM25 / 数据库 / 网页 / API,各自能力清晰;
  3. 状态记录:子问题、已查来源、候选证据、冲突点、剩余预算;
  4. 证据评估:相关性、完整性、来源可靠性、相互一致性;
  5. 停止与生成:证据够 → 带引用回答;不够且预算尽 → 拒答或请用户补充。

运行循环:理解目标 → 决定是否检索 → 拆子问题 → 选源 → 执行检索 → 评估证据 → 不够则改写/换工具/继续,足够则整合/标来源/生成【递进 = ReAct 落地】。

反思不能只靠模型拍脑袋:生产要加确定性规则——最少几类证据 / 命中版本 / 引用回原文 / 数值来自结构化数据 / 最大轮数 / 耗时费用上限。Agent 负责动态决策,规则负责兜底。

示例(对比 2025/2026 差旅政策 + 上海特殊规定):识别三个证据槽位 → 分别生成 Query 并行检索 → 检查版本号 / 生效日期 / 适用组织 / 来源权限(不只看相似度)→ 缺 2025 版查归档库、来源冲突核对正式发布记录 → 齐全后做差异比较,每条结论带回来源。

8.4 关键辨析:Agentic RAG ≠ 多 Agent ⭐高频

单 Agent + 几个工具 + 状态机 + 证据检查已经是 Agentic RAG。只有职责边界稳定(不同权限/不同模型)才拆多 Agent;多 Agent 带来通信、上下文复制、错误传播、调试成本。先跑稳单 Agent。

8.5 落地权衡 ⭐

代价:路径动态难预测、多轮调用延迟波动、成本随轮数涨、调试要看完整决策轨迹、多数据源逐工具鉴权。

六条守则:限制循环(最大步骤/超时/Token 预算)、工具要窄(用途清晰 Schema 稳定)、权限前置、证据可回放、失败可降级(退回固定 RAG/澄清/拒答)、分层评估。

适用场景:适合多跳推理、多子问题拆解、知识多源分散、高证据完整性要求、问题模糊需澄清;不适合(固定 RAG 更划算)FAQ 单跳、数据源单一命中率高、首字延迟严格、Workflow 可完成。

升级顺序:先做好传统 RAG(文档切片检索评估)→ 加路由与纠错 → 最后开放 Agent 循环。基础召回差就套 Agent = 更贵更慢地找不到。


第 9 章 排障诊断方法论

一句话定位:答案不好 = 检索崩了(没找到/找错了)或生成崩了(找到没用好)。不先定位,所有优化都是治标不治本。

9.1 检索侧五类问题 ⭐必背

问题症状应对
文档质量差OCR 乱码 / 格式混乱 / 模板噪声;检索出「第 3 页」「版权所有」类片段切分前加强预处理、专项清洗、人工校对
Chunk 粒度不合理太小语义不完整;太大多主题混合、匹配模糊按 Chunking 章节调策略与参数
Embedding 选型不当中文/领域覆盖不足→语义相似却距离远;换说法结果差异巨大MTEB 参考 + 业务数据跑召回对比
召回不足库里有答案系统给不出、手动搜得到自动搜不到;索引未及时重建 / 入库被误过滤 / top-K 太小检查索引覆盖、加大 K 配 Rerank、混合检索
缺少 Rerank答案「相关但不精准」、Context 有答案答不准Cross-Encoder 精排

9.2 生成侧四类问题 ⭐必背

问题症状应对
Prompt 拼接问题chunk 间无分隔符 / 来源缺失 / 指令内容混淆;多文档内容混淆、拒答指令遵从率低指令与资料分离、加分隔符
上下文干扰 Context Noise低相关 chunk 稀释注意力;答案混入奇怪细节、给「平均答案」Rerank 过滤、宁少勿滥、Prompt 要求只根据资料答
缺引用约束模型混入参数知识引入幻觉明确「严格根据资料回答、无答案明说」、要求标注来源
模型理解能力不足跨 chunk 综合推断 / 复杂逻辑小模型明显升级模型、逐步推导 Prompt、Query 拆解

9.3 系统诊断三步法 ⭐⭐必背

  1. 第一步·分流:手动查 top-K 是否含正确答案 → 含但答错 = 生成侧;不含 = 检索侧。
  2. 第二步·检索侧定位:Recall@K 量化;相似度分数普遍低 = Embedding 空间不匹配;分数高但内容无关 = 领域理解偏差。
  3. 第三步·生成侧定位:把正确 chunk 手动构造 Prompt 喂模型 → 能答对 = 检索问题;答不对 = Prompt / 模型能力问题。

经验值:Recall@5 低于 70% 说明检索侧有明显问题,优先优化。

9.4 面试怎么问


第 10 章 评估体系与指标

一句话定位:检索侧保证能找到,生成侧保证用得好。没有评估的优化 = 拿锤子找钉子。离线指标是过程指标(方向盘),线上采用率是结果指标(目的地)。

10.1 为什么必须有评估体系

10.2 检索侧四大指标 ⭐⭐必背

指标定义公式工程意义 / 局限
Recall@K正确答案出现在 top-K 的比例Recall@K = 检索到的相关 chunk 数 / 所有相关 chunk 总数Recall < 70% 说明检索侧严重问题;Recall 不够加 Rerank 也救不回来;局限:只看找没找到,不管噪声
Precision@Ktop-K 中相关内容的比例Precision@K = 相关 chunk 数 / K低 = 噪声多稀释注意力;与 Recall 矛盾(扩 K 升 Recall 降 Precision)
MRR第一个相关结果排名倒数的均值MRR = (1/N) × Σ(1/rank_i)衡量「最好的有没有排前面」;示例:3 个查询第一个相关结果排第 1/3/2 位,MRR = (1 + 1/3 + 1/2)/3 = 0.611
NDCG相关度分级 + 位置折扣 + 理想排序归一化DCG@K = Σ(rel_i / log2(i+1));NDCG@K = DCG@K / IDCG@K最全面但需标注相关度等级(0-3 分)、成本高,用于离线对比方案

例:知识库有 3 个 chunk 含正确答案,top-5 含其中 2 个 → Recall@5 = 2/3 ≈ 66.7%,Precision@5 = 2/5 = 40%。

工程平衡:先用较大 K(20-50)保 Recall → Rerank 把 Precision 拉回来 → 最终 3-5 条高质量 chunk 进 LLM。

10.3 生成侧:RAGAS 四维度 ⭐⭐必背

RAGAS(Retrieval Augmented Generation Assessment)是基于 LLM 的自动化评估框架,已成 RAG 生成评估事实标准。

维度衡量什么评估方法 / 公式低分意味着
Faithfulness 忠实度答案是否忠实于上下文、有没有幻觉答案拆成多个陈述,LLM 判断每条能否从上下文推导;Faithfulness = 可推导陈述数 / 总陈述数模型自由发挥、有幻觉
Answer Relevancy 答案相关性答案是否真正回答了问题LLM 从答案反向生成 N 个问题,算与原问题的语义相似度均值答非所问、跑偏
Context Relevancy 上下文相关性检索到的上下文有多少有用LLM 提取与问题相关句子;= 相关句子数 / 总句子数检索 / 切分质量差,噪声多
Context Recall 上下文召回关键信息是否都被检索到需 ground truth;判断标准答案的陈述能否从上下文推导;= 可推导陈述数 / 标准答案总陈述数检索漏了关键信息

四指标关系:Context Recall + Context Relevancy = 检索质量(从生成角度看);Faithfulness + Answer Relevancy = 生成质量。Context Recall 低,其他指标再高也没用(关键信息根本没检索到);Context Relevancy 低会拉低 Faithfulness 和 Answer Relevancy(噪声干扰生成)。

Faithfulness 示例:上下文「年假 10 天,工龄满 3 年增加到 15 天」,答案多编了「满 5 年 20 天」→ 3 条陈述中 2 条可推导 → Faithfulness = 2/3 ≈ 66.7%。

10.4 评估集构建 ⭐

评估集三要素:问题(Query)+ 标准答案(Ground Truth,可选)+ 相关文档片段(Relevant Chunks)。

构建方法质量 / 成本适用
人工构造质量最高 / 成本最高核心场景,50-200 条建 baseline
真实日志采样质量中等 / 成本中等持续监控线上问题
LLM 生成质量较低 / 成本最低快速验证(注意:问题可能过于理想化,不代表真实用户行为)

工程实践:先用 LLM 生成快速搭框架 → 再人工构造核心场景 50-100 条 → 用日志采样持续扩大覆盖。

10.5 离线评估 vs 在线评估 ⭐

10.6 线上采用率(Adoption)⭐⭐

强信号:复制率(复制次数/总回答次数)、点赞率、引用率——主动采用行为。

弱信号(规模大):无追问率(需结合停留时长判断)、停留时长(3-10 秒可能是扫一眼,30 秒以上可能是认真阅读)、跳出率。

负向信号:重复提问率(换问法再问一遍)、点踩率、人工接管率。

综合采用率 =(复制次数 + 点赞次数 × 2 − 点踩次数 × 2)/ 总回答次数。点赞/点踩权重 ×2 是因为用户主动点击的成本比复制高,信号更强。

离线指标升但采用率降的常见原因 ⭐:

10.7 评估的延迟与成本 ⭐

10.8 评估驱动的优化闭环 ⭐⭐必背

  1. 建立 baseline:评估集上跑当前系统,记录所有指标作基准;
  2. 定位瓶颈:Recall 低 → 先优化召回;Recall 高但 Precision 低 → 加 Rerank;Context Relevancy 低 → 改 Chunking 或减 top-K;Faithfulness 低 → 改 Prompt 约束;Answer Relevancy 低 → 检查 Query 理解和模型能力;
  3. 针对性优化:每次只改一个变量;
  4. 对比验证:新指标更好 → 采纳;更差或部分场景退化 → 回滚或继续调整;
  5. 持续迭代:新问题加入评估集、定期重评、监控线上。

10.9 知识拓展精选


第 11 章 面试回答框架

一句话定位:面试官真正想听的不是技术名词,而是你有没有完整做过「发现问题 → 做出取舍 → 验证结果」这条工程链路。

11.1 项目面试的五大落点 ⭐必背

  1. 业务目标:知识从哪来、为什么需要 RAG、不用 RAG 会出什么问题;
  2. 完整链路:离线怎么建库,在线怎么检索、重排、拼接、生成;
  3. 选型取舍:Chunk、Embedding、向量库、Top-K、混合检索为什么这么选;
  4. 问题诊断:答案不准时,先区分检索没找到还是模型没用好;
  5. 指标证据:用检索、生成、线上业务三层指标证明方案有效。

面试官会沿项目逐层下钻:简历「做过 RAG 项目」→ 业务(为什么需要)→ 链路(离线在线怎么串)→ 选型(参数为什么这样定)→ 排障(答案不准先查哪侧)→ 证据(哪些指标证明有效)。链路、选型、排障、指标是应用岗必答线;索引源码、Embedding 训练等底层细节知道原理和工程影响即可。拉开差距的不是背到多底层,而是必答区每一层都有项目证据。

11.2 通用回答五步法 ⭐⭐必背

结论 → 项目事实 → 方案取舍 → 指标证据 → 适用边界。

反面示例(「为什么加 Rerank」只答「Rerank 能提高准确率」);正面示例:「我们先看评估集,发现相关 Chunk 多数已进入 Top-20,但真正能回答问题的片段经常排不到前 5,所以问题不在召回覆盖,而在候选排序。我们保留前面的快速召回,再用 Rerank 做精排,只把 Top-N 交给模型。代价是多一段推理延迟,所以候选数和 Top-N 是根据离线排序指标、端到端答案质量和 P95 延迟一起定的。」——有症状、有判断、有方案、也有代价。

11.3 高频八问要点 ⭐⭐必背

万能句式 ⭐:「优化前,评估集上的 [指标] 是 [基线];定位到 [根因] 后,我们做了 [单一改动],该指标变成 [结果]。同时 [延迟/成本/风险指标] 变化了 [真实数据],所以最终选择 [上线/灰度/放弃]。」方括号必须换成项目真实数据;忘了数值就讲统计口径和大致区间,不能编。

11.4 面试里最容易暴露的四个问题 ⭐

暴露问题改法
只报技术栈不讲问题每个工具补一句「它解决了什么问题、为什么适合当前约束」
把参数说成行业标准讲候选范围、对比实验和最终指标,不把个人配置包装成通用答案
只讲准确率不讲成本延迟质量达标后,比较端到端延迟和每个成功任务成本
编指标面试官追问评估集规模/标注方式/统计口径会穿帮;如实说离线评估 / 人工抽检规则

11.5 只做过 Demo 怎么答 / 被问没负责的环节 ⭐


附录 A · 重点难点速查(考前必看)

  1. 四大局限 ↔ 四大应对:幻觉→事实锚点(缓解非根治);私有知识→自建知识库;时效→更新文档重建索引(与训练解耦);溯源→引用来源。
  2. 离线在线一致性铁律:Embedding 模型与清洗方式必须离线在线完全一致。
  3. Chunking:太小语义不完整、太大信噪比低;四种策略(固定/递归/语义/结构感知);overlap 10%~20%;经验值 256-512(对话)/ 512-1024(知识库)/ 1500-2000(长文摘要)。
  4. Bi-Encoder vs Cross-Encoder:分别编码可预计算适合粗筛 vs 拼接联合更准但逐对推理只适合精排。
  5. 为什么不用 MySQL:B-Tree/Hash 不支持高维几何相似度 + 全量 O(N) vs ANN 近似 O(log N)。
  6. HNSW vs IVF:分层导航图快而准但内存大 vs 聚类货架省内存但有边界效应。
  7. Rerank 该不该加:Recall 够好但精度差 → 加;Recall 本身低 → 先解决召回。
  8. 优化顺序:先 baseline → 先解决「能不能找到」→ 单变量 → 按成本收益排优先级(混合检索性价比第一)。
  9. 诊断三步法:查 top-K 分流 → Recall@K 量化 → 手动喂正确 chunk 验证生成侧;Recall@5 < 70% 优先修检索。
  10. 评估核心数字:Recall@5 < 70% 有问题;综合采用率 = (复制 + 点赞×2 − 点踩×2)/总数;评估 Token 为原问答 4-8 倍;分级评估 5%/20%/75%。
  11. 代码检索:检索单位 ≠ 返回单位;先过滤(版本/ACL)后召回;先 Child 排序再父级扩展;越权召回率必须为 0。
  12. Agentic RAG:解决「该不该查、查几次、查什么、不够怎么办」;单 Agent + 工具 + 状态机 + 证据检查已经是;先跑稳单 Agent;基础召回差别套 Agent。

附录 B · 复习建议