原理题 - 面试题解答
生成日期:2026-05-05 | 共 28 题 来源:牛客 / 知乎 / Datawhale / 火山引擎 / 各大厂面经等 2026-05-05 更新:新增 8 题,删除 8 题偏算法深度内容(RoPE/PPO KL/Reward Hacking/VLM/CLIP/ZeRO/AMP/PPO 显存)
Q1:[来源:牛客][2025-04] Transformer 的自注意力机制是如何工作的?为什么比 RNN 更适合处理长序列?
考察点
对 Transformer 核心架构的理解深度,以及对比传统序列模型的优势分析能力。
解答思路
- 解释 Self-Attention 的计算流程:Q/K/V 矩阵 → 点积 → Softmax → 加权求和
- 对比 RNN 的顺序依赖,强调并计算能力和 O(1) 路径长度
- 补充 Multi-Head 的设计意义
参考答案
Self-Attention 的核心思想是让序列中每个位置都能"看到"所有其他位置,通过计算 Query 和 Key 的点积得到注意力权重,再用权重对 Value 加权求和。具体步骤:(1) 输入经过线性变换得到 Q、K、V 三个矩阵;(2) 计算 Q·K^T / sqrt(d_k) 得到注意力分数矩阵;(3) Softmax 归一化得到概率分布;(4) 用概率分布加权 V 得到输出。
相比 RNN,Self-Attention 有三大优势: - 并行计算:RNN 必须按时间步顺序计算,Attention 可一次性算完所有位置关系 - 路径长度 O(1):RNN 中相距 n 步的两个 token 需要 n 次传递才能建立联系,Attention 只需一步 - 全局感受野:每个位置同时关注所有位置,不会像 RNN 那样因梯度消失/爆炸而遗忘远处信息
加分项: 提到计算复杂度问题——Self-Attention 的计算复杂度是 O(n²),在超长序列场景下可用 Linear Attention、Flash Attention 或稀疏 Attention 优化。
Q2:[来源:Datawhale][2025-03] 什么是位置编码?为什么在 Transformer 中它是必需的?
考察点
理解 Transformer 架构中位置信息的处理方式。
解答思路
- 解释 Self-Attention 的排列不变性(置换输入不改变输出)
- 介绍几种位置编码方案
- 对比优缺点
参考答案
Self-Attention 对输入序列的排列是不变的——如果把输入 token 的顺序打乱,注意力计算结果完全一样。这导致模型无法区分"我爱编程"和"编程爱我"。因此必须显式注入位置信息。
主流位置编码方案: - 正弦位置编码(原始 Transformer):用不同频率的正弦/余弦函数编码位置,支持外推到训练时未见过的序列长度 - 可学习位置编码(BERT/ViT):随机初始化 + 训练中学习,简单但无法外推 - RoPE(旋转位置编码,主流选择):将位置信息编码为旋转矩阵,通过 Q/K 的旋转变换实现,具有优秀的长度外推能力,被 LLaMA、Qwen 等模型广泛采用 - ALiBi:在注意力分数上直接加与距离成比例的惩罚项,无需嵌入位置向量,外推能力极强
加分项: 提到 RoPE 的数学本质是将绝对位置编码转化为相对位置的旋转操作,兼具绝对和相对位置编码的优点。
Q3:[来源:Datawhale][2025-03] 什么是 Scaling Laws?它对 LLM 研发有什么指导意义?
考察点
对大模型训练基本规律的理解。
解答思路
- 解释 Kaplan 2020 原始 Scaling Laws
- 介绍 Chinchilla 定律的修正
- 说明对工程实践的指导价值
参考答案
Scaling Laws 描述了模型性能(Loss)与计算量(C)、数据集大小(D)、参数量(N)之间的幂律关系:L ∝ C^{-α}。
Kaplan et al. (2020) 发现:增大模型、增加数据、提升算力都能带来可预测的性能提升,且三者存在最优比例关系 N_optimal ∝ C^{0.5}。
Chinchilla 定律 (Hoffmann et al., 2022) 修正:最优训练配置下,参数量和训练 token 数应等比例增长。例如,70B 参数模型应匹配约 1.4T token 进行训练,而非 Kaplan 预测的更小数据量。
工程指导意义: - 预算有限时:与其训练一个 100B 大模型,不如训练多个 7B 模型并组合使用 - 数据量是瓶颈:高质量数据不足时,盲目增大模型参数会导致过拟合 - 合成数据价值:当自然语言数据接近枯竭时,合成数据成为突破 Scaling Laws 上限的关键
Q4:[来源:牛客][2025-04] MHA、MQA、GQA 的区别是什么?
考察点
对注意力机制变种的工程理解。
解答思路
- 定义三种 Attention 模式
- 对比 KV Cache 大小和计算速度
- 说明各自适用场景
参考答案
| 模式 | Q 头数 | KV 头数 | KV Cache 大小 | 推理速度 | 效果 |
|---|---|---|---|---|---|
| MHA (Multi-Head) | H | H | H × d_kv | 基准 | 最佳 |
| MQA (Multi-Query) | H | 1 | d_kv | ~3x 快 | 略有下降 |
| GQA (Grouped-Query) | H | G (1<G<H) | G × d_kv | ~2x 快 | 接近 MHA |
MHA:每个 Query 头有独立的 K/V,效果最好但 KV Cache 大,推理阶段显存占用高。
MQA:所有 Query 头共享一组 KV,KV Cache 减少 H 倍,显著加速推理,但多头表达能力受限,质量略有下降。
GQA:折中方案,将 H 个 Query 头分为 G 组,每组共享一组 KV。LLaMA-2 70B 和 Qwen 系列均采用 GQA,在推理速度和效果之间取得良好平衡。
Q5:[来源:牛客][2025-03] 什么是 LoRA?它的核心思路是什么?
考察点
对参数高效微调技术的理解。
解答思路
- 解释 LoRA 的低秩分解假设
- 说明训练和推理时的权重合并
- 对比全量微调的优势
参考答案
LoRA(Low-Rank Adaptation)基于一个核心假设:模型在适应新任务时的权重更新具有低内在秩。
具体做法:冻结预训练权重 W_0,在其旁边注入可训练的低秩矩阵 ΔW = B·A,其中 A ∈ R^{r×d},B ∈ R^{d'×r},r ≪ d。前向传播变为:h = W_0x + ΔWx = W_0x + BAx。
关键优势: - 参数量极少:r=8 时,可训练参数仅为全量微调的 ~0.01% - 零推理延迟:训练后将 BA 合并回 W_0,推理开销为零 - 多任务切换:不同任务只需替换 ΔW,W_0 可复用 - 显存友好:7B 模型在单卡 A100 上即可训练
加分项: 提到 LoRA 通常只加在 Attention 层的 Q 和 V 投影矩阵上,因为这些矩阵负责"理解"和"生成"信息,是最需要适配的部分。后续研究表明加入 MLP 层也可带来小幅提升。
Q6:[来源:牛客][2025-03] QLoRA 相比 LoRA 的核心改进是什么?NF4 量化为何优于 INT4?
考察点
对量化与微调结合技术的深入理解。
解答思路
- 解释 QLoRA 的三要素:NF4、双重量化、分页优化器
- 对比 NF4 和 INT4 的精度差异
- 说明显存节省的具体数字
参考答案
QLoRA 在 LoRA 基础上引入三项创新:
1. NF4(Normal Float 4-bit)量化: 将基座权重量化为 4-bit。NF4 不是均匀量化(如 INT4 的 [-8,7]),而是根据正态分布的分位数函数来设计量化级别——权重矩阵的值通常接近正态分布,NF4 在均值附近分配更多量化级别,在尾部稀疏区域分配较少级别,信息损失更小。
2. 双重量化(Double Quantization): 对量化常数(每个 block 的 absmax)也进行 8-bit 量化,进一步节省显存。
3. 分页优化器(Paged Optimizers): 利用 NVIDIA 统一内存机制,在 GPU 显存不足时自动将优化器状态溢出到 CPU 内存,防止 OOM。
显存对比: 65B 模型全量微调需 ~780GB,LoRA 需 ~78GB,QLoRA 仅需 ~48GB(单张 A100 即可训练)。
Q7:[来源:牛客][2025-03] LoRA 的 rank 参数如何选择?rank=8 和 rank=64 的区别是什么?
考察点
对 LoRA 超参数调优的实践经验。
解答思路
- 解释 rank 的物理含义
- 给出不同任务类型的推荐值
- 说明 rank 与 alpha 的关系
参考答案
rank(r)决定了可训练矩阵 ΔW 的表达能力。r 越大,模型能学到的任务特定知识越多,但参数量和显存也随之增加。
经验法则:
| 任务类型 | 推荐 rank | 原因 |
|---|---|---|
| 指令微调(风格适配) | 8-16 | 主要学习指令格式和语气,变化量小 |
| 领域适配(医疗/法律) | 16-32 | 需要学习新领域的专业术语和知识 |
| 复杂推理(数学/代码) | 32-64 | 需要更强的表达能力捕捉复杂模式 |
rank=8 vs rank=64: - 参数量差异:64/8 = 8 倍 - 效果差异:简单任务两者差距极小(<1%);复杂任务 rank=64 可能有 2-5% 的提升 - 显存差异:优化器状态随 rank 线性增长
alpha 与 rank 的关系: LoRA 的缩放系数通常为 alpha = 2×r 或 alpha = r。alpha 越大,LoRA 更新对原始权重的影响越大。
Q8:[来源:牛客][2025-03] LoRA 微调后的权重如何合入原模型?
考察点
对 LoRA 推理优化的理解。
解答思路
- 解释合并的数学操作
- 说明合并后的推理优势
- 提到不合并的场景
参考答案
训练完成后,将低秩矩阵 BA 加回到原始权重:W_merged = W_0 + BA。
由于 A ∈ R^{r×d},B ∈ R^{d'×r},它们的乘积 BA ∈ R^{d'×d} 与 W_0 维度相同,可以直接相加。
合并的优势: - 零推理开销:合并后只需一次矩阵乘法,无需额外计算 - 内存复用:可以加载合并后的模型,无需同时持有 W_0 和 ΔW - 兼容性:合并后的模型就是标准格式,任何推理框架都可直接加载
不合并的场景: - 多 LoRA 服务化(vLLM LoRA):多个 LoRA 适配器共享同一基座模型,动态加载不同 ΔW - 持续微调:保留 W_0 以便后续继续训练新适配器
加分项: 提到 HuggingFace PeftModel.merge_and_unload() 方法,以及 vLLM 的 LoRA 热加载方案可在不重启服务的情况下切换适配器。
Q9:[来源:牛客][2025-04] 大模型的 KV Cache 是什么?为什么能加速推理?
考察点
对 LLM 推理优化的深入理解。
解答思路
- 解释自回归生成的重复计算问题
- 说明 KV Cache 的存储内容和工作机制
- 量化加速效果
参考答案
在自回归生成中,每一步都需要将当前 token 连同之前所有 token 一起送入模型。如果不缓存,第 n 步需要对前 n 个 token 重新计算所有层的 K 和 V 矩阵。
KV Cache 的做法: 将之前已经计算过的 token 的 K 和 V 矩阵缓存起来,每一步只需计算新增 token 的 K/V,然后拼接到缓存后面。这样避免了 O(n²) 的重复 Attention 计算。
加速效果: - 无缓存时,生成 n 个 token 的总计算量为 O(n³) - 有缓存时,总计算量降为 O(n²) - 实际推理中,KV Cache 可减少 50-70% 的计算量,首 token 延迟不变,但后续每个 token 生成速度显著提升
代价: 显存占用增加。7B 模型在 2048 长度上下文下,KV Cache 约需 ~1-2GB 显存。
Q10:[来源:牛客][2025-04] 位置编码中的 ALiBi 是什么?与 RoPE 相比有什么特点?
考察点
对不同位置编码方案的理解和对比能力。
解答思路
- 解释 ALiBi 的核心机制
- 对比 RoPE 的优缺点
- 说明适用场景
参考答案
ALiBi(Attention with Linear Biases)不向输入中注入位置信息,而是在注意力分数上直接加上一个与 token 间距离成线性比例的惩罚值:score(q_i, k_j) += m · (i - j),其中 m 是固定的斜率。
对比 RoPE:
| 维度 | ALiBi | RoPE |
|---|---|---|
| 实现方式 | 注意力分数上加偏置 | Q/K 向量旋转变换 |
| 外推能力 | 极强(天然线性外推) | 好(需配合 YaRN) |
| 训练效率 | 稍慢 | 快 |
| 采用情况 | MPT、BLOOM | LLaMA、Qwen、DeepSeek |
| 推理开销 | 几乎为零 | 极小(旋转变换) |
ALiBi 的优势在于超长上下文场景下外推能力最强,训练到 2K 长度的模型可以很好地推理 8K 甚至更长的序列。劣势是效果略逊于 RoPE。
Q11:[来源:Datawhale][2025-04] 什么是混合专家模型(MoE)?它是如何在不显著增加推理成本的情况下扩大参数规模的?
考察点
对 MoE 架构的理解。
解答思路
- 解释 MoE 的路由机制和专家网络
- 说明稀疏激活的原理
- 对比密集模型的优劣
参考答案
MoE(Mixture of Experts)的核心思想:模型包含多个"专家"网络(通常是 FFN 层),每个输入只被路由到少数几个专家进行处理。
工作原理: 在每层中设置一个路由器(Router),根据输入 token 的特征决定激活哪 K 个专家(K 通常为 1-2,远小于专家总数 N)。其余专家不激活、不参与计算。
关键优势: - 总参数大:Mixtral 8x7B 有 46.7B 参数,但每次前向传播只激活 12.9B(2/8 × 46.7B) - 推理成本可控:实际计算量等同于较小的密集模型 - 训练效率高:不同专家可在不同数据子集上 specialization
劣势: - 显存占用大(需要加载所有专家权重) - 路由负载不均衡可能导致部分专家训练不充分 - 部署时需要更大显存的 GPU
加分项: 提到 DeepSeek-V2 采用更细粒度的 MoE 设计,将 FFN 和 Attention 都 MoE 化,实现了 236B 参数但仅激活 21B 的高效模型。
Q12:[来源:Datawhale][2025-03] 什么是词元化(Tokenization)?BPE 和 WordPiece 有什么区别?
考察点
对 LLM 输入预处理的理解。
解答思路
- 解释 Tokenization 的目的
- 对比 BPE 和 WordPiece 的合并策略
- 说明对模型性能的影响
参考答案
Tokenization 将原始文本切分为模型可处理的离散单元(token)。目标是在词汇表大小和序列长度之间取得平衡。
BPE(Byte-Pair Encoding): - 从字符级词汇表开始,迭代合并出现频率最高的字符/子词对 - 能处理任意 Unicode 字符(包括 emoji) - GPT 系列、LLaMA、Qwen 等采用
WordPiece: - 类似 BPE,但合并时最大化语言模型的似然增益(而非简单频率) - 倾向于合并成有意义的词根 - BERT、T5 等采用
对比: BPE 更通用(支持多语言字符),WordPiece 更注重语义完整性。现代模型大多选择 BPE 或其变体(如 SentencePiece)。
Q13:[来源:牛客][2025-05] LLM 推理阶段有哪些解码策略?Greedy、Beam Search、Top-K、Top-P 的优缺点是什么?
考察点
对 LLM 生成机制的理解深度。
解答思路
- 分别解释四种策略
- 对比确定性和多样性
- 给出适用场景建议
参考答案
| 策略 | 原理 | 确定性 | 多样性 | 适用场景 |
|---|---|---|---|---|
| Greedy | 每步选概率最高的 token | 完全确定 | 无 | 分类、结构化输出 |
| Beam Search | 维护 k 个候选序列,选总概率最高的 | 近似确定 | 低 | 翻译、摘要 |
| Top-K | 从概率最高的 k 个 token 中采样 | 随机 | 高 | 创意生成、对话 |
| Top-P | 从累计概率达到 p 的最小 token 集合中采样 | 随机 | 自适应 | 对话、创意写作 |
Top-P vs Top-K 的关键区别: Top-K 固定候选数量,当模型很自信时(某个 token 概率 0.95)仍会从 k 个中随机选;Top-P 是动态的,自信时集合小、不确定时集合大,更灵活。
生产实践建议: - 代码生成:Temperature=0.1 + Top-P=0.95 - 创意写作:Temperature=0.8 + Top-P=0.9 - 结构化输出:Temperature=0 + Greedy
Q14:[来源:Datawhale][2025-04] RLHF 流程的三个阶段是什么?DPO 与 RLHF 的区别和优势是什么?
考察点
对大模型对齐技术的理解。
解答思路
- 解释 RLHF 三阶段流程
- 介绍 DPO 的核心创新
- 对比两种方法的工程代价
参考答案
RLHF 三阶段:
- SFT(Supervised Fine-Tuning):用高质量人工标注数据微调基座模型,使其具备基本的指令遵循能力
- RM(Reward Model)训练:让标注员对 SFT 模型的多个输出进行排序,训练一个奖励模型来预测偏好
- PPO 优化:用 PPO 算法训练策略模型,最大化 RM 给出的奖励,同时用 KL 散度惩罚防止偏离 SFT 模型太远
DPO(Direct Preference Optimization)的核心创新: 将 PPO 的 RL 优化问题转化为一个直接的分类损失函数,无需训练单独的 Reward Model,也不需要 PPO 的复杂超参调优。
| 维度 | RLHF (PPO) | DPO |
|---|---|---|
| 实现复杂度 | 高(需要 RM + PPO 训练循环) | 低(标准 SFT 流程即可) |
| 计算资源 | 需要多个模型同时训练 | 只需一个模型 |
| 超参敏感性 | 高(KL 系数、PPO clip 等) | 低(主要是 temperature) |
| 效果 | 略优 | 接近 |
加分项: 提到 GRPO(Group Relative Policy Optimization)是 DeepSeek-R1 采用的方法,相比 PPO 省去了 Value Network,通过组内归一化替代 critic,进一步降低了训练复杂度。
Q15:[来源:牛客][2025-05] Attention 的计算步骤是什么?Multi-head 中每个 head 为什么要降维?
考察点
对 Attention 机制实现细节的掌握。
解答思路
- 逐步拆解 Attention 计算
- 解释 Multi-head 的降维原因
- 说明计算效率考量
参考答案
Attention 计算步骤: 1. 线性变换:Q = XW_Q, K = XW_K, V = XW_V 2. 点积计算:Q · K^T,得到 n×n 的注意力分数矩阵 3. 缩放:除以 sqrt(d_k)(防止大值导致 Softmax 梯度消失) 4. Softmax:每行归一化为概率分布 5. 加权求和:softmax(score) · V
Multi-head 中降维原因: 如果每个 head 都保持完整维度 d_model,H 个 head 的计算量是单头的 H 倍。因此将每个 head 的维度降为 d_model/H,这样所有 head 的总计算量与单头相当,但获得了多个"视角"的信息提取能力。
Q16:[来源:Datawhale][2025-04] SFT(有监督微调)的数据集格式是什么?
考察点
对大模型微调数据准备的理解。
解答思路
- 说明主流数据格式
- 解释各字段含义
- 给出示例
参考答案
主流 SFT 数据格式有三种:
Alpaca 格式(最常用):
{"instruction": "解释量子计算", "input": "", "output": "量子计算是一种..."}
ChatML 格式(对话场景):
{"messages": [
{"role": "system", "content": "你是AI助手"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么我可以帮助的?"}
]}
ShareGPT 格式(多轮对话):
{"conversations": [
{"from": "human", "value": "你好"},
{"from": "gpt", "value": "你好!..."}
]}
选择哪种格式取决于训练框架的支持。HuggingFace TRL 库支持 ChatML 和 ShareGPT,Unsloth 支持所有三种格式。
Q17:[来源:牛客][2025-04] 生成式大模型为什么生成的文本比较丰富不死板?
考察点
对 LLM 生成机制原理的理解。
解答思路
- 解释概率分布和采样策略
- 说明温度参数的作用
- 提到训练数据多样性
参考答案
LLM 的生成本质上是条件概率分布:给定前文,模型为下一个 token 预测一个概率分布。丰富性来自三个方面:
- 概率采样而非确定性选择:即使某个 token 概率最高,采样策略(Top-P、Top-K)允许选择其他高概率 token,带来表达的多样性
- 温度参数(Temperature):T>1 使分布更均匀(更多样化),T<1 使分布更尖锐(更确定),通过调节温度可以控制生成文本的创造力
- 训练数据的多样性:LLM 在万亿 token 的多样化语料上训练,学习了丰富的表达方式和语言风格
复读机问题: 当 Temperature=0 或使用 Greedy 时,相同前文总是输出相同后续,导致复读。这是因为模型在训练数据中见过大量重复模式。
Q18:[来源:Datawhale][2025-04] 什么是"涌现能力"(Emergent Abilities)?它在什么规模下出现?
考察点
对大模型规模效应的理解。
解答思路
- 定义涌现能力
- 举例说明
- 讨论争议
参考答案
涌现能力指模型在小规模时不具备,但当参数量达到某个阈值后突然获得的能力。这些能力在训练数据中并未显式教授,而是模型从大规模数据中"自发"学习的结果。
经典例子: - 思维链推理(CoT):只有当模型达到数十 B 参数时,"Let's think step by step" 才能有效触发推理 - 代码生成:小规模模型只能补全单行代码,大规模模型能生成完整函数 - 跨语言迁移:未显式训练的翻译能力在大规模时自然出现
出现规模: Wei et al. (2022) 发现涌现通常在 ~10B 参数以上开始出现,在 ~100B 时更加明显。但这存在争议——有些研究认为涌现是评估指标的离散性造成的"错觉",当用连续指标评估时,能力是渐进增长的而非突变的。
Q19:[来源:Datawhale][2025-05] ReAct 框架的工作原理是什么?如何将思维链和行动结合?
考察点
对 Agent 核心范式的理解。
解答思路
- 解释 ReAct 的 Thought-Action-Observation 循环
- 说明与传统 CoT 的区别
- 给出执行流程示例
参考答案
ReAct(Reason + Act)的核心思想:让模型在推理过程中交替进行思考和行动,而非一次性生成完整答案。
循环流程: 1. Thought(思考):模型分析当前状态,决定下一步需要什么信息或操作 2. Action(行动):模型调用外部工具(搜索、计算、API 等)获取信息 3. Observation(观察):工具返回执行结果 4. 回到 Thought,基于 Observation 继续推理,直到得出最终答案
示例:
Q: 苹果公司的创始人出生在哪一年?
Thought: 我需要先知道苹果公司的创始人是谁。让我搜索一下。
Action: Search["苹果公司 创始人"]
Observation: 史蒂夫·乔布斯、史蒂夫·沃兹尼亚克、罗恩·韦恩
Thought: 创始人是史蒂夫·乔布斯,现在我需要查他的出生年份。
Action: Search["史蒂夫·乔布斯 出生年份"]
Observation: 1955 年 2 月 24 日
Answer: 1955 年
加分项: 提到 ReAct 的失败模式——模型可能"幻觉"不存在的 Action(幻觉行动),或在 Action 返回意外结果时陷入死循环。
Q20:[来源:牛客][2025-04] Agent 如何学会调用外部工具?Function Calling 的原理是什么?
考察点
对工具调用机制的理解。
解答思路
- 解释 Function Calling 的训练方式
- 说明 JSON Schema 的作用
- 对比微调 vs 提示词方法
参考答案
Function Calling 的原理: 模型在预训练阶段见过大量"函数调用"模式,在微调阶段进一步学习了结构化输出的能力。当用户提供工具定义(JSON Schema)时,模型通过以下步骤决定调用哪个工具:
- 意图理解:模型分析用户输入,判断是否需要调用外部工具
- 工具匹配:根据工具的名称、描述和参数定义,选择最合适的工具
- 参数提取:从用户输入中提取工具所需的参数值
- 结构化输出:以 JSON 格式返回工具调用信息
训练方式: - 提示词方法:在 system prompt 中提供工具描述,依赖模型的 in-context learning 能力 - 微调方法:用工具调用数据集对模型进行 SFT,使其更可靠地输出正确的工具调用格式
现代模型(GPT-4、Claude、Qwen)已原生支持 Function Calling,无需微调即可在提示词中定义工具。
Q21:[来源:Datawhale][2025-04] 如何为 Agent 设计短期记忆和长期记忆系统?
考察点
对 Agent 记忆架构的理解。
解答思路
- 定义短期和长期记忆
- 说明各自的存储方案
- 提到检索策略
参考答案
短期记忆(对话上下文): - 存储在上下文窗口中,直接作为对话历史传递给模型 - 管理策略:滑动窗口裁剪(只保留最近 N 轮)、摘要压缩(用 LLM 将历史压缩为概要)、重要性保留(只保留关键信息) - 限制:受上下文窗口大小限制(通常 4K-128K token)
长期记忆(持久化知识): - 存储在向量数据库中,通过检索按需加载 - 写入时机:对话中的关键事实、用户偏好、任务状态 - 检索策略:时间衰减权重 + 语义相关性混合排序 - 前沿实践:MemGPT 使用分层存储,将"活跃"记忆放在上下文窗口,"休眠"记忆存储在向量库中按需召回
加分项: 提到记忆系统的质量比数量更重要——无差别记录所有对话会导致噪声淹没关键信息,应在写入时进行重要性过滤和去重。
Q22:[来源:Datawhale][2025-04] 如何全面评估 RAG 系统的性能?检索和生成阶段分别用什么指标?
考察点
对 RAG 评估体系的理解。
解答思路
- 分别说明检索和生成阶段的评估
- 介绍 RAGAS 四大指标
- 给出实操建议
参考答案
检索阶段评估: - Hit Rate:正确答案所在的文档是否在前 K 个检索结果中 - MRR(Mean Reciprocal Rank):正确答案在结果中的排名倒数均值 - NDCG:考虑排名权重的相关性指标 - Context Precision(RAGAS):检索到的上下文中与问题相关的内容占比
生成阶段评估: - Faithfulness(RAGAS):生成答案是否忠实于检索到的上下文,衡量幻觉程度 - Answer Relevancy(RAGAS):答案与问题的相关程度 - Context Recall(RAGAS):参考答案中的信息有多少在检索到的上下文中出现 - LLM-as-Judge:用 GPT-4 等强模型对答案进行整体评分
实操建议: 构建 100-500 条黄金 QA 数据集,每次系统改动后自动跑评估回归测试,防止效果退化。
Q23:[来源:Datawhale][2025-05] 什么是"Lost in the Middle"问题?如何缓解?
考察点
对长上下文 LLM 行为特征的理解。
解答思路
- 定义 Lost in the Middle 现象
- 解释原因
- 给出缓解策略
参考答案
Lost in the Middle 指 LLM 在长上下文中更容易利用开头和结尾的信息,而忽略中间部分内容的现象(Liu et al., 2023)。
原因: 注意力权重在序列两端天然更强,中间位置的 token 获得的注意力相对较少。位置编码在长距离下的精度衰减也是因素之一。
对 RAG 的影响: 如果把多个检索片段拼接成上下文,关键信息放在中间段落时,模型很可能"视而不见"。
缓解策略:
- 重排序:将最相关的文档片段放在上下文开头和结尾
- 减少上下文长度:只保留最相关的 3-5 个片段,而非堆砌 20+ 个
- 结构化输入:用明确的标记(如 [Context 1], [Context 2])分隔不同片段
- 多轮生成:先让模型总结各片段要点,再基于总结生成答案
Q24:[来源:知乎/卡码笔记][2026-04] MCP(Model Context Protocol)和 Function Calling 有什么本质区别?
考察点
对 2026 年最新工具调用标准 MCP 的理解深度,以及与已有 Function Calling 机制的对比分析能力。
解答思路
- 解释 Function Calling 的本质:LLM 原生能力,模型直接输出结构化调用指令
- 解释 MCP 的本质:标准化通信协议,定义了 Client-Server 之间的交互规范
- 从架构、部署、生态三个维度对比
参考答案
Function Calling 的本质: 是 LLM 的内置能力——模型在训练时学习了结构化输出模式,能根据用户输入和工具描述(JSON Schema)生成工具调用指令。它不涉及通信协议,只是模型的一种输出格式。流程:用户输入 → LLM 决定调用工具 → 输出 JSON → 宿主程序解析 JSON → 执行工具 → 结果返回 LLM。
MCP 的本质: 是一个通信协议标准——定义了 AI 应用(Client)与工具服务(Server)之间如何通过 JSON-RPC 进行通信。它解决了 Function Calling 在规模化时的工程痛点:每个工具都需要手动编写适配代码,10 个工具就要写 10 套对接逻辑。
核心差异对比:
| 维度 | Function Calling | MCP |
|---|---|---|
| 定位 | LLM 输出格式 | 工具通信协议标准 |
| 实现 | 依赖模型训练 | 标准化接口,任何模型可用 |
| 工具接入 | 每次新增工具需改代码 | 实现 MCP Server 即可,零代码改动 |
| 发现能力 | 工具描述写在 Prompt 里 | 支持动态工具发现(tools/list) |
| 生态 | 各模型厂商各自实现 | 一次接入,跨模型复用 |
| 权限管理 | 由宿主程序自行处理 | 协议层支持鉴权和沙箱隔离 |
生产实践建议: 1-5 个工具场景用 Function Calling 足够简单;10+ 工具或需要跨项目复用时,MCP 的工程优势显著。
加分项: 提到 MCP 基于 JSON-RPC 2.0 协议,支持 stdio 和 SSE 两种传输方式。stdio 适合本地进程间通信,SSE 适合远程服务调用。MCP 还支持 Resources(获取上下文数据)和 Prompts(预定义交互模板)两种能力,不仅是工具调用。
Q25:[来源:知乎/卡码笔记][2026-04] A2A(Agent-to-Agent)协议是什么?和 MCP 的关系是什么?
考察点
对 2026 年新兴 Agent 通信标准的了解,以及协议间的互补关系分析。
解答思路
- 定义 A2A 协议的目的和解决的问题
- 对比 MCP(Client-Server 工具调用)和 A2A(Agent 间对等通信)
- 说明两者如何协同工作
参考答案
A2A 协议: Google 主导推出的 Agent 间通信标准,定义了独立的 AI Agent 之间如何发现和协作。它解决的是 MCP 无法覆盖的场景——两个独立的 Agent 服务(可能属于不同组织、运行在不同基础设施上)需要跨网络进行任务委托和结果交换。
MCP 与 A2A 的关系:互补而非替代。
| 维度 | MCP | A2A |
|---|---|---|
| 通信模式 | Client-Server(主从) | Agent-to-Agent(对等) |
| 信任边界 | 同一应用内部 | 跨应用、跨组织 |
| 典型场景 | Agent 调用内部工具(数据库、API) | Agent A 委托 Agent B 完成子任务 |
| 身份验证 | 进程内或 API Key | 需要跨域身份认证 |
| 工具发现 | tools/list | AgentCard 发布能力声明 |
比喻: MCP 像是"公司内部的工作流程"(你调用公司的打印机、数据库),A2A 像是"公司之间的商务合作"(你的公司委托另一家公司提供服务)。
为什么 MCP 解决不了 A2A 的问题: - MCP 假设 Server 是受信任的工具服务,不具备 Agent 的自主决策能力 - A2A 需要支持任务委派、进度回调、部分结果返回等复杂交互 - A2A 需要处理跨域安全、服务发现、能力协商等分布式系统问题
加分项: 提到 2026 年的趋势是 MCP + A2A 组合使用——Agent 通过 MCP 管理内部工具,通过 A2A 与外部 Agent 协作,形成完整的 Agentic 生态。
Q26:[来源:知乎/卡码笔记][2026-04] Skills 是什么?和 System Prompt、Few-shot 有什么区别?
考察点
对 Agent 能力扩展机制的理解,以及不同知识注入方式的适用场景判断。
解答思路
- 定义 Skills 的概念和存储形式
- 对比 System Prompt、Few-shot、Skills 的差异
- 说明各自的适用场景
参考答案
Skills 的本质: 是 Agent 的可复用能力包——通常以 Markdown 文件形式定义,包含场景描述、触发条件、可用工具、执行步骤和约束规则。当用户输入匹配 Skills 的触发条件时,Agent 自动加载该 Skill 的完整上下文,获得特定领域的专业能力。
三者对比:
| 维度 | System Prompt | Few-shot | Skills |
|---|---|---|---|
| 内容 | 角色设定 + 全局规则 | 输入-输出示例 | 完整的能力定义(触发+工具+步骤) |
| 加载时机 | 会话开始时一次性加载 | 作为 Prompt 示例嵌入 | 按触发条件动态加载 |
| 作用域 | 整个会话 | 仅影响当前请求的生成 | 激活后影响后续多步执行 |
| 灵活性 | 静态,修改需重启 | 静态 | 动态,可按需启用/禁用 |
| 规模 | 较小(几百 token) | 中等(每个示例 100-500 token) | 较大(可达数千 token) |
适用场景: - System Prompt:定义 Agent 的"人格"和全局行为准则 - Few-shot:纠正模型的输出格式或风格偏好 - Skills:赋予 Agent 完成特定领域任务的完整能力(如"邮件处理 Skill"包含邮件解析、模板匹配、发送工具调用等一整套流程)
安全风险: Skills 没有进程隔离——如果 Skill 文件被篡改,Agent 会忠实地执行恶意指令。因此需要 Skill 的版本控制、签名验证和权限审查。
Q27:[来源:53AI/CSDN][2026-04] LoRA+、DoRA、PiSSA 等进阶方法与基础 LoRA 的差异是什么?
考察点
对参数高效微调技术前沿发展的跟踪,以及不同 LoRA 变体的选型能力。
解答思路
- 简述每种方法的核心创新
- 对比效果和复杂度
- 给出选型建议
参考答案
LoRA+: 对 LoRA 的 A 矩阵和 B 矩阵使用不同的学习率(B 矩阵学习率是 A 的 16 倍)。理论基础:B 矩阵的梯度范数远大于 A,统一学习率会导致 B 更新过快。效果:训练速度提升 2 倍,最终效果提升 0.5-1%。
DoRA(Weight-Decomposed Low-Rank Adaptation): 将权重分解为幅度(magnitude)和方向(direction)两个分量,分别进行适配。公式:W = m · V / ||V||,其中 m 是可训练的幅度向量,V 是低秩方向矩阵。优势:比 LoRA 更接近全量微调的效果,特别是在复杂推理任务上。
PiSSA(Principal Singular Values and Vectors Adaptation): 用 SVD 分解初始化 LoRA 的 A 和 B 矩阵,而非随机初始化。保留预训练权重的主要奇异值和奇异向量,使 LoRA 从一开始就沿着最重要的方向学习。优势:收敛速度更快(通常少 30-50% 训练步数),最终效果更好。
对比总结:
| 方法 | 核心创新 | 训练速度 | 效果提升 | 实现复杂度 |
|---|---|---|---|---|
| LoRA | 低秩矩阵注入 | 基准 | 基准 | 低 |
| LoRA+ | 差异化学习率 | 2x 快 | +0.5-1% | 低 |
| DoRA | 幅度-方向分解 | 1x | +1-2% | 中 |
| PiSSA | SVD 初始化 | 收敛更快 | +1-2% | 中 |
选型建议: 简单任务 LoRA+ 性价比最高;复杂推理任务选 DoRA 或 PiSSA;追求极致效果的可以用 DoRA+PiSSA 组合。
Q28:[来源:53AI/CSDN][2026-04] 什么是 Catastrophic Forgetting(灾难性遗忘)?微调中如何缓解?
考察点
对大模型微调中经典问题的理解和解决方案积累。
参考答案
Catastrophic Forgetting 指模型在学习新任务时,遗忘之前学到的知识的现象。根本原因:神经网络的所有参数在训练新数据时被更新,旧知识对应的权重被覆盖。
缓解策略:
| 策略 | 原理 | 适用场景 |
|---|---|---|
| Rehearsal Buffer | 保留一部分旧数据,每次训练时混合新旧样本一起训练 | 持续学习/增量微调 |
| LoRA/PEFT | 冻结基座权重,只训练少量新增参数,不破坏原始知识 | 任何微调场景 |
| 弹性权重固化(EWC) | 对重要参数施加更大的正则化约束,防止其大幅变化 | 多任务学习 |
| 学习率衰减 | 使用极低学习率(1e-5 以下),避免参数剧烈变化 | 领域适配 |
| 梯度裁剪 | 限制单步梯度幅度,防止过大的参数更新 | 所有微调 |
生产实践: LoRA/QLoRA 是缓解灾难性遗忘最简单有效方案——冻结的基座权重不会被修改,旧知识天然保留。如果需要多任务,只需保存多个 LoRA 适配器并在推理时切换。