百度 AI Infra 校招 二面 (3)


Q: 减少大模型幻觉的方法?

幻觉(Hallucination)是 LLM 生成看似合理但事实错误内容的现象。根据成因可分为事实性幻觉(编造不存在的事实)和忠实性幻觉(不忠于输入上下文)。

减少方法(按效果和常用程度排列):

  1. RAG(检索增强生成):将问题相关的真实文档作为上下文提供给模型,让生成有据可依(grounding)。最直接有效的方法,适合知识密集型问答。

  2. Self-consistency(自一致性):对同一问题多次采样(temperature>0),取多数一致的答案。基于直觉:正确答案在多次采样中一致,幻觉则不稳定。

  3. Chain-of-Thought(CoT):引导模型逐步推理而非直接跳到答案。显式推理链使得错误更容易被模型自身发现和修正。

  4. RLHF/DPO 对齐:训练模型在不确定时输出”我不知道”而非编造答案。通过偏好数据让模型学会区分”确定可回答”和”应该拒绝”。

  5. 后处理验证:用 NLI(自然语言推理)模型检查生成内容与参考文档的一致性(entailment/contradiction)。检测到矛盾时标记或重生成。

  6. 结构化约束:约束解码空间(如只能生成知识库中存在的实体),从根本上避免编造。适合封闭域问答。


Q: Beam Search原理及与直接Sample的区别?

Beam Search

  • 每步维护 B 个(beam width)最高概率的候选序列
  • 每步:将每个候选扩展 V 个词 -> 得到 B*V 个新候选 -> 保留 top-B
  • 终止条件:所有 beam 生成 EOS 或达到最大长度
  • 特点:近似搜索(非穷举)高概率序列,生成确定性强、质量稳定

Sampling(随机采样)

  • 每步按概率分布 P(next_token|context) 随机采样一个 token
  • 常配合:Temperature(控制分布平坦度)、Top-k(只从前 K 高概率 token 中采样)、Top-p/Nucleus(从累计概率达 p 的最小 token 集中采样)
  • 特点:输出多样性好,适合创意场景

对比

维度 Beam Search Sampling
确定性 高(相同输入相同输出) 低(每次不同)
多样性 差(倾向安全/通用的输出) 好(能生成新颖内容)
质量一致性 稳定 波动大
重复问题 严重(高概率陷入循环) 轻(随机性打破循环)
适用场景 翻译、摘要等需要准确性的任务 对话、创作等需要多样性的任务

现代 LLM 推理几乎都用 sampling(配合 temperature + top-p),beam search 主要用在翻译等精确任务。


Q: 搜索准确性不高如何排查?

系统性排查框架(按搜索管道逐步定位):

  1. Query 理解:分词是否正确(新词/专有名词)?意图识别是否准确(导航 vs 信息 vs 交易意图)?query 改写/扩展是否合理?

  2. 召回阶段:倒排索引覆盖率如何?是否存在漏建索引?向量检索的 embedding 质量如何?是否有足够的多路召回策略(文本匹配+语义+实体)?

  3. 排序模型:特征覆盖是否完整(文本相关性+用户行为+时效性+权威性)?模型是否过时(在线数据分布漂移)?是否存在 position bias?

  4. 数据质量:索引文档是否完整和最新?是否有 spam/低质量页面污染?更新频率是否匹配需求?

  5. 评测标准:评估指标是否合理(NDCG/MAP/MRR)?标注标准是否一致?是否用了足够多样的 query 样本?

快速定位方法:挑选 bad case,手动检查每个环节的中间结果(召回列表->特征值->排序分数),找到第一个出问题的节点。


Q: 召回和排序哪个阶段最可能出问题?

取决于具体症状

  • 相关文档完全未出现在候选集中 -> 召回问题。可能原因:索引缺失、query-document 语义 gap 大、向量检索 recall 不足。
  • 相关文档在候选集中但排名靠后 -> 排序问题。可能原因:排序特征不足、模型能力弱、正负样本不均。

核心原则:召回决定天花板,排序决定实际效果

  • 召回阶段丢失的文档无论排序多好都救不回来
  • 但排序阶段如果模型能力强,即使召回噪声多也能将好结果排在前面

实践经验:大部分系统改善来自召回优化(增加多路召回提升 recall)+ 精排优化(用更强的 cross-encoder)。粗排通常是简单模型快速过滤,影响相对小。


Q: BERT和GPT的预训练方式区别?

对比 BERT GPT
架构 Encoder-only(双向) Decoder-only(单向)
预训练任务 MLM(Masked Language Model,随机 mask 15% token 预测) + NSP CLM(Causal Language Model,从左到右预测下一个 token)
上下文 看到完整上下文(双向 attention) 只看左侧上下文(causal mask)
训练效率 每步只有 15% token 有 loss 信号 每个 token 都有 loss 信号(更高效)
适用任务 理解类(分类/NER/相似度) 生成类(续写/对话/推理)
推理方式 一次性编码整个输入 自回归逐 token 生成

