跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言NuctAI算法

大模型面试题整理:RAG、SFT、RLHF 与核心架构

整理了大模型面试里最常见的一组高频题:RAG 的流程、外挂知识库的价值、检索和生成效果评估、幻觉与复读机的成因和处理办法,以及 LLaMA、ChatGLM、LoRA、SFT、RLHF、DeepSpeed、混合精度、KV Cache、FlashAttention 等核心概念。内容重点放在这些方案各自解决什么问题、代价是什么,以及工程上常见的取舍。

林间仙子发布于 2026/6/300 浏览
大模型面试题整理:RAG、SFT、RLHF 与核心架构

大模型面试题整理

1. RAG 的整体流程

检索增强生成(Retrieval-Augmented Generation, RAG)这套方案,本质上是把'模型会说'和'知识能查'拼到一起。流程并不复杂,但每一步都能影响最后效果:

  1. 数据预处理:先把原始数据里的噪声、重复内容和脏数据清掉。
  2. 分块(Chunking):这一步通常最容易被低估。切得太细,语义断裂;切得太粗,检索粒度又会变差。常见做法有固定长度分块、语义分块。
  3. 文本向量化:把文本块编码成向量。
  4. Query 向量化:把用户问题也转成向量。
  5. 向量检索:在向量数据库里找 Top-K 相似内容。
  6. 重排(Rerank):用更精细的模型重新排序,通常能把前面的'凑数结果'筛掉。
  7. 输入 LLM:把 Query 和检索结果一起拼进 Prompt。
  8. 输出回答:模型根据上下文生成最终结果。

2. 外挂知识库主要解决什么

纯参数化模型有几个绕不开的限制:训练完知识就固定了,遇到冷门领域容易答偏,回答来源也不好追。外挂知识库就是拿来补这些短板的。

  • 解决知识截止问题
  • 降低幻觉概率
  • 覆盖垂直领域知识
  • 让回答更容易追溯和审计

如果场景里'准确'比'流畅'更重要,RAG 往往比单纯让大模型硬答更稳。

3. 怎么看 RAG 项目的效果

我一般会把评估拆成两段看:检索有没有把料找对,生成有没有把话说对。

检索环节

  • MMR (Maximal Marginal Relevance):看相关性和多样性的平衡
  • Hits Rate:前 K 条里有没有命中正确答案
  • NDCG (Normalized Discounted Cumulative Gain):更看重排序位置

生成环节

  • 非量化指标:完整性、正确性、相关性、流畅度
  • 量化指标:Rouge-L、BLEU 等

现实里只看一个指标很容易误判。检索分高,不代表生成就稳;生成分看着高,也可能只是句子更顺。

4. 幻觉问题和复读机问题是什么

  • 幻觉问题:模型说得像真的,但其实和事实不符,或者和给定上下文对不上。
  • 复读机问题:长文本生成时开始打转,反复输出相同词组或句子。

这两个问题看起来不一样,底层都和模型在'该信什么、该停哪儿'这件事上不够稳定有关。

5. 幻觉和复读机怎么处理

幻觉

  • 接入高质量知识库
  • 加输出约束,比如格式校验
  • 控制输出长度,减少发散
  • 用 CoT 提示引导推理路径

复读机

  • 清理训练数据里的重复文本
  • 做适度的数据增强
  • 调高 Temperature,别让生成太死
  • 加后处理,发现重复就截断

6. 这两个问题一般怎么来的

幻觉的来源

  1. 训练数据和源数据不一致:模型学到的表示和真实输入对不上,或者解码策略把结果带歪了。
  2. 问题超出模型认知范围:模型不知道,就只能补一个看起来合理的答案。

复读机的来源

  • 数据本身质量差,重复内容太多
  • 文本太长,训练或推理时注意力被冲散
  • Greedy Search 太贪,老是挑局部最优 Token,最后容易陷进循环

7. 目前主流的开源大模型架构

开源生态里讨论最多的还是 Meta 的 LLaMA 系列。它基于 Transformer,但做了几处比较实用的改动:

  • RMSNorm:前置归一化,替代 LayerNorm,训练更稳
  • SwiGLU:用门控激活替换 ReLU,表达能力更强
  • RoPE:用旋转位置编码替代绝对位置嵌入
  • 高效 Attention 实现:减少显存和计算浪费

这些改动单看都不算颠覆,但叠在一起,训练和推理体验会顺很多。

