Few-shot Learning
问题
什么是 Few-shot Prompting?如何选择和组织示例?Zero-shot、One-shot、Few-shot 有什么区别?
答案
Few-shot Prompting 是在 Prompt 中给出几个(输入→输出)示例,让 LLM 通过上下文学习(ICL)掌握任务模式。
一、三种模式
| 模式 | 示例数 | 效果 | 适用场景 |
|---|---|---|---|
| Zero-shot | 0 | 基本 | 简单任务,模型理解能力强 |
| One-shot | 1 | 中等 | 格式示范 |
| Few-shot | 2-10 | 最好 | 复杂分类、格式要求严格 |
二、Few-shot 示例设计
将用户评论分类为:功能需求 / Bug 报告 / 使用咨询
评论:「希望能支持导出为 PDF 格式」
分类:功能需求
评论:「点击保存按钮后页面白屏了」
分类:Bug 报告
评论:「请问如何修改密码?」
分类:使用咨询
评论:「批量导入数据时,超过 1000 条就报错」
分类:
三、示例选择原则
| 原则 | 说明 |
|---|---|
| 覆盖所有类别 | 每个分类至少一个示例 |
| 多样性 | 示例之间尽量不同 |
| 代表性 | 选择典型案例 |
| 边界案例 | 包含容易混淆的案例 |
| 一致性 | 示例格式完全一致 |
| 顺序 | 研究发现顺序会影响结果——可随机打乱或将最相关的放最后 |
四、动态 Few-shot
对于不同的用户输入,动态选择最相关的示例(而非固定示例):
- 将所有示例做 Embedding
- 对用户输入做 Embedding
- 用相似度选择 Top-K 最相关的示例
- 放入 Prompt
这就是 Few-shot + RAG 的结合。
常见面试问题
Q1: Few-shot 和 Fine-tuning 该如何选择?
答案:
- Few-shot:立即可用、灵活、无需训练数据、成本低(推理成本略高)
- Fine-tuning:需要标注数据和 GPU、不灵活(换任务要重训)、性能上限更高、推理成本低
规则:先用 Few-shot 验证效果。如果 Few-shot 效果不够且有足够数据,再考虑 Fine-tuning。
Q2: Few-shot 示例的数量越多越好吗?
答案: 不一定。一般 3-8 个示例效果最好:
- 太少(1-2):模式信息不足
- 太多(>10):占用上下文窗口、可能引入噪声、增加成本
- 最佳实践:从 3 个开始,增加到效果不再明显提升为止