大模型 / RAG / Agent 面试高频题

大模型 / RAG / Agent 面试基础高频题

前言

这篇文章《大模型 / RAG / Agent 面试基础高频题》,适合准备以下方向:

  • 大模型应用开发
  • RAG
  • Agent
  • AI Coding
  • LLM 工程化
  • 大模型微调
  • 算法 / NLP / 推荐等相关岗位

第一层:项目介绍

(这里主要是介绍自己的项目,这里就不给出标准答案了)

1. 如何介绍你做过的 AI 项目?

记得这么回答就好:

  • 项目背景:为什么要做这个项目
  • 技术方案:用了 RAG、Agent、微调还是纯 prompt
  • 技术链路:数据怎么进来,模型怎么处理,结果怎么出去
  • 核心难点:不要说"工作量大",要说技术难点
  • 指标结果:准确率、召回率、延迟、成本、人工节省等
  • 个人贡献:明确说"我负责什么",不要只说"我们团队做了什么"

2. 项目的核心难点是什么?

项目难点常见有几类:

  • 数据难:数据脏、重复、不完整、格式混乱
  • 检索难:找不到真正相关资料
  • 生成难:模型会编、会漏、会答非所问
  • 评测难:不知道系统到底有没有变好
  • 工程难:延迟高、成本高、并发差、稳定性不足
  • 业务难:技术指标提升了,但用户不一定觉得有用

3. 技术选型为什么这样做?

面试官问选型,主要想看你有没有 trade-off 思维。

你需要能比较:

  • RAG vs 微调
  • 向量检索 vs BM25
  • 大模型 vs 小模型
  • API 调用 vs 私有部署
  • 准确率 vs 成本
  • 效果 vs 延迟
  • Demo 能跑 vs 生产可用

4. 项目中踩过哪些坑?怎么解决?

讲踩坑时不要泛泛而谈,要具体。

常见可讲的坑:

  • chunk 切太小,语义不完整
  • chunk 切太大,噪声太多
  • 只用向量召回,漏掉关键词
  • top-k 太大,上下文太乱
  • prompt 没有限制,模型自由发挥
  • 没有评测集,优化靠感觉
  • 线上延迟高,成本不可控

RAG 高频题 (现在开始详细回答)

5. RAG 是什么?

标准答案

RAG 是 Retrieval-Augmented Generation,检索增强生成。它的核心思想是:模型回答问题前,先从外部知识库检索相关资料,再基于这些资料生成答案。

RAG 可以解决大模型知识过时、无法访问私有数据和容易幻觉的问题。它常用于企业知识库问答、智能客服、文档助手、法律/医疗/金融资料问答等场景。

小学生版

普通大模型像"凭记忆答题"。

RAG 像"先查书,再答题"。

查到正确资料以后,回答就更可靠。

基础知识

理解 RAG 需要知道:

  • LLM:大语言模型,负责理解和生成
  • 外部知识库:文档、网页、数据库、PDF 等
  • 检索:从知识库里找相关内容
  • 生成:让模型基于检索内容回答
  • 幻觉:模型编造看似合理但不真实的内容

6. RAG 的整体流程是什么?

标准答案

RAG 的流程通常是:

用户输入 query,系统先对 query 做清洗或改写,然后将 query 转成 embedding 向量,在向量库中进行召回,也可以结合 BM25 做混合召回。召回结果经过 rerank 重新排序后,选出最相关的 chunk,拼接到 prompt 中,最后交给 LLM 生成答案。

完整链路是:

Query → Query Rewrite → Embedding → Retrieval → Rerank → Context Construction → LLM Generation

小学生版

用户问问题后,系统先理解问题,再去资料库里找最相关的几页,把这几页交给机器人,机器人再根据资料回答。

基础知识

RAG 关键模块:

  • Query:用户问题
  • Query Rewrite:问题改写,让检索更准
  • Embedding:把文本变成向量
  • Vector DB:存储向量的数据库
  • Retrieval:召回相关文档
  • Rerank:重新排序
  • Context:拼给模型看的参考资料
  • Generation:模型生成答案

7. 文档 chunk 是什么意思?

标准答案

chunk 是指在 RAG 系统中,把长文档切分成较小的文本片段,方便后续 embedding、检索和上下文组装。

chunk 太大,会引入太多无关信息,浪费 token,并干扰模型回答;chunk 太小,语义可能不完整,模型拿到后缺少上下文。实际项目中一般优先按语义边界切分,例如标题、段落、小节,而不是机械按固定字数切。必要时可以加入 overlap 或父子分块。

小学生版

chunk 就是把一本很厚的书切成很多小纸条。

用户问问题时,不用把整本书都给机器人,只要找到最相关的几张纸条给它看。

纸条太大,废话太多。

纸条太小,意思不完整。

基础知识

要懂 chunk,需要知道:

  • 文档可能很长,不能全部塞给模型
  • 大模型有上下文窗口限制
  • 检索系统通常以 chunk 为单位召回
  • chunk 的质量会直接影响 RAG 效果

常见切分方式:

  • 按固定字数切
  • 按段落切
  • 按标题 / 小节切
  • 按语义切
  • 代码按函数切
  • 表格尽量保持完整

常见优化:

  • overlap:相邻 chunk 保留重叠内容
  • 父子分块:小块负责检索,大块负责生成
  • metadata:保留标题、页码、来源等信息

8. chunk 大小怎么选?

标准答案

chunk 大小没有固定答案,要根据文档类型、任务需求、模型上下文和检索效果决定。原则是保证语义完整,同时减少无关噪声。

如果 chunk 太大,召回结果可能包含大量无关信息,影响生成;如果 chunk 太小,可能丢失上下文。实际项目中可以从一个中等大小开始,通过 Recall@K、人工评测和生成质量不断调整。

小学生版

切蛋糕不能太大,也不能太小。

太大吃不下,里面还有不想吃的部分。

太小看不出它原来是什么蛋糕。

最好的大小是:一块刚好表达一个完整意思。

基础知识

选择 chunk size 要考虑:

  • 文档类型:说明书、论文、代码、表格都不同
  • query 类型:用户问的是细节还是总结
  • embedding 模型能力
  • LLM 上下文长度
  • top-k 数量
  • 是否使用 rerank
  • 是否使用父子分块

9. 向量召回是什么?

标准答案

向量召回是指将用户问题和文档 chunk 都转成 embedding 向量,然后通过相似度计算找出语义最接近的文档片段。

它的优势是能处理同义表达和语义相似问题。比如用户问"怎么申请年假",文档写的是"如何提交带薪休假申请",虽然关键词不完全一样,但向量召回仍然可能找到它。

小学生版

向量召回像"理解意思"。

你问"怎么请年假",它知道"带薪休假申请"差不多是同一个意思。

基础知识

要懂向量召回,需要知道:

  • embedding:把文本变成一串数字
  • 向量空间:语义相近的文本,向量距离更近
  • 相似度:常见是余弦相似度
  • 向量库:专门存储和搜索向量的数据库

向量召回适合:

  • 同义词
  • 口语化问题
  • 语义相近但词不同的场景
  • 模糊搜索

缺点:

  • 对精确关键词、编号、专有名词可能不够敏感
  • embedding 模型质量很关键

10. BM25 是什么?

标准答案

BM25 是一种经典的关键词检索算法。它根据 query 中的词在文档中出现的情况、词的重要性和文档长度等因素,为文档计算相关性分数。

BM25 擅长处理关键词精确匹配,尤其适合专业术语、英文缩写、编号、函数名、产品名等场景。

小学生版

BM25 像"找一模一样的词"。

你问 PagedAttention,它就去文档里找哪里出现了 PagedAttention。

基础知识

