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 会被取代吗答案比多数人想的更微妙。

相关新闻

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

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

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

2026/7/31 1:39:03 阅读更多 →
27届大模型岗面试准备(十一):模型蒸馏与稀疏化——从软标签到结构化剪枝的压缩全景

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

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

2026/7/31 1:39:02 阅读更多 →
【C++】 初阶篇 模板初阶

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

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

2026/7/31 1:39:02 阅读更多 →

最新新闻

Unity Sprite边缘黑线问题:从纹理采样原理到全链路解决方案

Unity Sprite边缘黑线问题:从纹理采样原理到全链路解决方案

1. 项目概述:一个困扰开发者的“像素级”难题在Unity开发中,尤其是UI制作和2D游戏开发时,我们经常需要将一张Texture(纹理)资源转换为Sprite(精灵)来使用。这个过程看似简单,无非是在…

2026/7/31 2:22:16 阅读更多 →
3分钟解决APA第7版参考文献格式难题的完整指南

3分钟解决APA第7版参考文献格式难题的完整指南

3分钟解决APA第7版参考文献格式难题的完整指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的参考文献格式而烦恼吗?APA第…

2026/7/31 2:22:16 阅读更多 →
文献综述 | 知识图谱与Agent Harness融合

文献综述 | 知识图谱与Agent Harness融合

摘要 大型语言模型驱动的智能体(LLM Agent)正从简单的"模型工具"范式向具有标准化组件接口的Agent Harness架构演进,涵盖配置层、行为控制层、能力扩展层、工具连接层和多智能体协作层。然而,当前Agent Harness各组件之…

2026/7/31 2:22:16 阅读更多 →
【扣子变量安全传递白皮书】:基于AST静态分析的变量污染检测方案,已拦截172+次线上数据泄露风险

【扣子变量安全传递白皮书】:基于AST静态分析的变量污染检测方案,已拦截172+次线上数据泄露风险

更多请点击: https://intelliparadigm.com 第一章:扣子变量安全传递的核心挑战与治理范式 在低代码/无代码平台中,“扣子”(Button)作为用户触发逻辑的关键交互单元,其绑定的变量常承载身份凭证、敏感上下…

2026/7/31 2:22:16 阅读更多 →
C++反射机制深度解析:从宏到代码生成的工程实践

C++反射机制深度解析:从宏到代码生成的工程实践

1. 项目概述:为什么我们需要在C中“反射”?在C的世界里,我们常常自嘲是“拿着显微镜的工匠”。这门语言给了我们无与伦比的性能控制力,从内存布局到指令流水,几乎无所不能。但与此同时,我们也失去了一些在更…

2026/7/31 2:22:16 阅读更多 →
MaixCAM与无刷电机云台视觉跟踪系统开发实战

MaixCAM与无刷电机云台视觉跟踪系统开发实战

1. 项目背景与需求分析在嵌入式视觉项目中,云台控制系统是实现目标跟踪、图像稳定的关键技术组件。传统舵机云台存在精度低、响应慢、易抖动等问题,而无刷电机凭借高扭矩、低噪音、长寿命等优势,正逐渐成为高性能云台的首选驱动方案。轮趣无刷…

2026/7/31 2:21:16 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