好未来 大模型算法开发 一面
1. 介绍一下 bge-m3 和 DBSCAN,以及它们各自的优势
bge-m3 是一个面向检索场景的多功能 embedding 模型,它的特点不是单一做稠密向量表示,而是把 dense、sparse 和 multi-vector 几种检索能力统一到一个模型里。dense 表示负责语义相似,sparse 表示更接近关键词匹配,multi-vector 更适合长文档和细粒度匹配。这样做的好处是一个模型可以兼顾语义召回和词面召回,尤其适合知识检索、教育问答、题目匹配这类场景。
DBSCAN 是一种基于密度的聚类算法。它通过两个参数来定义簇:一个是邻域半径 eps,一个是形成核心点所需的最小样本数 min_samples。如果一个点周围一定范围内有足够多的点,它就是核心点;和核心点密度连通的点会被归到同一类;密度不够的点会被视为噪声。它的优势是不需要预先指定簇的数量,还能识别异常点,适合做 query 聚类、向量去重、样本分桶。
from sklearn.cluster import DBSCAN
import numpy as np
X = np.array([
[0.0, 0.1], [0.1, 0.2], [0.2, 0.1],
[5.0, 5.1], [5.1, 5.2], [4.9, 5.0],
[10.0, 0.0]
])
model = DBSCAN(eps=0.5, min_samples=2)
labels = model.fit_predict(X)
print(labels) # -1 表示噪声点
2. 打分模型的设计思路
打分模型本质上是在多个候选里做排序,它的核心不是“分数绝对值准不准”,而是“相对顺序对不对”。设计时先要明确标签是什么,比如点击、停留时长、人工偏好、答案正确率、教师评分。然后构建特征,一般包括 query 特征、候选内容特征、用户特征、上下文特征和交叉特征。教育场景里还常加年级、知识点、题型、历史错题分布这些信息。
模型选择上,如果特征偏结构化,树模型通常是很强的 baseline;如果是文本和多模态信息占主导,可以用双塔、交叉编码器或者大模型做 rerank。损失函数可以是 pointwise,比如回归单个分数;也可以是 pairwise,让模型直接学两个候选谁更好;还可以是 listwise,直接优化整组排序质量。真正影响上线效果的,除了模型本身,还有负样本构造、样本偏置、线上校准和时延控制。
3. 退火阶段加入高质量数据的动机是什么,什么是退火阶段,数据怎么配比
退火阶段一般是训练后期逐步降低学习率的过程。这个阶段参数更新步子变小,模型从大范围搜索转向细粒度收敛,所以更适合用高质量、目标更明确的数据来做“收口”。如果一直让模型吃大规模通用数据,模型会很广,但对目标任务的边界、格式和表达不一定收得住。
后期加入高质量数据,主要是为了提升任务一致性、输出稳定性和目标域表现。比如教育场景里,通用语料能让模型学语言能力,但真正和学科讲解、题目解析、分步推理有关的高质量样本,通常更适合在训练后段提高占比。数据配比一般不是突然切换,而是逐渐抬高高质量数据权重,比如前期通用数据占绝对多数,中期混入目标域数据,后期以高质量目标域数据为主。这样可以兼顾泛化和收敛稳定性。
4. Transformer 的原理和结构,除了交叉注意力,编码器和解码器还有什么不同
Transformer 的核心是自注意力机制。它通过 Query、Key、Value 三个向量来计算不同 token 之间的相关性,然后用这些相关性加权聚合上下文信息。相比 RNN,Transformer 不依赖时间步递归,所以更适合并行训练,也更容易建模长距离依赖。
编码器和解码器最大的区别不只是有没有 cross-attention。编码器里的 self-attention 通常是双向的,每个位置都能看到整句上下文,适合理解任务;解码器里的 self-attention 一般带因果 mask,只能看当前位置之前的 token,适合自回归生成。除此之外,编码器更强调提取上下文表示,输出常作为语义表示;解码器更强调按顺序生成目标序列。现在很多大模型使用 decoder-only,也是因为生成任务占主流,而且结构更统一。
5. MHA 有什么改进,除了 GQA 还有 FlashAttention,KV Cache 的原理是什么
标准多头注意力里,每个 head 都有自己独立的 Q、K、V 投影,表达能力强,但推理时缓存开销很大。GQA 的思路是多个 query head 共享同一组 K 和 V,这样能显著减少 KV Cache 占用;MQA 更进一步,所有 query head 共享一组 K/V,缓存更省,但表达能力会再弱一些。
FlashAttention 不是修改注意力公式,而是优化计算和访存路径。传统 attention 会显式生成很大的 score 矩阵,中间结果频繁写回显存,速度容易被带宽卡住。FlashAttention 通过分块计算和 online softmax,把很多中间过程留在片上内存完成,减少显存读写,所以速度更快,显存更省。
KV Cache 的原理是在自回归生成时缓存历史 token 的 K 和 V。因为生成第 (t) 个 token 时,前面 (1) 到 (t-1) 的 K、V 不会变,所以不用每次重算,只要算当前 token 的 Q、K、V,然后用当前 Q 去和历史 K 做 attention。这就是增量推理能提速的基础。
6. DPO 的原理和损失函数公式,以及如何实现参考模型和策略模型不会偏离太远
DPO 直接用偏好对来优化策略模型,不需要像 PPO 那样显式训练奖励模型再做强化学习。它的基本想法是:如果在同一个 prompt 下,人类更喜欢 chosen 胜过 rejected,那就应该提升策略模型给 chosen 的相对概率,同时参考模型提供一个稳定锚点,避免策略模型偏得太远。
常见写法里,DPO 的优化目标可以写成:

这里 (y_w) 是 chosen,(y_l) 是 rejected,(\pi\theta) 是当前策略模型,(\pi{ref}) 是参考模型,(\beta) 控制优化强度。参考模型的作用就是提供约束,避免策略模型一味追求偏好目标而发生分布漂移。工程上通常会把参考模型冻结,训练时同时计算策略模型和参考模型在 chosen/rejected 上的 log prob
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.