W3D7 学习手册 1.总览2.RAG流程3.Chunk/ES4.BM25vs向量5.Rerank 6.ACL7.文档更新8.评估检索9.无答案10.简历 11.投递12.坑达标①达标②自测速记

FDE W3D7 学习手册 · 第一轮模拟面试

W3 Day7 · A 级(综合模拟,面试冲刺)· 4h · 学完能流畅回答"RAG 全流程 + Chunk/ES/BM25/Rerank/ACL/更新/评估/拒答"全部核心问题,并完成简历 v1 与市场验证

本日定位:本周前 6 天学了采样/检索/生成/Query/评测/作品打磨,W3D7 是第一轮模拟面试——把零散知识点串成"被追问也不慌"的流畅表达,同时本周完成简历 v1 并开始少量市场验证投递。
学完能回答:① RAG 完整流程、Chunk 策略、为什么用 ES、BM25 vs 向量、为什么 Rerank、ACL、文档更新、检索评估、无答案处理、防越权;② 简历 v1 里作品一怎么写、市场验证投递怎么做。
使用方法:把每节当"面试口述稿"朗读一遍 → 重点看「面试话术」「易错点」→ 做自测清单 → 配合《FDE-W3D7-评测题.md》与《FDE面试备战手册》20 道模拟题。
参考资源:B站 Spring AI 第 57-77 集 RAG 全套 BV1GfyGBqEm6(Java 体系 RAG 实战);《FDE面试备战手册》20 道模拟题。

一、第一轮模拟面试总览:要串起来的是什么

第一轮面试(技术面)核心是把 RAG 全链路讲顺:从文档进来到答案出去,每个环节"为什么这么做、不这么做会怎样、生产怎么兜底"。本节把这周的知识点整合成一张"问题地图":

环节必会问题对应前面
文档/ChunkChunk 怎么切、为什么用 ES检索基础
检索BM25 vs 向量、为什么 Rerank检索基础
查询Query 优化、无答案拒答W3D4
生成/可靠引用准确、防越权 ACLW3D4/作品一
运维文档更新、检索评估评测/作品一
第一轮技术面 = 把 RAG 全链路讲顺:文档→Chunk→检索(BM25+向量+Rerank)→Query优化→生成(引用/拒答/ACL)→评估/更新。每个环节都要能答"为什么、不这样会怎样、生产怎么兜底"。
作为 Java+大数据背景候选人,被问"为什么用 ES"时,可以顺势展示你在搜索/索引/吞吐上的积累——这是你的差异化优势,要比纯算法背景的人讲得更"工程"。

二、RAG 完整流程(端到端口述稿)

文档 → 解析/切分(Chunk) → 双写索引(ES+向量) → 用户问 → Query优化 → 混合检索(BM25+向量) → Rerank → topK → LLM生成(引用/拒答/ACL) → 后校验 → 答案 + Trace
  1. 离线:文档解析 → 按策略切 Chunk → 写入 ES(BM25)与向量库(语义)两个索引。
  2. 在线:Query 优化 → 混合检索召回候选 → Rerank 重排 → 取 topK 作为 context。
  3. 生成:LLM 基于 context 生成,强制引用(chunk_id)、判定 should_refuse、过 ACL。
  4. 校验:引用校验、拒答校验、敏感/越权校验 → 落 Trace。
RAG 完整流程一句话:离线把文档切 Chunk 双写 ES+向量;在线做 Query 优化→混合检索→Rerank→取 topK→LLM 生成(带引用/拒答/ACL)→后校验→落 Trace。离线管"建库",在线管"问答"。
① 别把"检索"和"生成"混着讲,面试官常故意打断让你"只讲检索那段"——要能随时切块讲。② 口述时主动点出每个环节的降级(Rerank 挂了降级纯向量、Query 优化挂了降级原 query),显生产经验。③ 别忘了"离线"那半,很多人只讲在线,被问"文档怎么进来的"就卡。

三、Chunk 策略如何选 + 为什么用 ES

3.1 Chunk 策略