BM25 主要考虑:

  • 词频 TF:词在文档中出现多少次
  • 逆文档频率 IDF:这个词是不是有区分度
  • 文档长度归一化:避免长文档天然占便宜

BM25 适合:

  • 精确关键词
  • 专业名词
  • 编号
  • API 名称
  • 错别字较少的搜索场景

BM25 不擅长:

  • 同义改写
  • 语义理解
  • 用户表达和文档表达差异很大的场景

11. 为什么 RAG 常用向量召回 + BM25 混合召回?

标准答案

因为向量召回和 BM25 各有优势。向量召回擅长语义匹配,能找到表达不同但意思相近的内容;BM25 擅长关键词精确匹配,能抓住专有名词、缩写、编号等强关键词。

实际 RAG 系统中,单独用向量召回可能漏掉关键词强相关文档,单独用 BM25 又可能找不到同义表达。所以常用 hybrid search,先分别召回,再合并结果,并通过 rerank 重新排序。

小学生版

向量召回会"理解意思"。

BM25 会"找关键词"。

一个聪明,一个认真。

两个一起用,找资料更稳。

基础知识

混合召回流程:

  1. 用户输入 query
  2. 向量召回取 top-k
  3. BM25 召回取 top-k
  4. 合并去重
  5. rerank 重新排序
  6. 选择最终 context 给 LLM

常见问题:

  • 两路召回分数尺度不同,需要融合策略
  • top-k 不能太大,否则上下文噪声增加
  • reranker 对最终质量影响很大

12. Rerank 是什么?

标准答案

Rerank 是指在初步召回一批候选文档后,再用更精细的模型对 query 和候选文档进行相关性打分,并重新排序。

召回阶段追求速度和覆盖率,rerank 阶段追求排序质量。通常先召回较多候选,再通过 rerank 选出最相关的少量 chunk 给 LLM。

小学生版

召回像先从图书馆拿出 20 本可能有用的书。

Rerank 像老师再帮你挑一挑,把最有用的 3 本排到最前面。

基础知识

为什么需要 rerank:

  • 向量召回速度快,但排序不一定最精确
  • BM25 能找关键词,但不理解深层语义
  • LLM 上下文有限,不能塞太多候选
  • 最终放进 prompt 的内容必须尽量准确

Rerank 常见方法:

  • Cross-Encoder reranker
  • BGE reranker
  • LLM-as-reranker
  • 规则 + 模型混合排序

13. Recall@K 是什么?

标准答案

Recall@K 衡量的是:在系统返回的前 K 个结果中,找回了多少真正相关的文档。

公式是:

Recall@K = 前 K 个结果中相关文档数量 / 所有相关文档数量

例如一个问题共有 5 个相关文档,系统 top-10 找回了 4 个,那么 Recall@10 = 4/5 = 0.8。

小学生版

老师让你找 5 张正确卡片。

你前 10 张里找到了 4 张。

那你找回了 80%。

基础知识

Recall@K 关注的是"有没有找回来",不太关心排序是否靠前。

适合评估:

  • 检索覆盖能力
  • RAG 第一阶段召回效果
  • 相关文档是否进入候选集

缺点:

  • 不关心第一个相关文档排第几
  • 不关心最重要文档是否排在前面
  • 只看找回数量,不看排序质量

14. MRR 是什么?

标准答案

MRR 是 Mean Reciprocal Rank,平均倒数排名。它关注第一个相关结果排在第几位。

如果第一个相关文档排第 1,得分是 1;排第 2,得分是 1/2;排第 4,得分是 1/4。多个 query 的得分取平均,就是 MRR。

MRR 适合评估用户通常只看第一个正确结果的场景。

小学生版

正确答案越早出现,分越高。

第一名就是 1 分。

第二名就是 0.5 分。

第四名就是 0.25 分。

基础知识

MRR 关注:

  • 第一个正确结果的位置
  • 排序靠前是否有用
  • 用户能否快速看到正确答案

MRR 不太关注:

  • 后面还有多少相关文档
  • 多个相关文档整体排序是否合理

15. NDCG 是什么?

标准答案

NDCG 是衡量排序质量的指标。它不仅关注相关文档有没有出现,还关注高相关文档是否排在更靠前的位置。

如果最相关的文档排在第一,NDCG 会更高;如果重要文档排得很靠后,分数会下降。相比 Recall@K 和 MRR,NDCG 更适合评估多文档、多相关性等级的排序效果。

小学生版

不只是看你有没有找到参考书,还要看最重要的参考书有没有放在最前面。

最重要的书排第一,分高。

最重要的书排最后,分低。

基础知识

NDCG 需要理解:

  • Gain:文档相关性收益
  • Discount:位置越靠后,收益打折
  • Cumulative Gain:多个结果的累计收益
  • Normalized:和理想排序相比做归一化

NDCG 适合:

  • 多个相关文档
  • 相关程度有强弱
  • 搜索排序质量评估

16. RAG 的核心评测是什么?

标准答案

RAG 评测应分为检索侧、生成侧和端到端三部分。

检索侧看 Recall@K、MRR、NDCG,判断相关文档有没有被找回、排序是否合理。生成侧看答案是否正确、是否忠实于上下文、是否有幻觉、是否完整。端到端看用户问题最终是否被解决。

如果只选最核心的指标,业务上应该看端到端任务成功率;工程排查时必须拆分检索和生成两部分。

小学生版

RAG 像开卷考试。

第一步:有没有翻到正确的书页。

第二步:有没有根据书页答对题。

第三步:用户觉得问题有没有解决。

基础知识

RAG 评测常见维度:

检索侧:

  • Recall@K
  • MRR
  • NDCG
  • Hit Rate

生成侧:

  • 正确性
  • 忠实度
  • 相关性
  • 完整性
  • 幻觉率

端到端:

  • 用户满意度
  • 任务成功率
  • 人工接管率
  • 问题解决率

Agent 高频题

17. Agent 是什么?

标准答案

Agent 是以大语言模型为核心,能够进行任务规划、工具调用、记忆管理和多步执行的智能体。它和普通聊天机器人的区别在于,普通 LLM 主要是回答问题,而 Agent 不仅能回答,还能拆解任务、调用外部工具、观察结果并继续执行。

小学生版

普通机器人只会聊天。

Agent 像一个会办事的小助手:

它会想计划、查工具、记事情、一步一步完成任务。

基础知识

Agent 通常包含:

  • LLM:负责理解和推理
  • Planner:负责计划
  • Tools:外部工具
  • Memory:记忆
  • Executor:执行步骤
  • Reflection:反思和纠错

典型场景:

  • 自动查资料
  • 自动写代码
  • 自动分析表格
  • 自动调用 API
  • 多步任务执行

18. Agent 的核心组件有哪些?

标准答案

Agent 的核心组件包括 LLM、Planner、Memory、Tools、Executor 和 Reflection。

LLM 负责理解任务和推理;Planner 负责任务拆解;Tools 提供外部能力;Memory 保存短期或长期信息;Executor 负责执行动作;Reflection 用于检查结果并纠错。真正的 Agent 关键在于多步循环执行,而不是一次性问答。

小学生版

Agent 就像一个做事团队:

大脑负责想,

计划本负责安排步骤,

工具箱负责干活,

记事本负责记住信息,

检查员负责发现错误。

基础知识

要理解 Agent,需要知道:

  • LLM 本身没有真正访问外部世界的能力
  • 工具调用能让模型查数据库、搜网页、执行代码
  • 多步任务需要状态管理
  • Agent 容易出现循环、跑偏和成本过高
  • 所以需要规划、边界和评估

19. ReAct 是什么?

标准答案

ReAct 是 Reasoning + Acting 的缩写,是一种让大模型边推理边行动的 Agent 框架。它的典型流程是 Thought → Action → Observation → Thought,循环进行,直到得到最终答案。

