核心要点

  • 相关性:用 Embedding 检索与当前输入最相似的示例(kNN/语义检索),动态拼入提示。

  • 多样性与代表性:覆盖不同子类型和边界情况,避免示例同质化导致模型偏科。

  • 标签平衡:分类任务各类别示例数量大致均衡,防止模型偏向多数类。

  • 顺序:ICL 对示例顺序敏感,受近因效应影响,关键/正确示例可靠近 query 末尾,并固定/校准顺序。

标准回答

选择什么示例

  • 相似性Few-shot 本质是 In-Context Learning,与当前 query 越相似的示例越有指导性。常用做法是把候选示例做 Embedding,按语义相似度用 kNN 动态检索 Top-k 拼入提示。
  • 多样性与代表性:示例要覆盖不同子类型、难度和边界情况,避免全是简单/同类样本,否则模型只学到片面模式。
  • 标签平衡:分类/抽取任务中,各类别示例数量要大致均衡,否则模型会偏向出现更多的类别。

如何排序

ICL 对示例顺序敏感:模型存在近因效应,更「记得」靠近末尾、靠近 query 的示例。因此可把最相关或最具代表性的示例放在末尾;同时固定顺序以保证可复现,必要时通过多次实验或校准来减小顺序带来的方差。

实践组合

「相似性检索 Top-k + 类别平衡 + 合理排序」通常优于随机固定示例。更多结构化提示技巧见 高级 Prompt 工程技术

常见误区

⚠️ 常见踩坑

别以为「示例越多越好」:示例会大量占用上下文与成本,且无关或失衡的示例反而拉低效果。也别忽视顺序——同一批示例换个排列,准确率可能明显波动。

追问

追问 1为什么用 kNN 检索示例通常比固定示例好?

因为不同输入需要的「参照」不同。kNN 按语义相似度为每个 query 动态挑选最贴近的示例,使提示更有针对性,模型能模仿到与当前问题最相关的输入-输出映射,通常比一套写死的示例泛化更好。

追问 2示例顺序为什么会影响结果,如何降低这种敏感性?

Transformer 在 ICL 时对位置和近因敏感,靠后的示例影响更大,还可能受多数类/首尾偏置干扰。可通过固定并精心安排顺序、做标签平衡、对多种排列取平均或做概率校准来降低方差。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。