策略做法适用
固定长度按 token/字符数切,带 overlap通用、简单,overlap 防截断
语义切分按句子/段落/标题结构切结构化文档(条款、章节)
递归切分按分隔符逐级切(段落→句→词)长文档、保结构
父文档检索用小块召回、返回大块既要精准又要上下文完整

3.2 为什么用 ES(Elasticsearch)

Chunk 策略:固定长度(带 overlap)/语义/递归/父文档检索,按文档结构选;大小权衡碎 vs 噪。为什么用 ES:保险条款有精确编码,BM25 关键词命中极准,且 ES 成熟、Java 生态契合、可一套做混合检索。
用 ES 做混合检索底座,对 Java 背景是天然加分:你懂它的分片、索引、近实时刷新、并发模型,能讲"为什么 ES 比另起一个向量库更适合我们团队"。生产落地成本直接下降。
① Chunk 大小没有"标准答案",要结合评测调(不同大小看 Recall@K);别拍脑袋说"512 最好"。② 用 ES 不是"不用向量"——是"ES 承载 BM25 + 向量混合",纯 ES 也救不了语义召回,要讲清混合定位。③ 重叠太大→重复内容多、成本涨;太小→语义断,要平衡。

四、BM25 和向量检索差异

维度BM25(稀疏/关键词)向量检索(稠密/语义)
匹配方式词面精确匹配 + TF-IDF 加权语义向量相似度(近义/改写也能匹配)
优势精确术语、专有名词命中准;可解释语义泛化好;同义/措辞不同也能召回
劣势不理解语义;同义改写召回差精确编码易混淆;耗算力;黑盒
适用保险条款号、病名、金额等精确词口语化、多表述、跨表述语义
BM25 分数 = 词频(TF) × 逆文档频率(IDF) × 长度归一化 向量 = cosine(query_vec, doc_vec) 或 dot product
BM25 是关键词精确匹配(TF-IDF 加权),对保险条款号/病名等精确词极准、可解释;向量是语义相似,同义改写也能召回但易混淆精确编码、耗算力。两者互补,故用混合。
① 面试常问"只用向量不行吗"——答:纯向量在保险精确编码场景会把"相似条款"排前导致答错(呼应 W3D6 失败案例),BM25 补精确命中。② 别把 BM25 说成"过时"——它在精确匹配上仍是最强之一。③ 混合的"融合"方式(RRF/加权)也要能讲(见下节)。

五、为什么需要 Rerank

5.1 问题

混合检索召回的是"候选集"(BM25 一批 + 向量一批),各自分数量纲不同、不能直接比,且 top 结果里可能混着不相关的。需要一步统一精排

5.2 Rerank 做什么

为什么不直接用 Rerank 替代检索? 交叉编码器要对 query 和每个 doc 两两算,复杂度高,无法对全库亿级文档实时跑;所以"向量/BM25 粗排召回 topN → Rerank 精排 topK"是标准两段式。
Rerank 解决"混合召回候选量纲不一、需统一精排"。用 cross-encoder 对(query,chunk)算精细相关性,比双塔准但慢,故只排召回后的少量候选(粗排→精排两段式)。融合可用 RRF。
① "Rerank 一定提升"是误区——候选集质量太差时 Rerank 也救不了,要先保召回。② Rerank 增加延迟/成本,要权衡(只对 topN 重排、可降级)。③ 别把"Rerank 模型"和"embedding 模型"搞混:前者交互式精排,后者双塔召回。

六、如何实现 ACL、防止知识库越权

6.1 什么是 ACL(访问控制)

ACL = 控制"谁能看哪些文档"。保险知识库里,不同角色(投保人/代理人/内勤/合规)可见范围不同,且不能查他人的保单信息。

6.2 实现层次

做法
索引层文档打 role/document_scope 标签;检索时按角色过滤候选(metadata filter)
检索层召回后用 ACL 过滤器剔除越权 chunk(前置,越早拦越好)
生成层生成前校验问题是否涉及越权实体(如他人保单号);should_refuse 拦截
审计层记录谁查了什么、是否触发越权拦截(Trace)

6.3 防越权要点

