Applied Scientist · ML Deep Dive

Amazon ML:如何用 Decoder-only 模型生成句子 Embedding?

从因果hidden states选pooling,处理padding/EOS,设计对比训练与检索评估。

题目重点:从因果hidden states选pooling,处理padding/EOS,设计对比训练与检索评估。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 目标为独立编码query/document用于ANN检索,embedding维度固定;分类、cross-encoder打分是不同输出合同。
  • 使用token hidden states,不把词表logits直接当语义embedding。因果mask和模型位置/tokenizer政策保持一致。

解题路线

  1. 取得某层hidden[B,T,d]与valid mask。last valid token含整个有效前缀上下文,可作简单起点;右padding不能固定取最后数组位置。EOS需模型训练与tokenizer实际支持,不临时加一个随机新token指望好效果。
  2. 平均pool仅对valid tokens。因果模型早期token只看到早期前缀,所以均值和末token语义不同;可比较位置加权pool,但权重是设计选择,需要评估而非证明总优。
  3. L2 normalize后余弦/内积检索是常见合同。若向量接近0需定义处理;均值向量长度受文本长度影响,不规范化直接点积可能排序偏向长度/范数。
  4. next-token预训练目标不保证句子相似度几何适合检索。用(query,positive,negative)对比目标适配表示,避免假负样本,把近重复同意图文档误惩罚;temperature、负样本难度和pooling需一起评估。
  5. 语义检索离线可按查询评Recall@k/MRR/nDCG,并分长短、多语言与新领域;按用户/时间/文档近重复划分,防训练检索库泄漏。在线看有用答案和检索延迟,不能只报embedding余弦更大。
  6. 生成式decoder是否经济要按prefill/批量吞吐评估;大模型embedding可离线批算doc,但query时仍有延迟。量化/降维/ANN提高效率同时测召回损失,embedding版本更新必须重建或区分索引空间。

手动走一遍

右padding序列[订单,已,取消,PAD,PAD],最后有效位置2而非数组位置4;pool前mask掉PAD。长文档截断可能丢末尾证据,须分chunk编码并用doc级聚合,不能单向量宣称覆盖未输入内容。

规模与取舍

每段编码继承decoder prefill成本,dense约O(LT²d+LTd²)。N文档存储O(Nd),原始float32约4Nd字节;ANN结构/副本另计。相似度全扫O(Nd),ANN需说明召回与索引取舍。

易错点与追问

容易失分的边界

  • 取padding hidden。
  • 词表logits当句向量。
  • 未训练表示却保证语义余弦。
  • 向量模型换版但复用旧doc索引。

继续深挖

  • last valid与mean怎样做公平消融?
  • query/doc可否使用不同instruction或pooling?
  • 长文档chunk跨段信息怎样保留?
  • 负样本中有多个正确文档如何改目标?

技术参考

  • SGPT(原论文):decoder检索表示方法参考;本文pooling/部署选择需按任务消融。
✓已复制微信号!