分类:RAG / 检索系统 / 混合检索 / Rerank / 面试准备
这篇文章在讲什么
这篇本质上是在拆一个 RAG 检索链路的工程实现,重点不是讲概念,而是讲:
一个 retrieval 函数从接到 query,到返回最终结果,中间到底做了哪些步骤。
对应的面试场景也很典型:
- 你会讲混合检索
- 你知道 rerank
- 你知道 embedding
- 但一旦问到代码流程、输入输出、性能优化,就容易露馅
核心主线
文章强调,面试分两层:
- 知道概念比如知道向量检索、BM25、RRF、Cross-Encoder rerank
- 真的做过工程实现比如你能不能把 retrieval 流程拆开讲清楚:
- 哪些步骤串行,哪些并行
- 检索结果怎么融合
- rerank 排多少条
- 性能怎么控
- 每一步输入输出是什么
后者才是面试官真正想追问的地方。
retrieval 函数的典型流程
按文章里的结构,可以概括成这几步:
- 构建检索请求
- 输入:query、知识库 ID、阈值、分页参数等
- 输出:统一请求对象
- 执行混合检索
- 向量检索 + BM25 同时跑
- 再做结果融合
- 结果融合
- 文中点名会被问到
RRF或加权求和 - 重点不是背名词,而是能解释为什么这么合并
- 文中点名会被问到
- Rerank 精排
- 对候选结果进一步排序
- 面试里会被追问:是不是所有结果都 rerank?Top 100 全部过 Cross-Encoder 会不会太慢?
- 返回最终 TopK
- 输出最相关文档片段
- 通常还会带分数、来源等元信息
这篇对你的价值
如果你是做面试准备
这篇的价值很高,因为它不是泛泛聊“RAG 架构”,而是在补 工程细节表达能力。
你后面讲项目时,最好别只说:
- 我用了混合检索
- 我加了 rerank
- 我优化了召回
而要能继续展开:
- 检索请求对象长什么样
- embedding 检索和 BM25 是怎么组织的
- 融合算法为什么这么选
- rerank 的候选集怎么截断
- 线上延迟怎么控
如果你是做项目实现
它提醒你:
RAG 里最容易被说得轻描淡写的地方,恰恰是最该落到代码实现的地方。
比如:
- top_k 怎么设
- threshold 怎么设
- RRF 的 k 为什么这么取
- rerank 截断到多少条
- 哪一步该并行
- 哪一步该缓存
这些都是“会不会做”的分水岭。
你可以怎么吸收
面试表达模板
你可以把这类项目讲成:
- 首先构建统一 retrieval request
- 然后并行执行向量检索和关键词检索
- 再用 RRF 融合多路结果
- 融合后只取前 N 条做 rerank,避免 Cross-Encoder 全量精排带来的高延迟
- 最后返回 TopK 文档片段及相关元信息
这样一讲,就明显比“我用了混合检索和 rerank”更像真的做过。
适合归到哪个方向
我会把它归到:
- RAG 工程实现
- 检索系统细节
- 面试追问素材
不是偏论文理论,更偏工程表达与项目答辩。
后续可继续补的东西
如果你要,我下一步还能继续补两种内容:
- 面试背诵版:整理成 1~2 分钟能直接讲的口语化答案
- 流程图版:画一张 retrieval 从 query 到 topK 返回的流程图