ACL = 控制谁能看哪些文档。实现:索引层打 role 标签、检索层 metadata 过滤 + 前置拦截越权 chunk、生成层校验越权实体并拒答、审计层记 Trace。关键是"越早拦越好",并用 allowed_roles 越权 case 验拦截率。
保险场景越权 = 合规事故(泄露他人健康/保单信息)。ACL 不是"锦上添花"而是"上线前提"。在简历和面试里把它当一等公民讲,比讲花哨的 prompt 更显生产成熟度。
① 只在生成层"嘴上拒答"不够——必须检索前就过滤,否则越权 chunk 进了 context 模型可能无意泄露或借题发挥。② 过滤逻辑放 metadata filter,别靠模型自觉。③ 越权 case 必须进评测集,否则"号称防越权"无法证明。

七、如何处理文档更新

知识库(条款/目录)会迭代,文档更新要避免"脏数据"和"答案漂移"。

文档更新 = 版本化(document_version) + 增量索引(只更变更chunk) + 双写同步(ES与向量一致) + 旧chunk标记失效 + 更新后跑评测回归。避免脏数据和答案漂移。
① 只更新向量库忘更新 ES(或反之)→ 混合检索一边旧一边新,结果乱。必须双写原子同步。② 物理删除旧 chunk 会丢审计能力,应标记失效。③ 更新后不回归评测 → 悄悄退化,用户先发现。④ 并发更新要处理锁/队列,避免索引半更新状态。

八、如何评估检索

评估检索(呼应 W3D5)聚焦"召回对不对、排得好不好":

指标看什么怎么用
Hit Rate@K有没捞到相关快速看召回覆盖
Recall@K / Precision@K漏没漏 / 噪声多不多调 Chunk 大小、topK
MRR / nDCG@K排第几 / 排序质量看 Rerank 是否生效
分类型细分事实/多跳/拒答各子集定位短板环节
离线 vs 在线评估:离线用标注集(expected_chunk_ids)算上述指标;在线用 Trace 抽样 + 用户反馈(点赞/点踩)+ bad case 回流。两者互补,构成检索迭代闭环。
评估检索 = Hit/Recall/Precision 看覆盖与噪声,MRR/nDCG 看排序(验证 Rerank 生效),分类型细分定位短板。离线用标注集,在线用 Trace 抽样 + 用户反馈 + bad case 回流。

九、如何处理无答案(拒答)

知识库没有依据时,必须拒答而非硬编(详 W3D4/W3D5):

  1. 检索信号:topK 相关分全低于阈值 → 直接判无答案,不进生成。
  2. 字段约束:输出 should_refuse=true + 理由,prompt 明确"无依据就拒"。
  3. 置信兜底:生成后无引用来源 → 强制拒答。
  4. 给出口:说明缺什么信息、建议联系谁/查哪(如"未在知识库找到该城市异地细则,请联系保单客服")。
  5. 评测:should_refuse 子集测拒答精确率/召回率/F1。
无答案处理 = 检索分数阈值直接判无答案 + should_refuse 字段约束 + 无引用强制拒 + 给出口(缺什么/找谁)+ 评测拒答 P/R/F1。保险场景拒答不准比答错更危险,必须可测。

十、简历 v1 怎么写(作品一)

简历 v1:顶部摘要亮背景与作品定位;作品一用数字说话(Faithfulness/拒答/引用)+ 技术栈 + 量化价值;明确个人负责模块;其他挑 1~2 个大数据/Java 项目。每个数字口径要能当场解释。
36 岁候选人的简历策略:不讳言年龄,反而把"保险业务理解 + Java/大数据工程能力 + 能扛生产"做成差异化卖点——FDE 这类岗位恰恰需要"既懂业务又懂工程"的人,而非纯应届算法背景。

十一、市场验证投递怎么做

"市场验证"= 用真实投递检验简历与目标岗位的匹配度,而非空想。

市场验证 = 少量(5~10 个)真实投递检验匹配度:分层(标杆+保底)、回收面试反馈补薄弱点、迭代简历、优先内推。目的是"用市场反馈倒逼学习",不是海投碰运气。
① 市场验证是"少量、有回收",不是海投 200 份——前者给你信号,后者只给你焦虑。② 投了不复盘等于白投,必须记录"被问住的点"回补。③ 别因几封拒信否定自己,FDE 岗位少而精,反馈周期长,看趋势不看单次。

