RAG 类项目拷打追问链
结构:三段(卡动机 → 要基线与过程 → 压今天还会不会这么做)
第一段 · 卡动机
拷问 1这个项目当时不做会怎么样?谁在为它的效果负责?
期望要点:说得出具体的痛点和责任人——每天多少人工咨询、平均处理多久、谁在被这件事拖住。做过的人会有数字,没做过的人只有形容词。
判别信号:能说出「上线后客服的电话量降了多少」这类业务侧变化的,是真交付过;只说「提升了效率」的,往下压一层通常就空。
分叉:说不出痛点 → 直接跳到第三段,快速确认是不是练手项目,别浪费时间;说得出痛点 → 进拷问 2。
拷问 2为什么用 RAG?当时有没有考虑过长上下文直接塞、或者微调?
期望要点:能给判据而不是给结论。合格的判据:知识会更新(微调会过期)、要引用溯源(长上下文塞不出可靠引用)、文档量远超窗口、成本按调用量算不划算。加分:主动说出「如果文档只有几十页且不常变,我当时就该直接塞进上下文,RAG 是过度设计」。
判别信号:能说出反向条件的人,是自己做过选型的;答「RAG 是行业标准做法」的,是跟风。
分叉:提到「不知道→RAG、不会做→提档位/SFT、太贵太慢→蒸馏」这条决策线的,可以跳过一部分基础追问,直接进第二段的深水区。
第二段 · 要基线与过程
拷问 3最土的方案(切块 + 向量检索 + 混合 + 重排)当时能到多少?你是怎么测出来的?
期望要点:必须有一个基线数字,哪怕是粗测。以及测的方法:评测集从哪来(真实问题 vs 编的)、多少条、谁标的、召回率和答对率分别怎么算。
判别信号:这一问是整条链的主分水岭。没有基线的人,后面所有「提升」都无法验证;有基线的人,一般也能说清评测集怎么来的。答「我们没做评测,是业务反馈还行」的,直接把分数压到及格线以下,但要给他机会——追问「那你怎么知道改动是有效的」。
分叉:报了一个提升幅度(比如「提升了 20%」)→ 立刻追基线是多少、样本多少、置信区间(n=100、基线 80% 时 95% 置信区间约 ±7.8 个百分点,涨三个点说明不了任何事)。
拷问 4分块粒度是怎么定下来的?试过哪些、为什么最后是这个?
期望要点:说得出试过什么、怎么比的。合格的回答会提到:固定长度切会切断语义(尤其是条件句和表格)、按标题层级或语义切、重叠窗口解决什么、以及分块大小和召回数是一起调的——块小就要多召回。
判别信号:报一个具体数字并说「行业推荐值」的,是抄的;能说「我们的文档结构决定了按二级标题切最合适,但表格要单独处理」的,是自己调过。
分叉:提到脏文档(扫描件、表格、图纸)→ 追解析流水线怎么做、OCR 错误怎么发现(这类错误是静默的)。
拷问 5检索是单路还是混合?分数怎么融合的?重排加了吗,加了之后提升多少?
期望要点:能说清为什么纯向量会漏召回(标识符、专有名词、精确匹配类查询天生适合关键词检索),以及融合方式——如果用了倒数排名融合,要能说出它为什么被广泛采用(不需要分数归一化,跨系统可比)。重排要能给出加之前和加之后的对比数字。
判别信号:能指出「分数不可跨模型比较,换 embedding 模型阈值要重扫」的,是踩过坑的。
分叉:说用了 GraphRAG 或 Agentic RAG → 追索引成本翻了几倍、多跳查询占比多少。这类技术的代价很实在,用了却说不出代价的,大概率是照抄方案。
拷问 6讲一个你处理过的最难的 badcase,从发现到定位到修好。
期望要点:完整的归因链。合格的回答会用固定住一个变量,把问题一分为二:把正确文档手动塞进 prompt——答对了就是检索侧,还答错就是生成侧。然后继续二分:检索侧看「没召回」还是「排序靠后」;生成侧看「没看见」还是「看见了没用」。
判别信号:第一动作是「调 prompt」的,没有归因方法;第一动作是「手动塞文档」的,方法是对的。能说出「最后发现是解析环节把表格拆散了」这类根因在上游的,几乎一定是真做过。
分叉:讲不出 badcase → 追「那你们上线后收到过什么反馈」,如果连反馈都说不出,这个项目大概率没真正上线。
拷问 7上线后效果怎么量化的?和什么比?
期望要点:和现状比,不和理想比。合格的做法:把原有流程作为对照组,用同一批真实问题跑对比,指标用首次解决率、平均处理时长、转人工率这类业务侧指标。加分:主动说零成本信号(重问率、引用点击率、转人工率)比 judge 打分更早也更便宜。
判别信号:只报离线准确率的,没上过线;能说「离线分很高但上线掉了,后来发现线上问题分布和评测集不一样」的,是真经历过。
第三段 · 压「今天还会不会这么做」
拷问 8这套东西放到今天,你还会这么做吗?哪一步会变?
期望要点:这一问考的是知识有没有停在做项目那一年。合格的回答会点到 2026 年真实的选择变化:长上下文变便宜之后哪些场景不再需要 RAG、检索侧要不要上 Agentic、模型侧「答得浅要提 effort 档位而不是加提示词」。同时要能说反向:哪一步他今天仍然会一模一样地做,为什么。
判别信号:全盘推翻自己当年做法的人,往往是在迎合;能说「检索那套我今天还会一样做,但评测我会从第一天就建」的,判断力更可信。
拷问 9如果文档量涨十倍、用户涨一百倍,先崩的是哪一层?
期望要点:能分层回答——生成侧通常最先出问题(容量约束在显存与有效吞吐)、检索侧是库变大召回质量下降(同样的 top-k 噪声变多,要提召回并加强重排)、数据侧是增量更新从「凌晨重建」变成不可行。加分:指出评测集会失效,因为长尾变长、线上分布变了。
拷问 10这个项目最大的遗憾是什么?
期望要点:这是一道诚实度题。好的回答是具体的、有代价的,比如「评测集建晚了,前三个月的所有改动都无法判断有效性」。没有遗憾的项目,通常是没做过的项目。
这份模板怎么用
候选人简历上写了「基于 RAG 的知识库问答」「智能客服」「文档助手」这类项目,就走这条链。
它是模拟面试引擎「简历深挖阶段」的弹药,不是知识点问答——每一问的目的都是判断这个项目是他做的,还是他看着别人做的。用法上有三条纪律:
- 按段推进,不要跳段。 动机段没过就往下问细节,候选人会用技术名词把你带走。
- 每问都留分叉。 答什么决定下一问问什么,模板里的「分叉」列就是路标。
- 允许答「不知道」。 承认没做过某一块的候选人,比在那一块上编的候选人分数高。
三段结构总览
第一段 卡动机 ── 为什么是 RAG?当时不做会怎样? → 挡「跟风做的」 第二段 要基线与过程 ── 基线多少?每一步怎么定的? → 挡「参与过但没决策过」 第三段 压今天 ── 换成今天你还会这么做吗? → 挡「知识停在做项目那一年」
三段的强度是递增的:第一段答砸就可以提前结束,第二段决定基础分,第三段决定他是不是还在成长。
分叉路径速查
| 候选人说 | 立刻追什么 |
|---|---|
| 「用了 RRF 融合」 | 为什么不做分数归一化加权?换了 embedding 模型阈值要不要重调? |
| 「上了 GraphRAG」 | 索引成本翻了几倍?多跳查询实际占比多少?不做图能到多少? |
| 「上了 Agentic RAG」 | 平均查几轮?成本涨了多少?哪类查询真的需要多轮? |
| 「效果提升了 X%」 | 基线多少?样本多少条?置信区间多宽? |
| 「用了 RAGAS 之类的框架」 | 它评的是什么?faithfulness 和 answer relevancy 差在哪?judge 校准过吗? |
| 「做了引用溯源」 | 引用精确到文档还是到句?怎么防「标了引用却胡编」? |
| 「知识库每天更新」 | 增量索引怎么做?删除文档怎么处理?缓存怎么失效? |
| 「多部门权限不同」 | 过滤前置还是后置?过滤后召回数调了吗?缓存分桶了吗? |
排障分支:固定住一个变量,把问题一分为二
RAG 项目的所有排障追问,都统一到这一句。本项目已有五个形态,追问时按场景挑一个:
固定「文档」 → 切开 检索侧 / 生成侧 (答非所问的第一刀) 固定「输入」 → 切开 流量侧 / 系统侧 (金丝雀集,线上突然变差) 固定「模型段」 → 切开 模型侧 / 链路侧 (延迟变高) 固定「token 类别」 → 切开 输入侧 / 输出侧 (成本变高) 固定「变更集」 → 切开 变更侧 / 环境侧 (上线后出事故)
危险信号清单
出现下列任意两条,基本可以判定「项目是贴上去的」:
- 说不出文档量级、更新频率、日均调用量任意一个数字
- 没有基线,也没有评测集,效果全靠「业务反馈还不错」
- 报了提升幅度,但答不出基线和样本量
- 讲不出任何一个具体 badcase
- 分块大小、召回数、重排数量都是「按推荐值配的」
- 排障第一动作永远是「调 prompt」
- 用了 GraphRAG / Agentic RAG,却说不出它们的代价
- 上线部分完全没提监控和回滚
- 被问「今天还会不会这么做」时全盘推翻,或者一个字不改
判分档位
| 档位 | 画像 |
|---|---|
| 60 分 | 链路讲得完整、术语用得对,但没有基线、没有评测、说不出 badcase。参与过,没决策过。 |
| 75 分 | 有基线有评测集,能讲清至少一次归因完整的 badcase,分块与检索的参数说得出理由。主导过一次落地。 |
| 90 分 | 上面全有,且:报数字时主动给样本量和置信区间;能说出所用技术的代价与不该用的场景;被问「今天还会不会这么做」时既有改也有不改,理由都站得住。做过,且还在更新自己的判断。 |