RAG 与 BGE-M3:精简面试八股与标准答案
面向 AI Agent / 大模型算法岗。RAG 为重点,BGE-M3 掌握核心原理与选型。 共 18 题。每题包含面试口述版与追问要点。项目题以“多阶段文档处理、分块、知识图谱、复查”为背景;不预设实际项目已经使用 BGE-M3 或完整 RAG。
复习顺序
- P0 必背(1–12):RAG 全流程、Embedding、Chunking、混合检索、Rerank、幻觉、评测,以及 BGE-M3 三种检索模式。
- P1 重点(13–16):检索调参、长文档、BGE-M3 与 BM25/Reranker 区别、性能优化。
- 项目追问(17–18):文档 Workflow 如何接入 RAG;为什么选择 BGE-M3(条件式选型回答)。
一、RAG 核心(P0)
1. 什么是 RAG?为什么需要它?
面试口述版: RAG(Retrieval-Augmented Generation,检索增强生成)是在回答问题前,从外部知识库检索相关证据,把证据和问题一起输入大模型生成答案。它能引入可更新的私有或新知识,改善知识密集型问题的事实依据,也便于提供引用;但不能保证完全消除幻觉。
追问: RAG 不等于训练模型,更不等于只做向量搜索;它把检索与生成连接起来。
2. 请描述一个完整的 RAG 流程。
面试口述版: 离线阶段:加载文档 → 解析/清洗 → 分块 → Embedding → 建立向量或倒排索引,并保存元数据。在线阶段:用户问题 → Query 预处理/向量化 → Top-K 召回 → 可选的混合检索和 Rerank → 构造带来源的上下文 → LLM 生成 → 返回答案及引用。
追问: 离线建库与在线查询分开;权限过滤、去重和上下文压缩可穿插在检索阶段。
3. RAG 与微调(Fine-tuning)有什么区别?
面试口述版: RAG 主要解决“模型此刻需要哪些外部知识”,不必修改权重即可更新知识;微调改变模型参数,更适合优化行为模式、格式、领域表达或特定能力。两者可以组合,但都不应被视为万能方案。
追问: 高频变动、要求溯源的文档知识通常优先考虑 RAG。
4. 什么是 Embedding?向量检索如何工作?
面试口述版: Embedding 把文本映射为向量,使语义相关的文本在向量空间中相对接近。分别编码问题与 Chunk,使用余弦相似度或内积检索近邻;规模较大时使用 ANN(近似最近邻)索引加速。
公式: cos(q,d) = (q·d) / (||q|| ||d||)。
追问: 向量相似不等于事实相关或答案正确;相似度分数跨模型一般不能直接比较。
5. 为什么要 Chunking?Chunk 太大或太小有什么问题?
面试口述版: 分块让检索结果更聚焦并适应模型上下文窗口。太小会切断语义、丢失跨段落依赖;太大则掺杂无关信息、降低检索精度并增加上下文成本。应按标题/段落/语义边界分块,结合任务确定长度和重叠。
追问: Overlap 不是越大越好,会增加索引冗余和重复召回;保留标题、章节、页码、文档 ID 有助溯源。
6. Top-K 是什么?K 越大越好吗?
面试口述版: Top-K 是检索返回分数最高的 K 条候选。K 太小容易漏掉证据,太大会带入噪声、提高延迟和 Token 成本。通常先较宽地召回,再通过 Rerank 选更少的证据进入生成上下文。
追问: 召回 K 与最终送入 LLM 的数量 K’ 可以不同。
7. Dense、Sparse 和 Hybrid Retrieval 有什么区别?
面试口述版: Dense 用稠密向量匹配语义,适合表达不同但意思相近的查询;Sparse 根据词项及权重匹配,更擅长精确术语、编号、实体;Hybrid 融合两者互补,提高召回覆盖。融合方式包括归一化加权和 RRF 等。
追问: “Sparse = BM25”并不严格成立;BM25 是传统稀疏词项匹配,BGE-M3 也能学习稀疏词权重。
8. 召回(Retrieval)和重排(Rerank)有什么区别?
面试口述版: 召回快速从大规模文档中找到候选,优先保证相关证据不被漏掉;重排对小规模候选做更精细的 query-document 相关性评估,通常用 Cross-Encoder 或其他重排模型提升前排精度,但成本更高。
追问: BGE-M3 的 Dense/Sparse/Multi-vector 输出并不等于单独的 BGE Reranker Cross-Encoder;二者不是一回事。
9. RAG 出现幻觉的原因有哪些?如何缓解?
面试口述版: 可能是检索不到正确证据、检索到不相关或过时材料、分块丢失上下文,或模型即使有证据也生成了不被支持的内容。应分层治理:提升解析质量与召回、重排与去重、引用证据约束、缺证据时拒答、独立评估答案忠实性。
追问: 要把“Retrieval failure”与“Generation failure”区分开。
10. RAG 应该怎么评估?
面试口述版: 分为检索层和生成层。检索层看 Recall@K、Hit@K、MRR、nDCG;生成层看正确率、Faithfulness/Groundedness、引用准确性和拒答能力;线上还看响应延迟、成本和用户反馈。需要带标准答案或相关文档标注的数据集。
追问: 只看最终 LLM 答案可能掩盖检索问题;只有召回率高也不代表最终回答正确。
11. RAG 中的 Query Rewrite / Multi-query 有什么作用?
面试口述版: 用户原始问题可能有省略、歧义或同义表达。Query Rewrite 通过补足上下文和规范术语改善检索;Multi-query 生成多个查询变体扩大覆盖,再合并去重。代价是额外模型调用、延迟及查询漂移风险。
12. 如果知识库没有相关信息,RAG 应该怎么办?
面试口述版: 应设置检索置信度和答案支持度检查,无法找到可靠证据时明确说明依据不足,必要时请求补充信息,而不是凭模型记忆强行编造;注意相似度阈值需要用验证集校准。
二、BGE-M3 核心(P0)
13. BGE-M3 是什么?M3 指什么?
面试口述版: BGE-M3 是 BAAI 发布的多语言文本表示与检索模型。M3 指 Multi-Functionality(多功能)、Multi-Linguality(多语言)、Multi-Granularity(多粒度)。它支持 Dense、Sparse、Multi-vector 三种检索模式,支持超过 100 种语言,最长输入 8192 tokens;稠密向量维度为 1024。它主要负责表征和检索,不是负责生成答案的 LLM。
14. BGE-M3 的三种检索模式分别是什么?
面试口述版: Dense 将一段文本压缩为一个向量,做整体语义匹配;Sparse 为词项学习权重,做词项层面的稀疏匹配;Multi-vector 类 ColBERT 为文本保留多个 Token 表征,再通过细粒度匹配(如 MaxSim)计算相关性。Dense 简洁高效,Sparse 擅长精确词项,Multi-vector 更精细但通常更耗存储与计算。
简化公式: Dense: s_dense(q,d)=v_q·v_d;Sparse: s_sparse(q,d)=Σ_{t∈q∩d}w_q(t)w_d(t);Multi-vector: s_mv(q,d)=Σ_i max_j (q_i·d_j)。具体实现有归一化和细节差异。
15. BGE-M3 和传统 BM25 有什么区别?
面试口述版: BM25 主要根据词频、逆文档频率和文档长度进行词项匹配,不依赖神经网络语义编码;BGE-M3 是训练得到的神经检索模型,除了稠密和多向量检索,还能生成学习式稀疏词权重。对精确编号可以考虑稀疏检索,对语义变体考虑 Dense,并通过 Hybrid 融合,而不是笼统地认为 BGE-M3 必然全面胜过 BM25。
16. 用了 BGE-M3,还需要 Reranker 吗?
面试口述版: 视效果和延迟要求而定。BGE-M3 已能在多种检索模式下打分,但当召回候选较多且需要更高的 Top-N 精度时,单独的 Cross-Encoder Reranker 仍有价值。推荐通过消融实验比较 Dense-only、Hybrid、Hybrid+Rerank,而不是默认“必须上”。
三、项目追问(P0)
17. 你的多阶段文档处理 Workflow 如果要引入 RAG,会怎么设计?
面试口述版: 我会保持既有的文档识别与解析、分块、知识图谱构建、复查流程,把解析和分块后的 Chunk 增加 Embedding 和索引构建步骤,保留文档 ID、章节、页码和 Chunk ID;在线问题先检索证据,再可选重排,将证据与来源送给 LLM 回答。知识图谱可以作为补充的关系检索来源,但不必替代文本检索。质量检查要拆成“分块是否完整、检索证据是否正确、回答是否被证据支持”三个层次。
注意: 这是扩展设计的回答。若实际项目只是构图和核查,不要说成已上线了完整 RAG。
18. 如果面试官问“为什么选 BGE-M3,而不是普通 Embedding 模型?”
面试口述版(选型假设): 如果业务需要多语言文档、语义检索与关键词精准匹配并存、且 Chunk 长度差异较大,我会考虑 BGE-M3,因为它统一支持 Dense、Sparse 和 Multi-vector,方便做混合检索,并支持较长输入。但我不会仅凭模型名字决定选型,而是对比实际数据上的 Recall@K / nDCG、延迟、显存、索引大小及效果收益。如果业务只有简单短文本中文语义检索,轻量模型可能性价比更高。
如果实际没有使用: “我了解 BGE-M3,暂时把它视为候选 Embedding 模型,尚未在该项目做正式对比实验。”
六个最容易被问的区分点
| 概念 | 一句话区分 |
|---|---|
| RAG vs Fine-tuning | 外部知识注入 vs 修改参数行为 |
| Chunking vs Embedding | 切分检索单元 vs 生成文本表征 |
| Dense vs Sparse | 语义向量匹配 vs 词项权重匹配 |
| Recall vs Rerank | 大范围快速找候选 vs 小范围精细排序 |
| BGE-M3 vs BGE Reranker | 多功能检索编码器 vs 常用的独立精排模型 |
| Workflow vs RAG | 执行流程编排方式 vs 检索增强生成方案;两者可组合 |
推荐原始资料
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020): https://arxiv.org/abs/2005.11401
- BGE-M3 官方文档:https://bge-model.com/bge/bge_m3
- BGE / FlagEmbedding 官方使用说明:https://github.com/FlagOpen/FlagEmbedding/blob/master/docs/source/bge/bge_m3.rst
- BAAI 智源对 BGE-M3 的介绍:https://hub.baai.ac.cn/view/34816
说明:此清单依据公开论文与官方技术资料归纳为大模型算法岗常见知识点题型,不虚构具体公司的原题出处。