8. SFT 常见的微调方法

  • 全微调(Full Fine-tuning):更新全部参数,效果通常最好,代价也最大
  • Adapter Tuning:插入小模块,主模型参数冻结
  • Prefix Tuning / Prompt Tuning:在输入侧加可学习向量,不动原权重
  • P-Tuning v1/v2:连续提示微调
  • LoRA (Low-Rank Adaptation):低秩适配,算是现在最常见的高效微调方案
  • RLHF:严格说不属于 SFT,但经常一起被问

SFT 时学习率通常会比预训练阶段低很多,常见经验是大概预训练阶段的 10%。 这个值不是死规则,但开大了通常更容易把基座模型冲坏。

9. LoRA 是怎么工作的

LoRA 的思路很直接:不直接改原来的大矩阵,而是在旁边加一条低秩分支,用两个小矩阵去近似参数更新。

  • 公式:$W' = W + BA$,其中 $A \in R^{r \times d}$,$B \in R^{d \times r}$,且 $r \ll d$
  • 初始化:A 用随机高斯分布初始化,B 用零矩阵初始化,这样一开始旁路不影响主模型
  • 优势:主模型参数冻结,只训练 A 和 B,显存和计算量都会明显下降
# LoRA 核心逻辑示意
import torch.nn as nn

class LoRALayer(nn.Module):
    def __init__(self, in_features, out_features, rank):
        super().__init__()
        self.lora_A = nn.Linear(in_features, rank, bias=False)
        self.lora_B = nn.Linear(rank, out_features, bias=False)
        # 初始化策略...

10. RAG 检索阶段常见的向量检索模型

  • ANN 算法:近似最近邻,速度和精度之间做平衡
  • Product Quantization:压缩向量,减少检索成本
  • Brute Force:小规模数据还能用,结果最准确,但不便宜
  • HNSWlib:层次导航小世界图,实际工程里很常见
  • KD 树:更适合低维空间

11. 通用 RAG 可以从哪些地方改

  • Query 侧优化:纠错、改写、规范化、扩展,比如 HyDE
  • 索引优化:层次索引、分层召回,提高速度和召回质量
  • 模型微调:针对垂直领域调优 LLM
  • 后处理:对输出做合理性检查,过滤明显不合逻辑的结果

这类优化里,Query 侧和检索侧通常最先见效,改起来也最划算。

12. LangChain 是什么

LangChain 可以理解成一套给大模型应用做编排的框架。它把 Prompt、记忆、检索、工具调用这些东西封装成组件,开发时不用每次都从头搭。

它和 TensorFlow / PyTorch 不完全是一类东西,但在'把很多零散能力串起来'这件事上,定位有点像应用层的积木框架。

13. LangChain 常用模块

  • Document Loaders:文档加载器,支持 PDF、TXT、Web 等
  • Text Splitters:文本分块
  • Embeddings:向量化服务,比如 HuggingFace
  • Vector Stores:向量存储后端,比如 Chroma、FAISS、Milvus
  • Chains:链式编排,比如 RetrievalQA

14. SFT 和 RLHF 的差别

  • SFT (Supervised Fine-Tuning)
    • 优点:收敛快、成本低、能把输出格式调顺
    • 缺点:依赖标注质量,难学到细粒度偏好
  • RLHF (Reinforcement Learning from Human Feedback)
    • 优点:更容易对齐人类偏好,安全性和有用性通常更好
    • 缺点:训练不稳定,成本高,还要额外训练 Reward Model

如果只是想把模型调成'按指令办事',SFT 往往够用;如果要继续把偏好和安全边界往前推,才会考虑 RLHF。

15. RLHF 的流程

RLHF 一般分三步:

  1. SFT 阶段:先让模型学会基本的指令遵循
  2. Reward Model 训练:收集人类对不同回答的偏好,训练奖励模型打分
  3. PPO 优化:用近端策略优化,根据奖励信号更新策略模型

做完这套之后,模型不只是'会说',还会尽量往人更喜欢的表达方式上靠。

16. 训练 OOM 时常用的优化手段

  • 梯度累积:用更小的 batch 模拟大 batch
  • 混合精度训练:FP16 / BF16 降显存
  • ZeRO 优化:DeepSpeed 的显存切分方案
  • 分布式训练:多卡分摊负载
  • 减小批量大小:最朴素,但通常最先能跑起来
  • 优化数据加载:减少内存驻留和等待时间

