猿辅导 大模型开发 一面

1. 自我介绍

2. RAG 怎么优化,评估时你会看哪些指标

RAG 的优化一般不能只盯着生成端,很多问题其实出在检索阶段。常见优化思路包括 query rewrite、chunk 切分策略调整、混合召回、重排序、上下文压缩和引用约束。比如文档切得太碎,召回会有信息断裂;切得太长,又容易把无关信息一起带进来,生成端会受污染。真正线上效果好的 RAG,通常不是“某个 embedding 更强”,而是检索、排序、上下文组织和回答约束配合得比较好。

评估时我一般拆成两层。第一层看检索,比如 Recall@k、MRR、HitRate,看相关证据能不能被捞上来;第二层看生成,比如答案正确率、faithfulness、引用一致性、拒答准确率。因为很多系统不是“答错”,而是“检索到了但模型没用对”,所以只看最终答案分数不够。

3. 生成模型怎么选,和其他模型对比时你会看什么

如果是做问答、摘要、信息抽取这类生成任务,我不会只看基座大小,而是先看任务需求。比如是否需要长上下文、是否强调结构化输出、是否有多轮交互、是否要求强推理或者低延迟。模型选择本质上是能力、成本、延迟和可控性之间的平衡。很多时候不是最大的模型最合适,而是能在现有业务数据和部署预算下最稳定工作的模型更合适。

和其他模型对比时,我一般看四类指标。第一类是任务效果,比如准确率、人工偏好、鲁棒性;第二类是工程表现,比如推理时延、吞吐、显存占用;第三类是可控性,比如格式稳定性、幻觉率、拒答能力;第四类是后续可扩展性,比如是否容易继续微调、是否支持工具调用、是否和现有链路兼容。

4. 预训练和微调有什么区别

预训练的目标更偏通用能力获取,本质上是在大规模语料上做自监督学习,让模型掌握语言模式、知识分布和一定程度的推理能力。微调则更偏任务对齐,是在已有底座能力上,把模型往特定风格、特定任务或者特定领域上拉。二者最核心的差别不只是数据规模,而是优化目标不同:预训练追求通用建模能力,微调追求目标任务表现。

从工程角度看,预训练通常更关注数据覆盖、训练稳定性和扩展规律,微调更关注监督信号质量、格式设计和分布偏移。预训练更像“打地基”,微调更像“按业务装修”。同样是 token 输入模型,二者对数据构造和损失 mask 的要求差很多。

5. 预训练是怎么做的,输入是什么,怎么训练

预训练一般是把大规模文本切成 token 序列,送入模型做自回归建模。以 decoder-only 模型为例,输入本质上是一串 token,模型在每个位置预测下一个 token,损失通常是交叉熵。虽然看起来很简单,但真正复杂的是数据清洗、去重、pack、mask、并行训练和数值稳定性控制。

如果从输入到损失值完整讲一遍,可以描述成:原始文本先经过清洗和 tokenizer 编码,形成 token ids;再根据最大序列长度做拼接、截断和 padding;模型前向得到每个位置的 logits;最后用 shift 后的 labels 和 logits 做交叉熵,得到 loss。这里“输入是什么”本质上就是 token 序列,而不是一句宽泛的“文本”。

import torch
import torch.nn.functional as F

batch, seq, vocab = 2, 6, 100
logits = torch.randn(batch, seq - 1, vocab)
input_ids = torch.randint(0, vocab, (batch, seq))
labels = input_ids[:, 1:]

loss = F.cross_entropy(
    logits.reshape(-1, vocab),
    labels.reshape(-1)
)
print(loss.item())

6. 微调时的输入是什么,和推理时的输入有什么区别

微调时的输入本质上也是 token 序列,但通常会带有明确的模板结构,比如 system、user、assistant,或者 instruction、input、output 这样的拼接格式。训练时输入里不仅有 prompt,还有目标答案,只不过目标部分会通过 shift labels 的方式变成监督信号。也就是说,训练阶段模型“看得到”完整序列,但只对指定位置计算 loss。

推理时就不一样了,模型只能看到当前已有上下文,看不到未来答案,只能一步步自回归生成。所以训练和推理最大的差别不是输入格式长得有多不同,而是训练时有 teacher forcing,推理时没有。这个差异也是 exposure bias 的来源之一。

7. 输入样本在训练前需要做哪些处理,损失怎么计算

训练前处理一般包括文本清洗、分词编码、特殊 token 拼接、截断、padding、attention mask 构造以及 labels 生成。如果是多轮对话数据,还要处理角色边界;如果是 instruction tuning,还要决定哪些 token 参与 loss,哪些 token 只作为上下文。很多训练效果问题并不来自模型本身,而是样本格式和 label mask 配错了。

损失一般还是交叉熵,但

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务