为什么 GPT 范式胜出:(1) CLM 训练信号密度高(100% vs 15%)更适合大规模预训练;(2) 自回归天然支持生成(统一了理解和生成);(3) In-context Learning 只在自回归模型中自然涌现。


Q: 生成式搜索能否保证top-1准确性?如何提高?

不能绝对保证。生成式搜索(如 DSI/GENRE)让模型直接生成文档 ID 或标题,本质上受制于 LLM 的幻觉问题——模型可能生成不存在的文档或混淆相似文档。

提高准确性的方法

  1. 约束解码(Constrained Decoding):限制每步只能生成索引库中存在的有效前缀(Trie 约束),从根本上避免生成非法 ID。
  2. 检索+验证:生成答案后回查知识库,确认答案有据可依。若找不到支撑文档则标记为不确定。
  3. 置信度估计:计算生成概率或 entropy,低置信度时 fallback 到传统检索排序管道。
  4. Fine-tune + 数据增强:用高质量 query-document 对微调模型,增加训练数据多样性和覆盖度。
  5. 混合架构:生成式检索作为召回通道之一,与传统向量/关键词检索合并后精排。

Q: Agent服务高可用和稳健性如何保证?

LLM Agent 系统相比传统服务有更多不确定性(LLM 输出不确定、工具调用可能失败、链路长),需要多层次保障:

  1. 重试机制:LLM API 调用失败(超时/限流/500错误)自动重试,指数退避(1s/2s/4s),最大重试 3 次。不同错误码区分处理(限流等待 vs 服务错误切换 provider)。

  2. 超时控制:每个环节设置独立超时——LLM 调用 30s、工具执行 10s、总链路 120s。超时后优雅降级而非无限等待。

  3. 降级策略:复杂 Agent(多步推理+工具调用)失败时 fallback 到简单流程(直接 LLM 回答/模板回答)。保证用户总能得到响应。

  4. 状态检查点:长链路 Agent(如 10 步以上的任务)保存中间状态到持久化存储。任何步骤失败后可从最近检查点恢复,无需从头重来。

  5. 监控告警:实时监控关键指标(成功率/P99 延迟/Token 用量/工具调用失败率),异常自动告警。建立 SLO(如 >99% 请求在 60s 内返回)。

  6. 多副本 + 负载均衡:Agent 服务无状态设计,水平扩展 + 健康检查 + 自动摘除故障实例。


Q: 生成式排序了解吗?

将排序问题建模为生成任务,利用 LLM 的强大语义理解能力做相关性判断。

代表工作

  • RankGPT:输入 query + N 个候选文档,让 LLM 通过 sliding window 方式输出排序后的文档 ID 列表。窗口大小如 20,逐步 bubble-sort 式精排。
  • Listwise Ranking:一次性输入全部候选,LLM 输出排序结果。
  • Pairwise Ranking:对每对文档判断谁更相关,统计胜负得出排序。

优点:利用 LLM 的zero-shot 语义理解,无需领域标注数据即可有强排序能力。在 BEIR 等 out-of-domain 评测中表现优异。

缺点:推理成本极高(每个 query 需要多次 LLM 调用),延迟不适合在线服务。通常作为离线评测或蒸馏教师使用。


Q: 如何构造排序模型训练数据?如何解决正负样本不均?

训练数据构造方法

  • 点击行为数据:用户点击为正样本,曝光未点击为负样本。注意 position bias(高位自然点击多)需要去偏。
  • 人工标注:多级相关性评分(如 0-4 级:无关/稍相关/相关/很相关/完美匹配)。成本高但质量好。
  • LLM 标注:用 GPT-4 等强模型评估 query-doc 相关性,作为弱标签。成本适中。
  • 对比学习:从用户行为构造正负对(点击 vs 未点击、停留时间长 vs 短)。

正负样本不均解决方案

  1. 负采样(Negative Sampling):从全量负样本中采样子集。策略:随机采样(简单)、困难负采样(选与 query 语义相似但不相关的文档,训练效果更好)。

  2. Pairwise 训练:构造 (query, pos_doc, neg_doc) 三元组,用 margin ranking loss 训练。不依赖绝对标签,天然处理不均衡。

  3. Listwise 训练:以整个排序列表为单位训练(如 LambdaRank),直接优化 NDCG 等排序指标。

  4. Focal Loss:降低易分类样本的 loss 权重,让模型聚焦于难样本。相当于自动调节正负样本权重。

  5. 过采样/欠采样:过采样正样本或欠采样负样本使比例接近。简单但可能损失信息或引入过拟合。