17. LLaMA 的输入能无限长吗

不能。

原因很现实:

  • Attention 的复杂度会随着序列长度快速上升
  • 训练时长序列更容易把优化搞不稳
  • 推理时上下文越长,显存和错误累积压力都更大

所以'理论上能塞多少'跟'工程上能不能跑得住'不是一回事。

18. 想让大模型处理更长文本,通常怎么做

  • 分块处理:把长文本切开,必要时加重叠窗口
  • 架构升级:用稀疏 Attention 等方法降低成本
  • 位置编码优化:用 RoPE 这类更适合外推的编码方式

19. 推理时显存里通常有什么

  1. 模型参数:权重本身
  2. 输入数据:Prompt 的 Embedding
  3. 中间计算结果:最关键的是 KV Cache
  4. 内存管理策略:有些框架会延迟释放显存,换一点性能和更少的频繁分配

推理阶段里,KV Cache 往往才是真正吃显存的地方。

20. ChatGLM 的特点

ChatGLM 的基座是 GLM,兼具 Encoder 和 Decoder 的能力。

  • Mask 方式
    • [mask]:类似 BERT,随机 Mask 短 Span
    • [gmask]:更接近 GPT,用于生成任务
  • 结构变化
    • 位置编码改成 RoPE
    • 激活函数从 GeLU 走到 GLU,再到 ChatGLM2 的 SwiGLU
    • Normalization 从 LayerNorm 到 DeepNorm,再到 RMSNorm
  • ChatGLM 2.0 新特性
    • FlashAttention:减少 IO 开销
    • Multi-Query Attention:共享 KV 头,显存占用更低

21. GLU 和 SwiGLU

  • GLU (Gated Linear Unit):通过门控机制筛选信息,常见形式是 $x \otimes \sigma(Wx)$
  • SwiGLU:把 Swish 激活和 GLU 结合起来,形式上可以写成 $x \otimes \text{Swish}(Wx)$

从工程上看,SwiGLU 的吸引力很简单:通常更强一点,但代价并不夸张。

22. LLaMA 1 和 LLaMA 2 的差别

  • 数据规模:Llama 1 是 1.4T tokens,Llama 2 是 2.0T tokens
  • 上下文长度:Llama 1 为 2k,Llama 2 为 4k
  • 架构细节
    • 位置编码都用 RoPE
    • Llama 1 用 LayerNorm,Llama 2 用 RMSNorm
    • 激活函数都采用 SwiGLU

23. 训练和推理分别占多少显存

  • 训练:通常大约是模型参数量的 16 倍左右,FP16 场景下尤其明显
  • 推理:大约是模型参数量的 2 倍左右,主要由 FP16 权重和 KV Cache 构成

这个比例不是放之四海皆准,但拿来做容量估算已经够用了。

24. DeepSpeed 的核心机制

DeepSpeed 本质上是在数据并行的基础上,把显存和通信拆开处理。

Ring All-Reduce

传统 Parameter Server 容易卡在单点上。Ring All-Reduce 把通信压力摊到各个 GPU,整体吞吐会更好。

ZeRO 分阶段优化

  • Zero1:分割 Adam 参数,Forward 基本不受影响,Gradient 需要 All-Reduce
  • Zero2:分割 Adam 和 Gradient,进一步减少通信量
  • Zero3:参数、Adam、Gradient 全部分割,Forward 时需要 All-Gather 参数,Backward 时再释放不属于本卡的部分。通讯开销大概比 Zero2 高一些,但显存节省更明显

ZeRO-Offload

在 Zero2 的基础上,把 Adam 和 Gradient 卸载到 CPU 内存,继续压 GPU 显存。

25. 什么是混合精度训练

混合精度训练就是同时利用 FP16 和 FP32:

  • FP16:占用更小,速度更快,Tensor Core 也更友好
  • FP32:精度更高,避免数值溢出

关键点一般有三个:

  1. 权重备份(Weight Backup):保留一份 FP32 主权重
  2. 损失放大(Loss Scaling):防止 FP16 下梯度太小被直接舍掉
  3. 精度累加:梯度累加时尽量用 FP32

26. Prefix LM 和 Causal LM

  • Prefix LM:前缀部分双向可见,输出部分单向生成。常见于 ChatGLM、U-PaLM 这类模型
  • Causal LM:严格自回归,只能从左到右看上下文。LLaMA、Qwen 属于这一类