ReAct 的价值在于把模型的推理过程和工具调用结合起来,让模型可以根据工具返回结果继续思考,而不是一次性凭空回答。

小学生版

ReAct 就像做题时:

先想一想,

再查一下资料,

看看查到什么,

再继续想下一步。

基础知识

ReAct 的核心流程:

  • Thought:模型思考下一步
  • Action:选择工具并传参数
  • Observation:工具返回结果
  • Final Answer:最终回答

适合:

  • 搜索问答
  • 工具调用
  • 多步推理
  • 需要外部信息的任务

常见风险:

  • 思考过程过长
  • 工具调用错误
  • 死循环
  • 观察结果被误解

20. Function Calling 是什么?

标准答案

Function Calling 是让大模型以结构化方式调用外部函数或工具的机制。模型根据用户意图判断是否需要调用函数,并输出函数名和参数,系统再执行对应函数。

它的关键价值是让模型从"只会生成文本"变成"能触发外部动作",例如查天气、查数据库、创建订单、调用搜索接口等。

小学生版

Function Calling 就像机器人知道什么时候该按哪个按钮。

用户问天气,它就按"查天气"按钮。

用户要算钱,它就按"计算器"按钮。

基础知识

Function Calling 需要:

  • 函数定义
  • 参数 schema
  • 模型判断调用哪个函数
  • 系统执行函数
  • 工具结果返回给模型
  • 模型基于结果继续回答

注意:

  • 模型不是真的执行函数
  • 模型只是输出调用意图和参数
  • 真正执行的是外部系统

21. Function Calling 和 MCP 有什么区别?

标准答案

Function Calling 更偏向模型调用具体函数的机制,重点是模型如何输出结构化参数来调用工具。

MCP 是 Model Context Protocol,更像是一套连接模型、工具和数据源的标准协议,目标是让不同模型、不同工具和不同数据源能够以统一方式接入和复用。

简单说,Function Calling 是"怎么调用一个工具",MCP 是"怎么标准化管理一堆工具和上下文资源"。

小学生版

Function Calling 像遥控器上的一个按钮。

MCP 像统一插座标准。

有了统一插座,不同电器都能接进来。

基础知识

要理解两者区别:

Function Calling 关注:

  • 函数名
  • 参数
  • 单次工具调用
  • 模型输出 JSON

MCP 关注:

  • 工具协议
  • 数据源接入
  • 上下文管理
  • 跨模型复用
  • 工具生态标准化

22. 多 Agent 如何协作?

标准答案

多 Agent 协作常见模式有中心化、分层式和讨论式。

中心化模式由一个 Orchestrator 分配任务,多个 Worker 执行;分层式由 Manager 规划,Specialist 处理专业子任务;讨论式让多个 Agent 生成不同方案,再由 Judge 评估汇总。

主要挑战是任务分配、上下文同步、避免死循环、成本控制和防止上下文污染。

小学生版

多 Agent 就像小组做作业。

组长分任务,

有人查资料,

有人写代码,

有人检查答案。

难点是别重复干活,别互相传错消息。

基础知识

多 Agent 需要考虑:

  • 谁负责规划
  • 谁负责执行
  • 信息怎么传递
  • 如何防止循环
  • 如何合并结果
  • 如何控制成本
  • 如何评估每个 Agent 的贡献

常见架构:

  • Orchestrator-Worker
  • Manager-Specialist
  • Debate
  • Reflection
  • Blackboard

23. Agent 的记忆机制怎么设计?

标准答案

Agent 的记忆通常分为短期记忆和长期记忆。短期记忆保存当前对话或任务中的上下文,长期记忆保存历史偏好、事实或经验,通常可以用数据库或向量库实现。

为了避免上下文过长,可以使用滑动窗口、摘要压缩、重要信息抽取和长期记忆检索。为了避免信息污染,需要控制写入规则、来源可信度和记忆更新策略。

小学生版

Agent 的记忆像两种本子:

草稿纸:记当前任务。

笔记本:记长期重要信息。

不能什么都记,不然本子会乱。

基础知识

记忆类型:

  • 短期记忆:当前上下文
  • 长期记忆:历史信息
  • 语义记忆:知识和事实
  • 情景记忆:历史事件
  • 工具记忆:工具执行结果

常见问题:

  • 上下文太长
  • 旧信息过时
  • 错误信息被记住
  • 多 Agent 互相污染

Transformer 高频题

24. Transformer 的核心组件有哪些?

标准答案

Transformer 的核心组件包括 Self-Attention、Multi-Head Attention、Feed Forward Network、Residual Connection、LayerNorm 和 Positional Encoding。

Self-Attention 用于建模 token 之间的关系;Multi-Head Attention 让模型从不同子空间关注信息;FFN 对每个位置做非线性变换;Residual 和 LayerNorm 稳定训练;Positional Encoding 提供位置信息。

小学生版

Transformer 像一个班级讨论系统。

每个词都会看看其他词,判断谁和自己关系最大,然后重新理解整句话。

基础知识

Transformer 解决的是序列建模问题。

它和 RNN 不同:

  • RNN 一个词一个词处理
  • Transformer 可以并行处理
  • Attention 让每个 token 直接看其他 token
  • 更适合大规模训练

核心模块:

  • Attention:看谁重要
  • FFN:加工信息
  • LayerNorm:稳定数值
  • Residual:保留原信息
  • Position:告诉模型顺序

25. Self-Attention 是什么?

标准答案

Self-Attention 是一种让序列中每个 token 都能关注其他 token 的机制。每个 token 会生成 Q、K、V 三个向量,Q 表示"我想找什么",K 表示"我能提供什么",V 表示"我的具体信息"。

计算时,用 Q 和 K 计算相似度,经过 softmax 得到注意力权重,再对 V 加权求和,得到新的 token 表示。

公式是:

Attention(Q,K,V)=softmax(QK^T / sqrt(d_k))V

小学生版

一个词会问:

这句话里谁对我最重要?

然后它给重要的词更高分,给不重要的词低分,最后把大家的信息加起来。

基础知识

要懂 Self-Attention,需要知道:

  • token:模型处理文本的单位
  • embedding:token 的向量表示
  • Q:Query,查询
  • K:Key,键
  • V:Value,值
  • softmax:把分数变成概率
  • 加权求和:重要的信息占比更大

为什么除以 sqrt(d_k):

  • 防止 QK 点积过大
  • 避免 softmax 后分布太极端
  • 让训练更稳定

26. Multi-Head Attention 是什么?

标准答案

Multi-Head Attention 是将 attention 分成多个 head 并行计算,每个 head 在不同子空间学习不同关系,最后再拼接起来。

这样模型可以同时关注不同类型的信息,比如语法关系、指代关系、位置关系和语义关系。相比单头注意力,多头注意力表达能力更强。

小学生版

一个老师看作文,可能只看语法。

多个老师一起看,有人看语法,有人看意思,有人看逻辑,有人看错别字。

Multi-Head Attention 就像多个老师一起看一句话。

基础知识

需要知道:

  • d_model:模型隐藏维度
  • head 数量:注意力头个数
  • d_head:每个头的维度
  • 拼接 concat
  • 线性变换

常见计算:

如果 d_model = 768,head = 12,

那么每个 head 维度是 768 / 12 = 64。


27. 为什么 Self-Attention 复杂度是 O(n²)?

标准答案

因为 Self-Attention 中,每个 token 都要和序列中的其他所有 token 计算相关性。序列长度是 n,那么需要计算 n × n 个 token 对之间的注意力分数,所以复杂度是 O(n²)。如果考虑隐藏维度 d,则 QK^T 的复杂度约为 O(n²d)。