十二、模拟面试常见坑

十三、面试达标线①:流畅回答全部 RAG 面试问题

以下问题要能不打磕巴、有结构、带权衡、点降级地回答:

问题核心答点
RAG 完整流程离线建库 + 在线问答,每环节降级点
Chunk 策略怎么选固定/语义/递归/父文档;大小权衡+overlap;结合评测
为什么用 ESBM25 精确命中保险编码;成熟;Java 生态;混合底座
BM25 vs 向量精确匹配 vs 语义;互补 → 混合
为什么 Rerank混合候选量纲不一需精排;粗排→精排两段式
如何实现 ACL索引打标签+检索前过滤+生成校验+审计;越权 case 验
文档更新版本化+增量+双写同步+失效+回归
评估检索Hit/Recall/Precision/MRR/nDCG + 分类型 + 在线 Trace
无答案处理阈值+should_refuse+给出口+评测 P/R/F1
防越权检索前过滤 + 最小权限 + 评测拦截率 100%
达标线① = 上述 10 类问题每个都能"结构化 + 带权衡 + 点降级"答出。关键不是背结论,而是讲清"为什么、不这样会怎样、生产怎么兜底"——这就是区分候选人与背题者的分水岭。

十四、面试达标线②:简历 v1 + 市场验证

14.1 简历 v1 里作品一怎么写

一句话成果(量化) + 技术栈(ES+向量混合/Rerank/Query优化/引用/ACL/评测) + 量化价值(误答降X%/成本降Y%) + 明确负责模块

14.2 市场验证投递怎么做

达标线② = 简历 v1 用数字讲作品一、口径可深挖、突出差异化;市场验证少量分层投放+回收反馈+迭代,用市场信号倒逼学习。两者都体现"工程闭环思维"。

十五、W3D7 自测清单

十六、高频面试题速记卡

Q:RAG 完整流程一句话?
离线把文档切 Chunk 双写 ES+向量;在线 Query优化→混合检索→Rerank→取topK→LLM生成(引用/拒答/ACL)→后校验→落Trace。
Q:Chunk 怎么切?
固定长度(带overlap)/语义/递归/父文档检索,按文档结构选;大小权衡"碎 vs 噪",结合评测调,保险常用 512~1024 token+重叠。
Q:为什么用 ES 而不是纯向量?
保险条款有精确编码,BM25 关键词命中极准,纯向量易混淆相似条款;ES 成熟、Java 生态契合、可一套做混合检索。
Q:BM25 和向量检索区别?
BM25 关键词精确匹配(TF-IDF),精确词准、可解释;向量语义相似,同义改写也能召回但易混淆编码、耗算力。互补→混合。
Q:为什么需要 Rerank?
混合召回候选量纲不一需统一精排。cross-encoder 对(query,chunk)交互计算更准但慢,故只排召回后的少量候选(粗排→精排)。
Q:Rerank 和 embedding 模型什么关系?
embedding 是双塔召回(快但粗),Rerank 是交互式精排(准但慢)。先 embedding 粗排召回,再 Rerank 精排 topK。
Q:怎么实现 ACL 防越权?
索引打role标签→检索前metadata过滤+前置拦截越权chunk→生成层校验越权实体并拒答→审计记Trace。越早拦越好,越权case验拦截率。
Q:文档更新要注意什么?
版本化(document_version)+增量索引+双写同步(ES与向量一致)+旧chunk标记失效+更新后跑评测回归。防脏数据和答案漂移。
Q:怎么评估检索?
Hit/Recall/Precision看覆盖与噪声,MRR/nDCG看排序(验Rerank),分类型细分定位短板;离线标注集+在线Trace抽样+用户反馈。
Q:无答案怎么处理?
检索分数阈值直接判无答案+should_refuse字段约束+无引用强制拒+给出口(缺什么/找谁)+评测拒答P/R/F1。
FDE W3D7 学习手册 · 第一轮模拟面试(面试级)· 配合《FDE-W3D7-评测题.md》与《FDE面试备战手册》20 道模拟题
📌 待查★ 重要