这两个概念很容易被写错,很多资料里还会把 Causal 拼成 Casual,但意思完全不是一回事。

27. MHA 之后常见的计算优化

  • KV Cache:缓存 Key 和 Value,避免重复算历史 Token
  • MQA (Multi-Query Attention):多个 Head 共享同一组 KV,显存占用更低
  • GQA (Grouped-Query Attention):按组共享 KV,兼顾性能和显存
  • FlashAttention:把 Q、K、V 分块,减少对 HBM 的访问,缓解 IO 瓶颈

28. 常见 Attention 计算方式

  • Self-Attention:序列内部 token 之间互相作用
  • Cross-Attention:不同序列之间交互,比如 Encoder-Decoder
  • DIN Attention:Deep Interest Network 里的注意力形式,不走 Softmax 归一化,更强调原始信号强度

结尾

面试里问大模型,很多题看上去分散,其实绕不开几条主线:检索怎么做,微调怎么省,训练怎么稳,推理怎么扛。把 RAG、LoRA、DeepSpeed、Attention 这些底层概念吃透,比背一串名词有用得多。真正落到工程上,大家最后拼的也不是'知道多少术语',而是能不能判断哪一步该省,哪一步不能省。

目录

  1. 大模型面试题整理
  2. 1. RAG 的整体流程
  3. 2. 外挂知识库主要解决什么
  4. 3. 怎么看 RAG 项目的效果
  5. 检索环节
  6. 生成环节
  7. 4. 幻觉问题和复读机问题是什么
  8. 5. 幻觉和复读机怎么处理
  9. 幻觉
  10. 复读机
  11. 6. 这两个问题一般怎么来的
  12. 幻觉的来源
  13. 复读机的来源
  14. 7. 目前主流的开源大模型架构
  15. 8. SFT 常见的微调方法
  16. 9. LoRA 是怎么工作的
  17. LoRA 核心逻辑示意
  18. 10. RAG 检索阶段常见的向量检索模型
  19. 11. 通用 RAG 可以从哪些地方改
  20. 12. LangChain 是什么
  21. 13. LangChain 常用模块
  22. 14. SFT 和 RLHF 的差别
  23. 15. RLHF 的流程
  24. 16. 训练 OOM 时常用的优化手段
  25. 17. LLaMA 的输入能无限长吗
  26. 18. 想让大模型处理更长文本,通常怎么做
  27. 19. 推理时显存里通常有什么
  28. 20. ChatGLM 的特点
  29. 21. GLU 和 SwiGLU
  30. 22. LLaMA 1 和 LLaMA 2 的差别
  31. 23. 训练和推理分别占多少显存
  32. 24. DeepSpeed 的核心机制
  33. Ring All-Reduce
  34. ZeRO 分阶段优化
  35. ZeRO-Offload
  36. 25. 什么是混合精度训练
  37. 26. Prefix LM 和 Causal LM
  38. 27. MHA 之后常见的计算优化
  39. 28. 常见 Attention 计算方式
  40. 结尾
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Open3D.Art 生成模型到拓竹打印的实用流程
  • Python 3.11 新特性:性能、异常与类型系统的变化
  • CoPaw 部署与定制实操笔记
  • IntelliJ IDEA 2026.1 EAP:Java 26、Spring Boot 4 与 Gradle 9 适配
  • 用 WebGIS 和百度天气做一个复古天气预报页
  • YOLOv8 无人机道路病害识别的工程落地思路
  • 双指针滑动窗口:4 道经典题的思路拆解
  • NWPU VHR-10 遥感目标检测与 YOLO 实践
  • 老龄化压力下护理机器人的发展与分化
  • 文心一言 4.5:中文能力实测与本地部署记录
  • 在 WSL2 上部署 OpenClaw 的实操记录
  • Oh My Open Code:把单模型 IDE 变成多模型协作系统
  • 大语言模型词表裁剪的实现思路与代码
  • Vue 3 常用编程技巧整理
  • 在 Ubuntu 22.04 上部署 llama.cpp 和 llama-server
  • 大模型智能体做社会模拟时,真正难在哪
  • Pencil.dev 安装与实战:在 VS Code 里做设计
  • ThinkPHP 8 多应用架构搭建与落地要点
  • PaddleNLP 3.0:大模型训推一体与多硬件适配实践
  • TurboQuant 与 RWKV-6:大模型部署的两条降本路线

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online