小学生版

班里有 n 个同学,每个人都要和全班每个人打一次招呼。

人数越多,打招呼次数增长得特别快。

基础知识

需要知道:

  • n 是序列长度
  • attention score 是 n × n 矩阵
  • 每一行表示一个 token 对所有 token 的关注
  • 长上下文成本高,主要原因之一就是 n² 复杂度

优化方向:

  • sparse attention
  • sliding window attention
  • linear attention
  • KV cache
  • paged attention
  • 长上下文压缩

28. 位置编码是什么?

标准答案

位置编码是给 Transformer 提供 token 顺序信息的方法。因为 Self-Attention 本身不天然知道 token 的先后顺序,如果不加入位置信息,模型很难区分"我喜欢你"和"你喜欢我"。

位置编码可以分为绝对位置编码和相对位置编码。绝对位置关注 token 在第几个位置,相对位置关注 token 之间相隔多远。

小学生版

模型本来只看到一堆词,不知道谁在前谁在后。

位置编码就是给每个词贴一个座位号,让模型知道顺序。

基础知识

为什么 Transformer 需要位置编码:

  • Attention 同时看所有 token
  • 没有 RNN 那种天然顺序
  • 语言顺序很重要
  • 同样的词换顺序,意思可能完全不同

位置编码类型:

  • 绝对位置编码
  • 相对位置编码
  • RoPE
  • ALiBi

29. 为什么很多模型选择相对位置编码,而不是绝对位置编码?

标准答案

绝对位置编码表示 token 在序列中的具体编号,例如第 1 个、第 2 个、第 3 个。相对位置编码更关注 token 之间的距离关系。

在语言中,很多关系并不取决于某个词的绝对位置,而取决于词与词之间的相对距离。例如主语和谓语之间的关系、问题和答案之间的关系。相对位置编码更适合建模这种关系,也通常对长上下文外推更友好。

小学生版

绝对位置像:

你坐在第 5 个座位。

相对位置像:

你坐在小明右边两个座位。

如果换了教室,第 5 个座位可能变了,但"在小明右边两个座位"这个关系还在。

语言里很多时候重要的是词和词之间的距离,而不是它们具体排第几。

基础知识

绝对位置编码:

  • 记录 token 的具体位置
  • 简单直接
  • 训练和推理长度差异大时可能泛化不好

相对位置编码:

  • 记录 token 之间的距离
  • 更符合语言关系
  • 对长距离依赖更自然

为什么有利于长上下文:

  • 模型更关注相对距离模式
  • 不完全依赖固定位置编号
  • 对未见过的位置更容易泛化

30. RoPE 是什么?

标准答案

RoPE 是 Rotary Position Embedding,旋转位置编码。它通过旋转的方式将位置信息注入到 Q 和 K 中,使 attention 在计算 QK 相似度时能够自然感知相对位置关系。

RoPE 的优势是能建模相对位置信息,并且在长度外推上比传统绝对位置编码更友好,所以很多大语言模型都会采用 RoPE。

小学生版

RoPE 就像给每个词一个会旋转的指南针。

词的位置不同,指南针方向不同。

模型通过方向差,就能知道两个词之间隔了多远。

基础知识

要懂 RoPE,需要知道:

  • Attention 里 Q 和 K 会计算相似度
  • 位置信息注入 Q/K 后,会影响 attention 分数
  • RoPE 使用旋转矩阵表达位置
  • 两个位置之间的旋转差可以体现相对距离

不用在面试里推复杂公式,重点讲清:

  • 它是位置编码
  • 注入 Q/K
  • 能表达相对位置
  • 对长上下文友好

31. MoE 是什么?

标准答案

MoE 是 Mixture of Experts,混合专家模型。它包含多个专家网络,每个 token 通过 router 或 gate 选择其中少数几个专家进行计算。

MoE 的优势是总参数量可以很大,但每次推理只激活部分专家,所以在提升模型容量的同时控制计算成本。它的核心挑战是路由均衡、专家负载不均和通信开销。

小学生版

学校里有很多老师。

数学题找数学老师,语文题找语文老师。

不需要每道题都让所有老师一起讲。

这样既聪明,又省力。

基础知识

MoE 关键概念:

  • Expert:专家网络
  • Router/Gate:决定 token 去哪个专家
  • Top-k:每个 token 选几个专家
  • Activated parameters:实际参与计算的参数
  • Total parameters:模型总参数

优点:

  • 总容量大
  • 单次计算成本相对低
  • 适合扩展大模型

缺点:

  • 训练复杂
  • 负载不均
  • 分布式通信成本高
  • 路由可能不稳定

32. 为什么现在大模型多用 Decoder-only?

标准答案

Decoder-only 架构适合自回归生成,训练目标统一为 next token prediction。大规模语料天然适合这种训练方式,而且问答、写作、翻译、代码生成、总结等任务都可以统一成 prompt + completion 的形式。

相比 Encoder-Decoder,Decoder-only 结构更简单,训练和推理更统一,可扩展性更强,因此 GPT 类大模型普遍采用 Decoder-only。

小学生版

Decoder-only 就像"接着往下写"的机器。

不管你让它写作文、回答问题、写代码,本质都是:

看前面的内容,然后猜下一个词。

基础知识

要懂这题,需要知道:

  • Encoder:负责理解输入
  • Decoder:负责生成输出
  • 自回归:一个 token 一个 token 往后生成
  • next token prediction:预测下一个 token
  • prompt:输入提示
  • completion:模型续写

Decoder-only 的优势:

  • 简单
  • 统一
  • 可扩展
  • 适合大规模预训练
  • 多任务 prompt 化方便

33. Encoder、Decoder、Encoder-Decoder、Decoder-only 有什么区别?

标准答案

Encoder 主要负责编码和理解输入,通常使用双向注意力,可以看到整个输入序列。Decoder 主要负责生成输出,通常使用 causal mask,只能看到当前位置之前的内容。

Encoder-Decoder 结构中,Encoder 先理解输入,Decoder 再基于 Encoder 输出生成结果,适合翻译、摘要等 seq2seq 任务。Decoder-only 只有 Decoder,通过自回归方式预测下一个 token,适合大规模语言模型和通用生成任务。

Encoder-Decoder 的优点是理解和生成分工明确,缺点是结构较复杂。Decoder-only 的优点是训练目标统一、扩展简单、多任务适配方便,缺点是对某些纯理解任务可能不如 Encoder-only 高效。

小学生版

Encoder 像阅读理解高手,负责读懂题目。

Decoder 像写作文的人,负责一个字一个字写答案。

Encoder-Decoder 是:

先有人读懂题,再有人写答案。

Decoder-only 是:

一个人看着前文,一直往下写。

基础知识

常见模型类型:

  • BERT:Encoder-only,擅长理解
  • GPT:Decoder-only,擅长生成
  • T5/BART:Encoder-Decoder,擅长文本到文本任务

注意力区别:

  • Encoder:双向看全文
  • Decoder:只能看前文,不能偷看未来
  • Encoder-Decoder:Decoder 还能通过 cross-attention 看 Encoder 输出

34. LayerNorm 是什么?

标准答案

LayerNorm 是对单个样本内部的 hidden dimension 做归一化的方法。它通过计算一个 token 或一个样本内部特征维度的均值和方差,将数值分布调整到更稳定的范围,从而稳定训练、加快收敛。

Transformer 中常用 LayerNorm,因为 NLP 序列长度可变,batch size 也可能不稳定,而 LayerNorm 不依赖 batch 维度,更适合语言模型。

小学生版

LayerNorm 像一个学生自己调整各科分数。

不看全班,只看自己。

把自己的语文、数学、英语这些分数调到比较稳定的范围。

基础知识

