第21课:面试通关手册
本节目标:核心概念速答、项目黄金3分钟话术、各专项高频问答索引、关键术语速记。
1. 核心高频 10 问(必背)
Q1:什么是 RAG?为什么需要 RAG?
RAG = Retrieval-Augmented Generation。在 LLM 生成回答前,先从外部知识库检索相关信息作为上下文。
解决三大问题:① 知识截止(训练数据有时效性)② 幻觉(编造不存在内容)③ 可溯源(传统 LLM 无法给出引用)。
"RAG 本质是给 LLM 配了一本'开卷考试的参考书'。"
Q2:Agentic RAG 比传统 RAG 强在哪?
| 维度 | 传统 RAG | Agentic RAG |
|---|---|---|
| 检索决策 | 固定流程 | Agent 自主判断 |
| 检索次数 | 一次 | 多轮迭代 |
| 证据评估 | 不评估 | 判断是否充分 |
| 失败处理 | 硬答 | 反思 + 二次检索 |
Q3:Embedding 是什么?怎么选模型?
把文本转成稠密向量(如 1024 维浮点数),语义相近的文本向量距离近。
中文首选 BGE-M3(多功能 + 长上下文 + 开源),英文选 OpenAI text-embedding-3,性能极致选 Conan-embedding。
Q4:切片策略有哪些?
五大策略:固定长度 → 句子边界 → 重叠滑窗 → 结构化切片 → 语义切片。工业标配 = 重叠滑窗(200-500字 + 50-100字重叠)+ 保留元数据。
Q5:什么是 Rerank?为什么需要?
对检索召回结果重新排序。向量检索是双塔(快但粗),Rerank 用交叉编码(慢但精)。架构:Bi-Encoder 召回 100 → Cross-Encoder 重排 10。
Q6:ReAct 是什么?
ReAct = Reasoning + Acting。循环模式:Thought(思考)→ Action(调工具)→ Observation(看结果)→ 重复直到能回答。
Q7:LoRA 的原理?
W_new = W + B×A(低秩分解),把微调参数减少 100-1000 倍。基于"低秩假设":权重增量本质是低秩的,r=8 就能达到全参微调 95% 效果。
Q8:DPO 为什么替代 PPO?
PPO 需要 4 个模型(Actor/Critic/RM/Reference)→ 显存爆炸 + 训练不稳定。DPO 用数学消除 RM 和 PPO,只需 2 个模型,像 SFT 一样稳定。
Q9:vLLM 为什么快?
三大创新:① PagedAttention(像 OS 分页管 KV Cache,显存利用率 30%→96%)② Continuous Batching(不等整批,GPU 持续满载)③ 优化 CUDA Kernels(FlashAttention + 量化)。
Q10:RAG 系统怎么评估?
检索层:Hit@K、MRR。生成层:Faithfulness(防幻觉核心)、Answer Relevancy。工具:RAGAS + LangSmith + 人工标注。评估闭环:收集→归因→优化→验证。
2. 项目参考黄金 3 分钟话术
【背景】30秒
"我做了基于 SpringBoot + LangChain4j 的中医古籍智能问答系统。中医古籍专业性强、需要溯源引用,传统大模型直接回答会有严重幻觉,所以采用 Agentic RAG 架构来解决。"
【架构】60秒
"系统分四层:数据层用 PostgreSQL + pgvector 存古籍片段和向量;检索层用多路召回(向量 + 关键词)+ Rerank 重排;应用层用 LangChain4j 实现 Agent 工具调用 + 流式生成;接入层用 SSE 流式推送 + JWT 认证。设计了 5 个 Agent 工具:查询改写、向量检索、关键词检索、证据评估、引用查询。"
【难点】60秒
"四个挑战:① 古文和现代问题语义差异大 → Agent 改写 query ② 单一向量检索准确率低 → 多路召回 + Rerank ③ 幻觉问题 → Prompt 强制引用 [1][2] 标记 ④ 用户体验差 → SSE 流式输出,首字延迟从 5 秒降到 0.5 秒。"
【成果】30秒
"最终支持:用户提问 → Agent 思考 → 检索古籍 → 流式回答带引用完整闭环。引用准确率 95%+,幻觉率降低 70%。"
3. 深度追问预案
| 追问 | 应答要点 |
|---|---|
| 为什么选 pgvector 不是 Milvus? | 业务和向量统一存储,运维简单,数据规模适配 |
| Embedding 维度为什么是 1024? | BGE-M3 默认,兼容主流规范,方便切换 |
| 怎么保证引用准确? | Prompt 约束 + 后处理校验 + chunk_id 持久化 |
| LLM API 挂了怎么办? | fallback:检索结果直接返回 + 缓存兜底 |
| 怎么扩展到千万级数据? | 向量库换 Milvus + HNSW 索引 + 向量量化 |
4. 各专项高频题索引
Agent 专项
- ReAct vs Reflexion 区别?→ 课18
- Function Calling 怎么实现?→ 附07
- 多 Agent 比单 Agent 强在哪?→ 课16
- AutoGen 和 CrewAI 怎么选?→ 课16
微调专项
- LoRA 原理 + 为什么有效?→ 课18
- RLHF 三步是什么?→ 课18
- 怎么防止灾难性遗忘?→ 课18
- 什么时候不该用微调?→ 课18
Transformer 专项
- 手撕 Self-Attention → 课19
- BERT 和 GPT 区别?→ 课19
- KV Cache 原理 + 显存计算 → 课19
- RoPE 为什么好?→ 课19
工程部署专项
- vLLM 三大创新?→ 附11
- GPTQ 和 AWQ 区别?→ 附11
- 怎么设计高并发 LLM 服务?→ 附11
检索专项
- Bi-Encoder 和 Cross-Encoder 区别?→ 附05
- RRF 的 k 为什么取 60?→ 附05
- HNSW 为什么快?→ 附05
评估专项
- RAGAS 四个核心指标?→ 附10
- LLM-as-Judge 有什么坑?→ 附10
- Bad Case 闭环流程?→ 附10
5. 系统设计题框架
设计一个企业知识库问答系统:
1. 需求:文档规模?日活?延迟要求?多租户?
2. 数据层:数据源接入 → 清洗 → 切片(200-500字)→ 向量化 → 入库
3. 检索层:多路召回(向量+BM25+元数据过滤)→ RRF → Rerank
4. 应用层:LangChain4j/LangChain + Agent + Memory + Prompt模板
5. 接入层:REST + SSE + JWT/RBAC + Redis 限流
6. 监控:Prometheus + Grafana + LangSmith trace + Bad Case收集
6. 关键术语速记
| 术语 | 全称 | 一句话 |
|---|---|---|
| RAG | Retrieval-Augmented Generation | 检索增强生成 |
| ReAct | Reasoning + Acting | 思考+行动循环 |
| CoT | Chain of Thought | 思维链 |
| LoRA | Low-Rank Adaptation | 低秩微调 |
| DPO | Direct Preference Optimization | 直接偏好优化 |
| RLHF | RL from Human Feedback | 人类反馈强化学习 |
| MoE | Mixture of Experts | 混合专家 |
| RoPE | Rotary Position Embedding | 旋转位置编码 |
| GQA | Grouped Query Attention | 分组查询注意力 |
| MCP | Model Context Protocol | LLM 的 USB 接口 |
7. 不会答时的应对
| 情况 | 话术 |
|---|---|
| 完全不会 | "这个我没有深入研究,但根据我对 XX 的理解,会从 X、Y、Z 角度思考..." |
| 听说过没用过 | "我了解过核心思想是 XX,如果落地会先做 XX 验证..." |
| 需要澄清 | "您问的是 XX 场景还是 YY 场景?两种方案不一样..." |
一定不能说:"不知道"(直接终结)、"网上有教程"(没主见)、编造细节(一深追就崩)。
8. 反问环节
必问的高质量问题:
- "团队目前在 RAG / Agent 方向上有什么挑战?" → 显示关心实际问题
- "你们的评估体系是怎么做的?" → 显示懂工程化
- "技术栈未来 1 年的演进方向?" → 显示看长期
- "入职后前 3 个月会负责什么?" → 显示重视落地
终极心法
面试不是考你"知不知道",而是考你"理解得多深、能不能落地"。项目细节 > 名词堆砌。一个讲透的项目胜过 100 个听说过的概念。
"会评估的工程师,才是能优化的工程师;能闭环的团队,才是能持续进步的团队。"