Few-shot 示例如何选择?
简化版
Few-shot 示例应优先保证标签正确、格式一致,并覆盖目标输入的难点与边界;不是越多越好。固定少量代表性示例适合稳定任务,输入分布复杂时可按语义、结构、语言和难度动态检索,再做去重与多样性重排。最终用相同 Token 预算比较准确率、格式成功率、延迟和对示例顺序的敏感性。
详细版
选择流程是先建经过审核的候选库,为每条记录任务类型、标签、语言、长度和失败标签;在线从与查询相似的候选中召回,再用 MMR 或分桶约束避免全是同类。示例必须展示完整输入—输出契约,不能混入错误答案、冲突规则或真实敏感数据。
示例数量受上下文预算限制。三个高度重复的例子通常不如“正常、边界、拒答”各一个;过度相似会诱导复制具体实体,过度不同又无法提供有效模式。评测需与 zero-shot 和随机 few-shot 对照,按任务切片,并扰动顺序确认效果不是偶然位置偏置。
审核示例库 -> 相似召回 -> 标签/难度覆盖 -> 去重重排 -> Token预算裁剪 -> Prompt
完整版教学
一、示例在 Prompt 中教什么
Few-shot 不会更新模型参数,而是在当前上下文中展示任务映射。它可以说明标签语义、推理步骤、语气和输出格式,尤其适合自然语言难以精确定义的边界。示例既是数据,也是临时规范。
因此错误示例的危害很大。一个标签错或 JSON 不合法的例子会与文字规则冲突,模型可能模仿它。候选库必须像测试数据一样有审核、版本和来源,而不是随手从线上日志复制。
二、相关性与多样性如何平衡
相关示例让模型看到近似输入的处理方式,多样示例则覆盖不同决策边界。只按 embedding 取最近 Top-k,常得到多个近重复例子;只追求多样又可能远离查询。MMR 用相关性减去候选间相似度来折中:
score(x) = λ·sim(x, query) - (1-λ)·max sim(x, selected)
当 λ=0.7 时更重查询相关,λ=0.4 时更重多样。参数应通过验证集选择,并加入标签配额,避免分类任务的示例全来自同一类。
记忆钩子:示例选择不是“找最像的 k 条”,而是“用有限位置覆盖这道题最需要的决策边界”。
三、哪些维度值得做元数据
除了语义向量,还应记录标签、语言、输入长度、数据来源、难度、时间和典型错误。对 SQL 生成,数据库方言和 schema 结构比句子表面相似更重要;对客服分类,渠道与产品线可能是关键。结构化过滤先缩小候选,再做向量召回更可靠。
| 维度 | 作用 | 例子 |
|---|---|---|
| 标签 | 保证类别覆盖 | 正例、负例、拒答 |
| 结构 | 匹配问题形态 | 单表、多表、嵌套查询 |
| 难度 | 提供适当示范 | 普通、歧义、边界 |
| 语言/地区 | 避免风格错配 | 中文、英文、术语地区差异 |
| 安全级别 | 展示拒绝边界 | 可回答与需升级人工 |
元数据本身也要可维护,字段过多但无人标注会让检索规则失真。
四、数量与 Token 预算
更多示例会占用上下文,推高 prefill 延迟,并挤压用户材料和输出空间。示例的边际价值通常递减。应按 Token 而非条数比较,因为一个长示例可能占据五个短例子的预算。
假设总上下文预算 8000 Token,系统规则 800、用户材料 4000、输出预留 1200,只剩 2000 给示例。若候选分别为 300、500、900、1100 Token,不能盲目取四条;可以选 300+500+900=1700,并保留安全余量。长示例还可裁剪无关字段,但不可破坏输入输出对应关系。
五、动态检索有哪些风险
动态 few-shot 能适应长尾,却引入检索失败、延迟和注入风险。线上日志中的示例可能含恶意文字或个人信息,不能未经清洗直接进入高信任 Prompt。查询包含敏感字段时,也不应把它发送到权限不匹配的向量库。
示例库必须只存经过批准的内容,并把示例包在明确的数据边界中;检索结果不能修改系统规则。可缓存常见查询类型的选择结果,同时记录示例 ID,便于复现某次回答。召回为空时要有稳定 zero-shot 回退。
六、顺序为何也会影响答案
模型可能更关注靠近用户问题的近期示例,也可能受到标签连续、长度和答案分布影响。若最后一个例子是负类,预测更偏负类,就是位置偏置而非真正规则学习。选择算法与排序算法应分开。
可把最相关或最复杂示例放近查询,把通用格式示例放前面;也可在评测中随机多种顺序取平均。如果小幅换序导致准确率从 85% 降到 65%,说明 Prompt 不稳,应增强文字规则或减少相互冲突示例。
七、怎样做选择策略实验
至少比较 zero-shot、固定人工集、随机 k 条、相似 Top-k 和多样性重排。保持模型、温度、总示例 Token 与测试集一致,测任务正确率、格式成功率、延迟和成本。动态策略还要测召回耗时与库更新后的回归。
例如在 500 条分类测试上,固定 3-shot 为 82%,最近邻为 86%,MMR+标签覆盖为 88%;但顺序扰动后标准差分别是 1、5、2 个百分点,则 MMR 不仅均值更高也更稳。需要用配对统计判断差异是否可靠。
八、常见误区与追问
- 误区:示例越多效果越好。 冗余会挤占上下文、增加成本并带来复制偏置。
- 误区:向量最相似就是最佳示例。 标签、结构和难度覆盖同样重要,近邻可能高度重复。
- 误区:线上成功回答可直接加入示例库。 可能含错答、隐私或注入内容,必须审核。
- 追问:固定还是动态 few-shot? 分布稳定且规则少用固定集;长尾复杂、候选库可靠时用动态检索。
- 追问:示例顺序怎么定? 通过位置消融选择,并检查扰动后稳定性,不依赖直觉。
- 追问:如何防模型照抄实体? 对实体做脱敏与多样化,明确任务规则,并测试反事实输入。
九、加强记忆
Few-shot 选择可记成“真、近、异、短、稳”:答案先保证真实正确,候选与查询相关,同时保持标签和难度多样,在 Token 预算内选最有信息量的组合,最后用顺序扰动和多种基线验证稳定。示例是临时训练数据,管理强度应接近小型数据集,而不是 Prompt 装饰品。