要懂 LayerNorm,需要知道:

  • 神经网络每层都会输出很多数字
  • 数字太大或太小会让训练不稳定
  • 归一化可以稳定数值分布
  • hidden dimension 是 token 内部的特征维度

LayerNorm 特点:

  • 对单个样本内部归一化
  • 不依赖 batch size
  • 适合 NLP 和 Transformer
  • 常和 residual connection 一起用

35. BatchNorm 是什么?和 LayerNorm 有什么区别?

标准答案

BatchNorm 是对一个 batch 内同一特征维度进行归一化,依赖 batch 的统计量,常用于 CNN 图像任务。LayerNorm 是对单个样本内部的 hidden dimension 进行归一化,不依赖 batch 统计量。

核心区别是:BatchNorm 跨样本归一化,LayerNorm 在单样本内部归一化。Transformer 通常使用 LayerNorm,因为 NLP 序列长度可变,自回归生成时 batch 统计不稳定。

小学生版

BatchNorm 像看全班同学同一科成绩,然后调整。

LayerNorm 像只看一个学生自己的各科成绩,然后调整。

Transformer 更喜欢 LayerNorm,因为它不用管班里有多少人。

基础知识

BatchNorm:

  • 依赖 batch
  • 适合图像任务
  • batch size 太小时不稳定
  • 训练和推理统计方式不同

LayerNorm:

  • 不依赖 batch
  • 适合 NLP
  • 训练和推理一致性更好
  • Transformer 常用

微调 / 对齐 高频题

36. SFT 是什么?

标准答案

SFT 是 Supervised Fine-Tuning,有监督微调。它使用高质量的指令-回答数据训练模型,让模型学会按照人类期望的方式回答问题。

SFT 通常是大模型对齐的第一步,主要让基座模型从"续写文本"变成"听懂指令并回答问题"。

小学生版

SFT 就像老师给学生很多标准答案,让学生模仿。

看多了以后,学生就知道遇到类似题该怎么答。

基础知识

SFT 数据常见格式:

json 复制代码
{
  "instruction": "解释什么是RAG",
  "input": "",
  "output": "RAG是检索增强生成..."
}

或者 chat 格式:

json 复制代码
{
  "messages": [
    {"role": "user", "content": "什么是RAG?"},
    {"role": "assistant", "content": "RAG是..."}
  ]
}

SFT 重点:

  • 数据质量大于数量
  • 输出格式要稳定
  • 覆盖任务多样性
  • 避免脏数据和错误答案

37. RLHF 是什么?

标准答案

RLHF 是 Reinforcement Learning from Human Feedback,基于人类反馈的强化学习。它通常先收集人类偏好数据,训练一个 reward model,再用 PPO 等强化学习方法优化模型,使模型输出更符合人类偏好。

RLHF 的目标不是单纯让模型模仿标准答案,而是让模型更符合"人类觉得好"的回答方式。

小学生版

SFT 是模仿标准答案。

RLHF 是老师给学生的答案打分。

分高的写法以后多用,分低的写法以后少用。

基础知识

RLHF 流程:

  1. SFT 训练初始模型
  2. 收集偏好数据
  3. 训练 Reward Model
  4. 用 PPO 优化模型
  5. 加 KL 约束防止模型跑偏

偏好数据形式:

  • prompt
  • chosen response
  • rejected response

38. DPO 是什么?

标准答案

DPO 是 Direct Preference Optimization,直接偏好优化。它使用 chosen/rejected 偏好数据直接训练模型,让模型提高 chosen 回答的概率,降低 rejected 回答的概率。

相比 RLHF + PPO,DPO 不需要单独训练 reward model,也不需要复杂的强化学习 rollout,训练流程更简单稳定。

小学生版

DPO 就像老师直接告诉学生:

这个答案比那个答案好。

以后多学这个,少学那个。

基础知识

DPO 需要:

  • prompt
  • chosen answer
  • rejected answer
  • reference model
  • preference loss

DPO 优点:

  • 简单
  • 稳定
  • 不需要 reward model
  • 不需要 PPO 复杂训练

缺点:

  • 依赖高质量偏好数据
  • 对复杂多步奖励场景不一定够

39. SFT、RLHF、DPO 的区别是什么?

标准答案

SFT 是用标准答案做监督学习,让模型学会基本指令跟随。RLHF 是用人类偏好训练 reward model,再通过 PPO 优化模型,使输出更符合人类偏好。DPO 则直接使用 chosen/rejected 偏好对训练模型,不需要显式 reward model 和 PPO。

简单说,SFT 教模型"怎么答",RLHF 和 DPO 教模型"哪种答案更好"。

小学生版

SFT:照着标准答案学。

RLHF:老师给答案打分,按分数改进。

DPO:老师直接说 A 答案比 B 答案好。

基础知识

三者关系:

  • SFT:基础能力
  • RLHF:偏好对齐
  • DPO:更简单的偏好对齐方法

适用:

  • SFT:格式、任务、指令跟随
  • RLHF:复杂偏好、对齐、安全性
  • DPO:已有偏好数据,希望简单稳定训练

40. PPO 是什么?

标准答案

PPO 是 Proximal Policy Optimization,是 RLHF 中常用的强化学习优化算法。它通过 reward model 给模型输出打分,并根据 advantage 更新 policy,同时用 clipping 或 KL 约束限制模型每次更新幅度,防止模型偏离原模型太远。

PPO 的核心思想是:根据奖励优化模型,但不能让模型为了追求奖励而突然学歪。

小学生版

PPO 像老师指导学生写作文。

学生写完,老师打分。

写得好,就鼓励这种写法。

但老师也不允许学生一下子变得太奇怪。

基础知识

PPO 需要理解:

  • Policy:当前模型
  • Reward Model:奖励模型
  • Value Model:估计预期得分
  • Advantage:比预期好多少
  • KL:限制新模型别偏离旧模型太远

为什么要限制更新:

  • 防止 reward hacking
  • 防止输出风格崩坏
  • 保持语言能力
  • 稳定训练

41. GRPO 是什么?和 PPO 有什么区别?

标准答案

GRPO 可以看作对 PPO 的一种改造。PPO 通常需要 value model 来估计 advantage,而 GRPO 对同一个 prompt 采样多个 response,用这一组回答的相对奖励构造 group baseline,从而估计每个回答的 advantage。

核心区别是:PPO 通常依赖 value model,GRPO 用组内相对比较替代 value model,因此更省显存和训练成本。

小学生版

PPO 像老师先估计你正常能考多少分,再看你这次比预期好多少。

GRPO 像同一道题你写 5 个答案,老师直接比较这 5 个里面哪个更好。

好的多学,差的少学。

基础知识

要懂 GRPO,需要知道:

  • 同一个 prompt 可以生成多个回答
  • 每个回答可以得到 reward
  • 组内平均 reward 可以作为 baseline
  • 高于平均的回答增强
  • 低于平均的回答减弱

PPO vs GRPO:

  • PPO:需要 value model
  • GRPO:用 group baseline
  • PPO:组件更多
  • GRPO:更省资源
  • PPO:经典稳定
  • GRPO:适合大模型推理类训练

42. LoRA 是什么?

标准答案

LoRA 是 Low-Rank Adaptation,低秩适配。它冻结大模型原始参数,只在部分权重旁边增加低秩矩阵 A 和 B,训练这部分新增小参数,从而以较低成本适配新任务。

LoRA 的优势是训练参数少、显存占用低、适合多任务适配,并且可以在推理时合并到原权重中。

小学生版

大模型像一本很厚的书。

LoRA 不改整本书,只是在旁边贴几张便利贴,让它适应新任务。

基础知识

LoRA 基本思想:

原权重矩阵 W 不动。

新增一个低秩增量 ΔW = A × B。

