尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
27届大模型岗面试准备(十二):RAG 从原理到落地——分块、向量检索、重排与评估的完整链路
27届大模型岗面试准备十二RAG 从原理到落地——分块、向量检索、重排与评估的完整链路如果只允许我给 27 届候选人押一个必考且必须答好的工程题我会押 RAG。原因很简单它是目前大模型落地渗透率最高的架构几乎每个做大模型应用的团队都绕不开同时它链路长、环节多面试官可以从任何一环切入追问非常适合区分背过概念和真做过系统的人。这一篇把 RAG 的完整链路拆开讲为什么需要 RAG、每个环节的技术选型与坑、可运行的向量检索代码以及面试官最爱追问的评估问题。一、RAG 解决什么问题三个无法绕过的痛点大模型有三个结构性缺陷且都无法靠训练一个更大的模型解决知识截止训练数据有截止日期模型不知道昨天发生了什么私有知识缺失企业内部文档、个人笔记从未出现在训练语料里幻觉模型在不知道的时候依然会流畅地编造。三条路线的对比是面试第一问的标准素材方案知识更新成本私有知识幻觉抑制可溯源适用场景继续预训练/SFT极高重新训练可注入但易遗忘弱否领域风格与能力迁移长上下文塞文档低可以中勉强文档量小几十页内RAG低更新索引即可原生支持强有据可依是附引用文档量大、更新频繁要点是微调改变的是模型的行为方式RAG 改变的是模型的信息环境——想教模型怎么说话用微调想让模型知道新东西用 RAG。答到这一层比背RAG 是检索增强生成的缩写高出一截。二、离线链路文档进库前的三道工序2.1 解析与清洗PDF 表格错乱、双栏 PDF 阅读顺序错误、HTML 标签噪声——真实项目里 60% 的效果问题源自解析质量而非模型。面试聊到这里可以主动提一句我们发现脏数据进库后后面每一环都在为它买单非常加分。2.2 分块Chunking分块是 RAG 里性价比最高的调优点。核心矛盾块太小则语义不完整块太大则检索精度下降且挤占上下文窗口。分块策略做法优点缺点固定长度每 N 字符/token 一切简单可控粗暴切断语义递归字符分块按段落→句子→字符逐级回退尊重自然边界工程默认选择对结构化文档不敏感结构感知分块按标题/章节/表格切语义完整依赖解析质量语义分块按相邻句向量相似度突变点切语义最连贯计算成本高父子分块检索用小块返回父块大上下文兼顾精度与完整性索引结构复杂经验参数中文技术文档 256–512 token 一块、10–20% 重叠是常见起点。但更重要的答法是分块参数没有万能值必须配合评估集调——这句话直接把话题引向你熟悉的评估环节。2.3 向量化与索引Embedding 模型选型看 MTEB/C-MTEB 榜单中文常用 BGE 系列但要注意榜单任务与自己场景的匹配度。索引层面百万级以下向量用 HNSW 图索引基本是默认解十亿级才需要考虑 IVF-PQ 这类量化压缩索引。一个高频追问为什么生产系统几乎都用近似最近邻ANN而不是精确检索因为精确检索是 O(N) 的暴力扫描百万向量、768 维时单查询要几百毫秒到秒级HNSW 用多层跳表式的图结构把复杂度降到近似 O(logN)以 1–2 个点的召回率损失换两个数量级的速度。三、在线链路从 query 到答案完整流程是query 改写 → 混合检索 → 重排 → 组装 prompt → 生成。逐环说要点query 改写用户的口语化问题往往不适合直接检索。常用手段有同义改写、子问题分解、HyDE让模型先生成一段假设性答案再拿去检索——因为答案和答案更相似。混合检索向量检索抓语义BM25 抓精确关键词型号、报错码、人名。两路结果用 RRFReciprocal Rank Fusion融合公式简单到可以现场手写每个文档得分 Σ 1/(k rank_i)k 常取 60。重排Rerank双塔 embedding 为了速度牺牲了精度query 和文档独立编码交互信息丢失cross-encoder 重排器把 query 和文档拼在一起过模型精度显著更高但只能对 top 几十条做。粗排求快、精排求准的两段式漏斗——这个和推荐系统一样的架构直觉是面试官判断你有没有工程 sense 的信号。生成prompt 里明确要求仅基于以下资料回答资料不足时明确说不知道并标注引用来源这是幻觉抑制在 prompt 层的最后一道闸。四、可运行代码迷你向量检索 RRF 融合下面用纯 NumPy 实现一个可运行的最小检索管线TF-IDF 风格词向量 余弦相似度 BM25 简化版 RRF 融合不依赖任何外部服务帮你把检索到底在算什么焊在肌肉记忆里import numpy as np from collections import Counter docs [ RAG 通过检索外部知识库来增强大模型的回答质量, 向量数据库使用 HNSW 索引加速近似最近邻检索, BM25 是基于词频和逆文档频率的经典检索算法, 知识蒸馏用教师模型的软标签训练学生模型, 重排序模型使用 cross-encoder 提升检索精度, ] def tokenize(text): # 简化按字切分生产中文场景应使用 jieba 或模型 tokenizer return [c for c in text if c.strip() and not c.isascii()] \ [w.lower() for w in .join(c if c.isascii() else for c in text).split()] # ---- 构建词表与 TF-IDF 向量 ---- tokenized [tokenize(d) for d in docs] vocab {t: i for i, t in enumerate(sorted(set(t for d in tokenized for t in d)))} N, V len(docs), len(vocab) df Counter(t for d in tokenized for t in set(d)) idf np.zeros(V) for t, i in vocab.items(): idf[i] np.log((N 1) / (df[t] 1)) 1 def embed(tokens): vec np.zeros(V) for t, c in Counter(tokens).items(): if t in vocab: vec[vocab[t]] c * idf[vocab[t]] n np.linalg.norm(vec) return vec / n if n 0 else vec doc_vecs np.stack([embed(t) for t in tokenized]) def vector_search(query, topk3): scores doc_vecs embed(tokenize(query)) # 余弦相似度已归一化 order np.argsort(-scores)[:topk] return [(int(i), float(scores[i])) for i in order] def bm25_search(query, topk3, k11.5, b0.75): q_tokens, avgdl tokenize(query), np.mean([len(t) for t in tokenized]) scores [] for idx, d in enumerate(tokenized): tf, dl, s Counter(d), len(d), 0.0 for t in q_tokens: if t in tf: s idf[vocab[t]] * tf[t] * (k1 1) / ( tf[t] k1 * (1 - b b * dl / avgdl)) scores.append(s) order np.argsort(-np.array(scores))[:topk] return [(int(i), float(scores[i])) for i in order] def rrf_fuse(rank_lists, k60, topk3): scores Counter() for ranks in rank_lists: for r, (doc_id, _) in enumerate(ranks): scores[doc_id] 1.0 / (k r 1) return scores.most_common(topk) query 如何加速向量检索 v, b25 vector_search(query), bm25_search(query) print(向量检索:, [(i, f{s:.3f}) for i, s in v]) print(BM25 :, [(i, f{s:.3f}) for i, s in b25]) print(RRF 融合:, rrf_fuse([v, b25])) for doc_id, score in rrf_fuse([v, b25]): print(f [{score:.4f}] {docs[doc_id]})这段代码浓缩了在线链路的三个核心算子向量相似度、BM25、RRF。面试被要求手写一个简单检索时能写出归一化后点积即余弦、IDF 平滑、RRF 的 1/(krank) 这几个细节就稳了。五、评估没有评估的 RAG 调优是玄学面试官几乎必问你的 RAG 效果怎么量化。分两层回答检索层RecallK正确文档是否进了 top-K、MRR正确文档排多高。做法是构造 query→golden 文档对的评估集几百条就能指导迭代。生成层三个经典维度——忠实度答案是否忠于检索内容测幻觉、答案相关性是否回答了问题、上下文相关性检索内容与问题是否相关。RAGAS 等框架用 LLM-as-a-Judge 自动打分。有了分层评估定位问题就有了决策树忠实度低 → 查 prompt 约束与生成模型检索 Recall 低 → 查分块与 embeddingRecall 高但答案差 → 查重排与上下文组装。先定位是检索问题还是生成问题这句话是 RAG 排障的总纲。六、答题框架与延伸推荐的作答结构三痛点起手 → 微调 vs RAG 边界 → 离线三工序解析/分块/索引→ 在线四环改写/混合检索/重排/生成→ 分层评估收尾。全程贯穿漏斗和先定位再优化两个工程直觉。延伸考点预告当检索一次不够、需要模型自主决定查不查、查几轮时RAG 就升级成了 Agentic RAGB10 已详细拆过而支撑这类系统上线的评估体系正是今天 B 系列第十一篇的主题。下一篇 A13 讲长上下文与上下文工程当模型窗口从 4K 卷到 1MRAG 会被取代吗答案比多数人想的更微妙。
RELATED

