飞猪 大模型算法 一面

1. 介绍一下你做过的一个项目

2. 打分模型设计思路是什么

打分模型本质上是在多个候选里做排序,重点不是绝对分值,而是相对顺序。设计时先要明确标签来源,如果是检索系统里的重排,一般可以来自人工相关性标注、点击日志、停留时长、复制行为、是否继续追问等;如果是生成答案质量打分,还会加入事实一致性、格式完整性、引用正确性这些目标。特征上通常会混合语义特征和业务特征,比如 query 向量、doc 向量、交叉编码器打分、文档时效性、来源可信度、标题匹配度。

训练时常见有 pointwise、pairwise、listwise 三种。pointwise 简单,适合做基础版本;pairwise 更符合排序本质,像“这个文档比那个更相关”;listwise 更贴近真实线上排序目标。线上落地时,很多模型离线分高但效果一般,问题往往不是模型结构,而是样本偏差和负样本太容易。真正有区分度的打分模型,通常都依赖 hard negative 和合理的曝光校正。

import torch
import torch.nn.functional as F

def pairwise_rank_loss(pos_score, neg_score, margin=0.2):
    return F.relu(margin - pos_score + neg_score).mean()

3. QLoRA 和 LoRA 的区别是什么,LoRA 的原理是什么

LoRA 的核心是低秩适配。原始大模型权重 (W) 不动,只训练一个低秩增量 (\Delta W = BA),其中 (B) 和 (A) 的秩远小于原矩阵维度。这样下游微调时,不需要更新整套参数,显存、优化器状态和存储成本都会下降很多。公式通常写成:

这里 (r) 是低秩维度,(\alpha) 是缩放系数。

QLoRA 比 LoRA 更进一步。LoRA 只是冻结原模型参数,QLoRA 还会把基座模型权重量化到 4bit 存储,训练时只更新 LoRA 参数。这样一个原本显存根本放不下的模型,也能在比较有限的 GPU 资源上做微调。代价是量化后对数值精度会有一定影响,而且有些任务对底层分布特别敏感时,QLoRA 的效果上限可能会比全精度 LoRA 略低。

import torch
import torch.nn as nn

class LoRALinear(nn.Module):
    def __init__(self, in_features, out_features, r=8, alpha=16):
        super().__init__()
        self.weight = nn.Parameter(torch.randn(out_features, in_features))
        self.weight.requires_grad = False
        self.A = nn.Parameter(torch.randn(r, in_features) * 0.02)
        self.B = nn.Parameter(torch.zeros(out_features, r))
        self.scale = alpha / r

    def forward(self, x):
        delta = self.B @ self.A
        return x @ (self.weight + self.scale * delta).t()

4. RAG 如果检索到的回答有误读,如何快速处理

误读通常不是一个单点问题,可能出在 query 理解、chunk 切分、召回排序、上下文拼接或者生成阶段。线上要快,优先做的是“止损”和“回退”。最常见的做法是先加一个 lightweight consistency check,检查答案中的关键实体、时间、数值、结论是否真的在证据片段里出现过。如果没有,就不直接把生成结果返回,而是触发重检索或者降级成“基于以下资料,我无法确认”。

如果要快速修,先看几类高频错因。第一类是 chunk 切太碎,导致引用片段缺前置条件;第二类是召回到相似但不适用的文档,比如旧版本政策、错年级教材、错地区规则;第三类是模型把多个证据拼成一个看似合理但实际错误的结论。修法一般是加 metadata filter、缩短生成窗口、做 evidence rerank、限制生成必须引用证据 span,而不是单纯继续堆 prompt。RAG 稳定性的关键不是“多检几段”,而是减少无效证据进入生成阶段。

5. DPO 和 PPO 的区别是什么

PPO 是强化学习方法,完整链路通常包括策略模型、参考模型、奖励模型和 value/critic。它的思路是先用奖励模型给生成结果打分,再根据策略梯度去更新模型,同时用裁剪和 KL 惩罚避免策略变化过大。优点是灵活,什么奖励都能接;缺点是训练链长、成本高、调参难。

DPO 不显式训练奖励模型再跑 RL,而是直接用偏好对做优化。对于同一个 prompt 下的 chosen 和 rejected,DPO 直接提升 chosen 相对 rejected 的概率,并用参考模型当锚点。它的一个常见形式是:

所以本质上,PPO 是“奖励驱动的 RL 优化”,DPO 是“偏好对驱动的直接优化”。如果偏好数据质量比较高,DPO 往往更省事、更稳。

6. GRPO 和 PPO 的区别是什么,你觉得 GRPO 这种方式带来了什么启发

PPO 更偏经典策略优化,会显式估计 advantage,

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

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

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

全部评论

相关推荐

1. 你讲一讲 ReAct 模式的原理,以及你的对话 Agent 是如何基于 ReAct 模式去实现的?2. ReAct 跟普通的 Function Calling 有什么区别?3. 这个 Agent 里可以做业务咨询、告警自救、工单预处理,这些场景在 ReAct 模式上要做切换的话,是怎么设计的?4. 这些场景是用一个大的 System Prompt 统一收容了吗?5. 你对上下文管理有过了解吗?6. 如果后续场景、工具越来越多,这个场景切换和工具匹配的部分要怎么优化?7. 多轮循环里的防空转(持续思考但不产生行动),你是怎么去设计的?8. Plan Execute Replan 这个模式跟 ReAct 模式有什么区别呢?9. Replan 这个节点是在什么样的情况下触发的?包括 Planning 里原计划不可行、需要重新规划的逻辑,是怎么设计的?10. 你这个 AIOPS 的 Multi-Agent 架构是怎么样的?11. 那你这个架构设计,为什么不用 ReAct 这种模式呢?12. 你说的 “上下文隔离更好地判断结果”,这句话怎么理解?13. 那你用多 Agent 的这种模式、用 Plan 的方式去实现,它是怎么解决你刚刚提出的问题的?优势是什么?14. RAG 这部分的系统,包括固定的系统文档、向量化以及检索方案,这块你是怎么设计的?15. 你的 topK 设置的是多少?设置的依据是什么?topK 太高或者太低分别会有什么问题?16. 你这个 Embedding 用的什么模型?17. 你选择这个 embedding 模型,是基于你的业务需要,还是基于有可用的免费额度就先用了?18. MCP 协议这块你有了解过吗?我看你项目里也用到了对吧?19. 你怎么理解 MCP?以及你用 MCP 去集成查询工具,具体是怎么设计的?20. 这里面的 MCP Server 跟 Client 分别是谁?21. 你这个日志查询工具,如果返回的日志内容太长、条数太多,你要怎么处理?22. 如果用 Lua 脚本去做预扣库存、分布式锁的相关实现,具体是怎么做的?23. 你这个项目里的乐观锁是怎么实现的?24. 这个条件更新具体是怎么更新的?对应的 SQL 语句是怎么写的?25. 那为什么不用版本号的方式实现乐观锁呢?26. 如果 Redis 里面的库存已经扣减了,但是数据库更新失败了,这种不一致的数据你要怎么处理?27. 你有用 AI Coding 去写代码吗?28. 都用了什么 AI Coding 工具?29. 你用 Claude Code 的时候,是怎么做上下文管理的?30. 你怎么理解上下文?31. 你对 Agent 和 Skill 这一块的理解是什么?32. 你用 Claude Code 的时候,里面用的是哪个模型?33. 你对市面上主流的代码大模型有去了解过吗?主流的模型有哪些,它们分别有什么差异?
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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