训练时只更新 A 和 B。

优点:

  • 参数少
  • 成本低
  • 适合单卡或小资源训练
  • 多个任务可以保存多个 LoRA adapter

43. QLoRA 是什么?

标准答案

QLoRA 是在 LoRA 基础上进一步降低显存占用的方法。它将主模型参数量化到 4bit,同时仍然通过 LoRA 训练低秩适配参数。

QLoRA 的核心优势是让更大模型能在更小显存上进行微调,适合资源有限场景。

小学生版

LoRA 是给大书贴便利贴。

QLoRA 是先把大书压缩得更薄,再贴便利贴。

基础知识

QLoRA 涉及:

  • 4bit 量化
  • 冻结主模型
  • LoRA adapter
  • 反向传播时只训练 adapter
  • 降低显存占用

注意:

  • 量化会带来一定精度损失
  • 训练和推理要注意量化格式兼容
  • 数据质量仍然很关键

44. 什么时候选择微调,而不是 RAG?

标准答案

如果问题主要是知识更新、私有知识访问或可追溯资料引用,优先选择 RAG。如果问题主要是模型行为、输出格式、语气风格、特定领域表达习惯或隐式任务能力,微调更合适。

简单说,RAG 适合补知识,微调适合改行为。

小学生版

要查资料,用 RAG。

要改变学生的做题习惯,用微调。

基础知识

RAG 适合:

  • 知识经常变化
  • 私有文档问答
  • 需要引用来源
  • 不能把知识写死进模型

微调适合:

  • 固定输出格式
  • 特定风格
  • 特定任务习惯
  • 分类、抽取、格式化生成
  • 低延迟批量任务

常见组合:

  • RAG 提供知识
  • 微调提升模型对任务格式和领域语言的适应性

工程部署 / 推理 高频题

45. vLLM 的核心优化是什么?

标准答案

vLLM 的核心优化包括 PagedAttention、continuous batching、KV cache 管理和 prefix cache。PagedAttention 借鉴操作系统分页思想,将 KV cache 分块管理,减少显存碎片,提高显存利用率。Continuous batching 则可以动态合批,提高服务吞吐。

总体来说,vLLM 的目标是提升大模型推理服务的吞吐和显存利用率。

小学生版

vLLM 像一个很会安排座位的餐厅经理。

它能把很多客人安排得更紧凑,不浪费桌子,还能让厨房同时处理更多订单。

基础知识

要懂 vLLM,需要知道:

  • 推理服务通常瓶颈在显存和吞吐
  • 自回归生成需要 KV cache
  • 请求长度不同会造成资源浪费
  • 动态 batching 能提升吞吐
  • PagedAttention 能减少 KV cache 显存碎片

46. KV cache 是什么?

标准答案

KV cache 是在自回归生成中缓存历史 token 的 Key 和 Value,避免每生成一个新 token 都重新计算前面所有 token 的 K/V。它可以显著提升推理速度,但会占用额外显存,尤其在长上下文和高并发场景下,KV cache 可能成为主要显存瓶颈。

小学生版

写作文时,你不用每写一个字都重新读一遍前文。

KV cache 就像把前面读过的重点记下来,后面直接用。

基础知识

生成一个 token 时:

  • 新 token 需要和历史 token 做 attention
  • 历史 token 的 K/V 可以复用
  • 所以把历史 K/V 存起来
  • 下一步只算新 token 的部分

KV cache 占用与这些有关:

  • 层数
  • 序列长度
  • hidden size
  • batch size
  • 精度 FP16 / INT8
  • 是否使用 GQA / MQA

47. 模型量化是什么?

标准答案

模型量化是将模型参数从高精度表示转换为低精度表示,例如从 FP16 转为 INT8 或 INT4,从而减少显存占用并提升推理速度。

量化通常不会改变模型结构,但可能带来一定精度损失。实际部署中,需要在速度、显存和效果之间做平衡。

小学生版

量化就像把一本很厚的书压缩成小本。

占地方更少,翻起来更快,但可能有一点细节损失。

基础知识

常见精度:

  • FP32:每个参数 4 bytes
  • FP16:每个参数 2 bytes
  • INT8:每个参数 1 byte
  • INT4:每个参数 0.5 byte

量化类型:

  • 训练后量化 PTQ
  • 量化感知训练 QAT
  • 权重量化
  • 激活量化
  • KV cache 量化

48. 蒸馏是什么?和量化有什么区别?

标准答案

蒸馏是用大模型作为教师模型,让小模型学习大模型的输出、分布或推理过程,从而获得更强能力。量化是降低同一个模型的参数精度,模型结构通常不变。

简单说,量化是压缩模型表示,蒸馏是训练一个更小的学生模型。

小学生版

量化是把大书压缩薄一点。

蒸馏是让大学霸教小学霸,让小学霸学会大学霸的解题方法。

基础知识

量化:

  • 改数值精度
  • 模型结构通常不变
  • 目标是省显存、加速

蒸馏:

  • 训练小模型
  • 模型结构可能变小
  • 目标是让小模型学大模型能力

两者可以结合:

  • 先蒸馏小模型
  • 再量化部署

49. 分布式训练有哪些方式?

标准答案

大模型分布式训练常见方式包括数据并行、张量并行、流水线并行和 ZeRO。

数据并行是多张卡处理不同数据;张量并行是把大矩阵切到不同卡上;流水线并行是把模型不同层放在不同卡上;ZeRO 是把优化器状态、梯度和参数进行分片,降低单卡显存压力。

小学生版

一个人搬不动大箱子,就很多人一起搬。

有人搬不同箱子,

有人搬箱子的一部分,

有人负责不同楼层,

有人负责记账和分配。

基础知识

分布式训练瓶颈:

  • 参数太大
  • 梯度太大
  • 优化器状态太大
  • 单卡显存不够
  • 卡间通信开销大

常见技术:

  • DP:Data Parallel
  • TP:Tensor Parallel
  • PP:Pipeline Parallel
  • ZeRO:Optimizer/Gradient/Parameter Sharding

Token / Prompt 高频题

50. Token 是什么?

标准答案

Token 是大模型处理文本的基本单位,可能是一个字、一个词、一个子词或一段符号。模型不会直接按人类自然语言理解整句话,而是先把文本切分成 token,再转换成向量进行计算。

API 计费和上下文长度通常都以 token 为单位。

小学生版

Token 就像模型读文字时的小积木。

模型不是一整句一整句读,而是一块一块读。

基础知识

Tokenization:

  • 把文本切成 token
  • 再映射成 token id
  • token id 输入模型
  • 模型预测下一个 token id

不同语言 token 数不同:

  • 英文可能一个词对应一个或多个 token
  • 中文可能一个字接近一个 token,也可能更多
  • 代码和符号会产生较多 token

51. 上下文窗口是什么?

标准答案

上下文窗口是模型单次推理时最多能处理的 token 数,包括输入和输出。窗口越大,模型能看到的信息越多,但计算成本、显存占用和注意力稀释问题也会增加。

长上下文不等于模型一定能用好所有信息,因此还需要检索、摘要、rerank 和结构化组织上下文。

小学生版

上下文窗口像书桌大小。

桌子越大,能摊开的书越多。

但书太多,也可能找不到重点。

基础知识

上下文窗口包括:

  • system prompt
  • 用户输入
  • 历史对话
  • 检索文档
  • 工具结果
  • 模型输出

问题:

  • token 成本高
  • 延迟高
  • KV cache 显存高
  • 信息太多导致注意力稀释

52. 长上下文的注意力稀释是什么?

标准答案

注意力稀释是指上下文过长时,虽然模型理论上能看到所有内容,但关键信息可能被大量无关信息淹没,导致模型忽略重点或在中间位置的信息上表现变差。