相关推荐

Tauri与Qt在IM开发中的实战对比与选型指南

Tauri与Qt在IM开发中的实战对比与选型指南

1. IM客户端开发的技术选型困境在即时通讯(IM)客户端开发领域,技术选型往往让开发者陷入两难境地。最近两年,Tauri和Qt这两个框架在IM开发场景中的讨论热度持续攀升,但网络上缺乏真正从实战角度对比的深度分析。我经历过三次IM客户端从零到一…

📅 2026/9/10 0:13:35
27届大模型岗面试准备(十一):模型蒸馏与稀疏化——从软标签到结构化剪枝的压缩全景

27届大模型岗面试准备(十一):模型蒸馏与稀疏化——从软标签到结构化剪枝的压缩全景

27届大模型岗面试准备(十一):模型蒸馏与稀疏化——从软标签到结构化剪枝的压缩全景 上一篇讲推理加速时留了个尾巴:KV Cache、PagedAttention 这些手段优化的是"怎么跑得快",但模型本身的参数量没变。如果连…

📅 2026/9/14 6:15:47
【C++】 初阶篇 模板初阶

【C++】 初阶篇 模板初阶

引言 写 C 时,你是不是常为 “int、double 类型要写两套一样逻辑的代码” 而烦?模板就是来解决这个问题的 —— 用泛型编程让一段代码适配多种类型,不用重复造轮子。 一、泛型编程 我们通过实现一个通用的交换函数来引入泛型编程:…

