M8-004M8: ML Systems, Engineering & ResearchML System Design FrameworkMedium
Mastery:
ML System Design Framework: 设计一个 LLM 应用系统(RAG 问答),说明关键决策。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 索引(切分/嵌入/建库)→ 检索(改写/召回/重排)→ 生成(上下文/引用/校验)→ 监控(忠实度/成本)。
📌 Key Takeaways
- •索引:解析、切分、嵌入、向量库 + 稀疏索引
- •检索:查询改写、混合检索、重排
- •生成:上下文组装、引用、允许不知道;监控忠实度/成本/延迟
📐 Mathematical Derivations
数学机理:<strong>RAG 问答系统的关键决策</strong>(详见 M5 的 RAG 全链路题)——(1) <strong>索引阶段</strong>——(a) <strong>文档解析</strong>(PDF/HTML/表格的处理);(b) <strong>切分(chunking)</strong>——粒度(256~1024 token)+ 重叠 + 元数据;<strong>关键决策</strong>——'检索粒度 vs 生成粒度'分离(小片段检索 + 父文档返回);(c) <strong>嵌入</strong>(模型选择 + 领域微调 + 指令式前缀);(d) <strong>索引</strong>(向量库 HNSW/IVF-PQ + 稀疏倒排);(e) <strong>元数据</strong>(来源/时间/章节,用于过滤与引用)。(2) <strong>检索阶段</strong>——(a) <strong>查询处理</strong>(改写/扩展/HyDE/多查询);(b) <strong>召回</strong>(稀疏 + 稠密 + 混合 + RRF);(c) <strong>重排</strong>(cross-encoder/LLM);(d) <strong>上下文组装</strong>(去重、按相关性排序、放首尾对抗 lost-in-the-middle);(e) <strong>自适应检索</strong>(按需检索、多跳迭代)。(3) <strong>生成阶段</strong>——(a) <strong>prompt 设计</strong>(明确'依据资料回答');(b) <strong>允许'不知道'</strong>(<strong>最有效的防幻觉手段</strong>);(c) <strong>要求引用</strong>(可核查);(d) <strong>约束解码</strong>(结构化输出);(e) <strong>工具调用</strong>(计算/查询外包)。(4) <strong>监控与评估</strong>——(a) <strong>检索层</strong>(Recall@k/MRR);(b) <strong>生成层</strong>(<strong>忠实度</strong>/答案相关性/上下文利用率);(c) <strong>端到端</strong>(人工/LLM-judge);(d) <strong>成本/延迟</strong>(token 数、P99);(e) <strong>失败分析</strong>(检索失败 vs 生成失败)。<strong>关键决策</strong>——(a) <strong>切分粒度</strong>(影响召回与上下文质量);(b) <strong>检索方式</strong>(混合检索是默认);(c) <strong>是否重排</strong>(精度关键);(d) <strong>上下文长度与位置</strong>(lost-in-the-middle);(e) <strong>是否自适应检索</strong>(成本 vs 质量);(f) <strong>幻觉控制策略</strong>(允许不知道 + 引用 + 校验);(g) <strong>成本控制</strong>(前缀缓存、模型分级、压缩)。<strong>失败模式</strong>——(a) <strong>检索不到</strong>(放宽/让模型说不知道);(b) <strong>召回了但忽略</strong>(prompt 强调 + 位置优化);(c) <strong>幻觉</strong>(允许不知道 + 引用校验);(d) <strong>上下文冲突</strong>(让模型指出冲突);(e) <strong>成本失控</strong>(缓存 + 分级)。<strong>实践建议</strong>——(a) <strong>混合检索 + 重排</strong>(默认);(b) <strong>检索粒度与生成粒度分离</strong>;(c) <strong>允许不知道</strong>(防幻觉);(d) <strong>分层评估</strong>(定位问题);(e) <strong>前缀缓存</strong>(多请求共享前缀);(f) <strong>模型分级</strong>(简单问题用便宜模型)。<strong>度量</strong>——(a) 检索 Recall@k;(b) 忠实度;(c) 端到端正确率;(d) 成本/延迟。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'允许不知道'是防幻觉的最有效手段</strong>——成本极低(改 prompt);面试中能指出是深度理解的标志。② <strong>'检索粒度与生成粒度分离'</strong>——小片段检索(准)+ 父文档返回(全)。③ <strong>'分层评估'定位问题</strong>——检索失败 vs 生成失败需分开。④ <strong>'前缀缓存'对多请求共享系统提示的场景收益巨大</strong>。⑤ <strong>'模型分级'省成本</strong>——简单问题用小模型。⑥ <strong>面试要点</strong>——被问'设计 RAG 系统',应给出'<strong>索引(切分/嵌入)+ 检索(混合+重排)+ 生成(允许不知道+引用)+ 监控(忠实度)+ 关键决策 + 失败模式</strong>';能指出'允许不知道'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕prompt 隐含'必须回答'(鼓励幻觉)
- ✕不做分层评估(无法定位问题)
🎯 Interviewer Follow-ups
- ?如何控制幻觉?
- ?如何评估 RAG 的效果?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.