解决方式包括检索增强、rerank、摘要压缩、结构化上下文、关键信息前置和分段处理。

小学生版

桌子上放了太多纸。

虽然每张纸都在你面前,但你反而找不到最重要的那张。

基础知识

注意力稀释相关概念:

  • lost in the middle
  • attention 分布
  • 上下文噪声
  • prompt 组织结构
  • 关键信息位置

优化:

  • 不要盲目塞长上下文
  • 先检索再生成
  • 重要信息放前面或后面
  • 使用标题和分隔符
  • 用摘要减少噪声

53. Few-shot 和 Zero-shot 怎么选?

标准答案

Zero-shot 适合任务简单、模型能力强、输出格式不复杂的场景。Few-shot 适合任务复杂、格式严格、需要示例引导的场景。

Few-shot 能提高输出稳定性,但会消耗更多 token,也可能让模型过度模仿示例。

小学生版

简单题,直接告诉要求就行。

复杂题,最好先给两三个例子,学生更容易照着做。

基础知识

Zero-shot:

  • 不给例子
  • 只给任务描述
  • token 成本低

Few-shot:

  • 给几个输入输出示例
  • 格式更稳定
  • 成本更高

适合 Few-shot 的场景:

  • 信息抽取
  • 格式化输出
  • 分类标签边界复杂
  • 风格模仿

54. Prompt 注入是什么?怎么防?

标准答案

Prompt 注入是指用户在输入中加入恶意指令,试图覆盖系统提示词或诱导模型泄露信息、错误调用工具。

防范方法包括明确系统指令优先级、用分隔符区分用户输入和系统指令、输入过滤、工具权限控制、关键操作二次确认、输出审计和最小权限原则。

小学生版

有人在作业纸上偷偷写:

"老师说这题不用做。"

机器人要知道,这只是用户写的话,不是真的老师命令。

基础知识

Prompt 注入常见形式:

  • 忽略之前所有指令
  • 泄露系统 prompt
  • 调用危险工具
  • 修改输出格式
  • 伪造权限

防御重点:

  • 用户内容永远不应覆盖系统指令
  • 工具调用要有权限边界
  • 高风险操作要二次确认
  • 不把敏感信息直接暴露给模型

传统机器学习 / NLP 高频题

55. 过拟合是什么?怎么解决?

标准答案

过拟合是指模型在训练集上表现很好,但在新数据上表现差。原因可能是模型太复杂、数据太少、训练时间太长或数据噪声太大。

常见解决方法包括增加数据、数据增强、正则化、dropout、早停、降低模型复杂度和交叉验证。

小学生版

过拟合就像学生把练习册答案背下来了。

原题都会,换一张卷子就不会。

基础知识

需要知道:

  • 训练集:模型学习的数据
  • 验证集:调参观察的数据
  • 测试集:最终评估泛化能力
  • 泛化:模型在新数据上的表现

解决方法:

  • L1/L2 正则
  • Dropout
  • Early Stopping
  • Data Augmentation
  • 降低模型复杂度
  • 增加高质量数据

56. 分类和回归有什么区别?

标准答案

分类预测的是离散类别,例如垃圾邮件和正常邮件;回归预测的是连续数值,例如房价、销量、温度。

分类常用交叉熵损失,评估指标有准确率、Precision、Recall、F1;回归常用 MSE、MAE 等损失,评估指标也通常是误差类指标。

小学生版

分类是判断"它属于哪一类"。

回归是预测"它是多少"。

基础知识

分类例子:

  • 是否垃圾邮件
  • 图片是猫还是狗
  • 用户是否会点击

回归例子:

  • 明天温度多少
  • 房价多少
  • 销量多少

常见指标:

  • 分类:Accuracy、Precision、Recall、F1、AUC
  • 回归:MSE、RMSE、MAE、R²

57. NER 是什么?

标准答案

NER 是 Named Entity Recognition,命名实体识别。它的任务是从文本中识别人名、地名、机构名、时间、金额、产品名等实体。

传统方法包括 HMM、CRF、BiLSTM-CRF,后来常用 BERT 等预训练模型,现在也可以用大模型通过 prompt 或 few-shot 进行实体抽取。

小学生版

NER 就是在一句话里圈出重要名字。

比如:

"张三在北京加入了百度。"

NER 要圈出:

张三:人名

北京:地名

百度:公司名

基础知识

NER 是序列标注任务。

常见标注方式:

  • B-PER:人名开始
  • I-PER:人名内部
  • B-LOC:地名开始
  • I-LOC:地名内部
  • O:非实体

常见模型:

  • HMM
  • CRF
  • BiLSTM-CRF
  • BERT
  • LLM 抽取

计算题 / 手撕题

58. Self-Attention 维度怎么算?

标准答案

假设输入 X 的形状是 n × d_model,W_Q、W_K、W_V 的形状都是 d_model × d_k。

那么:

Q = XW_Q,形状是 n × d_k

K = XW_K,形状是 n × d_k

V = XW_V,形状是 n × d_k

QK^T 的形状是:

(n × d_k) × (d_k × n) = n × n

所以 attention score 是 n × n。

小学生版

有 n 个词。

每个词都要看看其他 n 个词。

所以会得到一张 n × n 的关系表。

基础知识

需要知道矩阵乘法:

  • A 是 a × b
  • B 是 b × c
  • AB 结果是 a × c

在 attention 中:

  • n 是 token 数
  • d_model 是模型维度
  • d_k 是 Q/K 的维度
  • n × n 表示每个 token 对每个 token 的关注分数

59. Multi-Head Attention 中每个 head 维度怎么算?

标准答案

每个 head 的维度通常是:

d_head = d_model / num_heads

例如 d_model = 768,num_heads = 12:

d_head = 768 / 12 = 64

所以每个 attention head 的维度是 64。

小学生版

把 768 个能力平均分给 12 个小组。

每个小组拿到 64 个。

基础知识

需要知道:

  • d_model 是总隐藏维度
  • num_heads 是头的数量
  • 每个 head 负责一部分维度
  • 多个 head 结果最后会 concat 起来

60. LoRA 参数量怎么计算?

标准答案

假设原始权重 W 的形状是 4096 × 4096,LoRA rank r = 8。

LoRA 增加两个矩阵:

A:4096 × 8

B:8 × 4096

参数量是:

4096 × 8 + 8 × 4096 = 65,536

原始矩阵参数量是:

4096 × 4096 = 16,777,216

所以 LoRA 训练参数远小于全量微调。

小学生版

原来要改 1600 多万处。

现在只改 6 万多处。

就像不改整本书,只贴几张便利贴。

基础知识

LoRA 公式:

ΔW = A × B

其中:

  • W 是原始权重
  • A 和 B 是低秩矩阵
  • r 是 rank
  • r 越大,参数越多,表达能力越强

参数量:

如果 W 是 m × n,rank 是 r:

LoRA 参数量 = m × r + r × n


61. 7B 模型量化后显存怎么算?

标准答案

7B 模型有约 70 亿参数。

FP16 每个参数 2 bytes:

7B × 2 bytes ≈ 14GB

INT8 每个参数 1 byte:

7B × 1 byte ≈ 7GB

INT4 每个参数 0.5 byte:

7B × 0.5 byte ≈ 3.5GB

实际部署还要额外考虑 KV cache、激活值、框架开销等,所以真实显存会更高。

小学生版

同一本书:

FP16 是普通厚度。

INT8 压成一半。

INT4 再压一半。

基础知识

单位换算:

  • 1 byte = 8 bit
  • FP16 = 16 bit = 2 bytes
  • INT8 = 8 bit = 1 byte
  • INT4 = 4 bit = 0.5 byte