📅 2026/8/23 1:50:26
MORE NEWS

更多资讯

📰

从零用MATLAB实现元胞自动机森林火灾模拟:规则、可视化与参数扫描

简介:基于元胞自动机的森林火灾模拟MATLAB代码包,面向本科、硕士阶段需要理解元胞自动机建模与仿真应用的教研学习者,可用于课程设计或算法演示。资源内含2个文件,包含一个实现森林火灾传播规则的MATLAB主程序以及对应的效果示意图…

📰

合肥美的太阳能故障报修电话|加热慢上门排查|欧米到家服务热线

太阳能热水器使用时间长了,容易出现不上水、水箱水位不准、水温升不上去、热水出得少、上水不停、仪表不显示、控制器报警、管道漏水、冬季冻堵、电加热不能使用等情况。尤其是合肥气候湿润、四季分明,多雨潮湿且冬季低温湿冷,部分家庭太阳能…

📰

pandoc YAML 元数据块标量类型解析:数字与布尔值如何映射到 Meta 类型

pandoc YAML 元数据块标量类型解析:数字与布尔值如何映射到 Meta 类型 【免费下载链接】pandoc Universal markup converter 项目地址: https://gitcode.com/gh_mirrors/pa/pandoc 导读 本篇文章围绕 pandoc 仓库中的命令测试用例 test/command/4819.md&…

📰

ComfyUI-Workflows-ZHO:直接加载现成的 ComfyUI 工作流模板

ComfyUI-Workflows-ZHO:直接加载现成的 ComfyUI 工作流模板 【免费下载链接】ComfyUI-Workflows-ZHO 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-Workflows-ZHO ComfyUI-Workflo…

📰

腾讯云FDE认证:部署交付工程师的标准化之路

腾讯云最近放出了一个新消息,行业里第一个FDE工程师认证正式上线,FDE合作伙伴招募也同步启动了。FDE这个名字,第一次听的人可能会心里嘀咕,这跟平时念叨的IDE、CDN,还有各种"XXX认证"到底有什么关系。简单说…

📰

BCC eBPF 脚本贡献指南:从短示例到生产级 Linux 性能排查工具的完整开发规范

BCC eBPF 脚本贡献指南:从短示例到生产级 Linux 性能排查工具的完整开发规范 【免费下载链接】bcc BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more 项目地址: https://gitcode.com/gh_mirrors/bc/bcc 导读:本文以…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