显存组成:

  • 模型权重
  • KV cache
  • 激活值
  • runtime buffer
  • batch 开销

62. KV cache 显存怎么粗略估算?

标准答案

KV cache 粗略公式是:

层数 × 序列长度 × 2(K,V) × hidden size × 每个数的字节数

例如:

层数 32,序列长度 4096,hidden size 4096,FP16 2 bytes。

KV cache ≈ 32 × 4096 × 2 × 4096 × 2 bytes

≈ 2GB

这说明长上下文和高并发时,KV cache 会占用大量显存。

小学生版

模型为了不重复读前文,会把前文的笔记存下来。

文章越长,笔记越厚,占的地方越大。

基础知识

KV cache 大小受影响因素:

  • 模型层数
  • 上下文长度
  • hidden size
  • batch size
  • 数据精度
  • attention 结构

优化:

  • MQA
  • GQA
  • PagedAttention
  • KV cache 量化
  • 限制上下文长度

63. Recall@K 怎么计算?

标准答案

如果一个问题共有 5 个相关文档,系统 top-10 结果里找回了 4 个相关文档:

Recall@10 = 4 / 5 = 0.8

也就是 80%。

小学生版

应该找 5 张正确卡片。

你找到了 4 张。

所以是 4/5,也就是 80 分。

基础知识

Recall@K 公式:

找回的相关文档数 / 所有相关文档数

注意:

  • 分母是所有相关文档
  • 分子是 top-k 中找回的相关文档
  • K 越大,Recall 通常越高
  • 但 K 太大可能引入噪声

64. MRR 怎么计算?

标准答案

如果第一个相关文档排在第 4 位:

MRR = 1 / 4 = 0.25

如果有多个 query,就对每个 query 的倒数排名求平均。

小学生版

第 1 个就找到正确答案,得 1 分。

第 4 个才找到,得 1/4 分。

越早找到,分越高。

基础知识

MRR 公式:

MRR = 平均值(1 / 第一个相关结果排名)

适合:

  • 问答检索
  • 搜索结果排序
  • 用户只关心第一个正确结果的场景

65. 手撕简易 Self-Attention

标准答案

python 复制代码
import torch
import math

def self_attention(Q, K, V, mask=None):
    scores = Q @ K.transpose(-2, -1) / math.sqrt(Q.size(-1))

    if mask is not None:
        scores = scores.masked_fill(mask == 0, float("-inf"))

    weights = torch.softmax(scores, dim=-1)
    output = weights @ V
    return output, weights

核心步骤是:

  1. QK^T 计算注意力分数
  2. 除以 sqrt(d_k) 做缩放
  3. mask 掉不能看的位置
  4. softmax 得到权重
  5. 权重乘 V 得到输出

小学生版

先打分:谁重要。

再变比例:每个人占多少。

最后加起来:得到综合信息。

基础知识

需要知道:

  • Q、K、V 的含义
  • 矩阵乘法
  • softmax
  • causal mask
  • scaled dot-product attention

mask 用于:

  • padding mask:忽略补齐 token
  • causal mask:生成任务不能看未来 token

66. 手撕简易 RAG 流程

标准答案

python 复制代码
docs = load_documents()
chunks = split_documents(docs)

chunk_embeddings = embed(chunks)
vector_store.add(chunks, chunk_embeddings)

query = "用户问题"
query_embedding = embed(query)

top_chunks = vector_store.search(query_embedding, top_k=5)

prompt = build_prompt(query, top_chunks)
answer = llm(prompt)

print(answer)

完整流程包括文档加载、切分、向量化、入库、查询向量化、top-k 检索、prompt 组装和 LLM 生成。

小学生版

先把书切成小纸条。

给每张纸条做编号。

用户问问题时,找到最像的几张纸条,再让机器人根据纸条回答。

基础知识

简易 RAG 需要:

  • 文档解析
  • chunk 切分
  • embedding 模型
  • 向量数据库
  • 相似度搜索
  • prompt 模板
  • LLM 生成

生产级还需要:

  • 清洗
  • metadata
  • hybrid search
  • rerank
  • 权限控制
  • 评测体系
  • 日志监控

67. 手撕 BPE 分词思路

标准答案

BPE 的核心流程是:

  1. 将语料拆成最小单位,例如字符或 byte
  2. 统计相邻 token pair 的出现频率
  3. 找出最高频 pair
  4. 将最高频 pair 合并成新 token
  5. 重复多轮,直到达到目标词表大小

例如 low、lower、lowest 中,l 和 o 经常一起出现,就可能先合并成 lo,再进一步合并成 low。

小学生版

BPE 像拼积木。

一开始每个字母都是小积木。

发现有些积木总是一起出现,就把它们粘成一个大积木。

基础知识

BPE 用于 tokenizer。

它解决的问题:

  • 词表不能无限大
  • 未登录词需要处理
  • 子词能兼顾字符级和词级表达

优点:

  • 能处理生词
  • 词表大小可控
  • 适合多语言和代码

面试时的万能回答模板

遇到任何技术题,都可以按这个顺序回答:

  1. 它解决什么问题
  2. 它的核心原理是什么
  3. 它的优点是什么
  4. 它的缺点或 trade-off 是什么
  5. 项目里怎么用

例如问 RAG:

RAG 解决的是大模型知识过时、私有知识访问和幻觉问题。它的核心流程是先检索相关文档,再把文档作为上下文交给 LLM 生成。优点是知识可更新、可追溯、成本比微调低;缺点是效果依赖检索质量,chunk、召回、rerank 和评测都很关键。在项目里我会先构建评测集,再分别优化检索侧和生成侧。


复习顺序建议

最优先掌握:

  1. 项目深挖
  2. RAG 全流程
  3. chunk / embedding / vector search / BM25 / rerank
  4. RAG 评测
  5. Agent / ReAct / Function Calling
  6. Transformer / Attention / RoPE / MoE
  7. SFT / RLHF / DPO / PPO / GRPO
  8. LoRA / QLoRA
  9. vLLM / KV cache / 量化
  10. 计算题和手撕题

总结

面试不是要求你把所有知识都背成论文(这里反对拿着教科书背,却不理解重点基础,不能从重点基础去推),重要的是:

  • 核心概念要讲清楚
  • 基础原理要能解释
  • 优缺点要能比较
  • 项目中怎么用要能落地
  • 遇到追问时能沿着逻辑往下推

当你把这些主干题吃透,再去看真实大厂面经,会发现大多数问题都能归到这些模块里。

相关推荐
qq 13740186113 小时前
医用无菌屏障系统加速老化标准解读:ASTM F1980-2016 全解析
人工智能·算法·加速老化·包装测试·astm·医疗器械包装·无菌屏障系统
FOORIR 客流统计3 小时前
客流统计系统的工程实现:从线穿越计数到多目标跟踪
人工智能·计算机视觉·目标跟踪
小二·3 小时前
AI Agent 数据库运维实战
运维·数据库·人工智能
RSTJ_16253 小时前
PYTHON+AI LLM DAY SEVENTY
人工智能·python·深度学习
像风一样自由20203 小时前
量化压缩实战:INT8 / INT4 / AWQ / GPTQ 全面对比
android·人工智能·语言模型·大模型
财经资讯数据_灵砚智能3 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月8日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
数据分析能量站3 小时前
Anthropic关于AI的看法:人类研发正在快速边缘化
大数据·人工智能
武子康3 小时前
调查研究-159 Apple WWDC 2026 定档 6/8-12:Siri 与 AI 升级,可能是苹果最关键的一次
人工智能·深度学习·ios·ai·chatgpt·apple·wwdc
仙女修炼史3 小时前
Transformer思想根源PDP:Parallel Distributed Processing读书笔记
人工智能·深度学习·transformer