一句话讲明白prompt 里的 few-shot 示例别在代码里写死那固定三五个。改成「按当前用户问的问题从一个示例库里实时检索出最相似的几条」塞进去模型照着最贴近的范例答效果比一套通用示例打天下强不少。我在一个工单分类的活儿上换成动态示例后准确率提了一截今天讲怎么做。写死示例的问题在哪few-shot 就是在 prompt 里给模型几个「问题—答案」的范例让它照葫芦画瓢。常见写法是挑三五个自认为有代表性的例子硬编进 prompt所有请求都用同一套。问题是用户问的东西五花八门你写死的那几个例子覆盖不全。我做工单分类时硬编的三个例子都是「退款」「物流」类的结果碰到「发票」「投诉」类工单模型没见过相似范例分得乱七八糟。例子选得越「通用」对具体问题反而越没指导性。动态示例现用现检索思路跟 RAG 一模一样只不过检索的不是知识库文档是「示例」。攒一个示例库。把历史上标注好的「问题 标准答案/标准分类」存进一个向量库每条示例的问题部分做 embedding。我攒了大概两百条覆盖各种问法。来一个新问题先检索最像的 N 条示例。拿用户问题去示例库里向量检索捞出最相似的 3 条。把这 3 条动态拼进 prompt再调模型。def build_dynamic_prompt(query, k3): examples vector_search(embed(query), example_store, k) # 检索最像的示例 shots \n.join(f问{e[q]}\n答{e[a]} for e in examples) return f参照下面例子的格式和判断标准回答。\n{shots}\n\n问{query}\n答关键就在第 2 步每个请求拿到的示例都不一样是当下这个问题最该参照的那几条。问「发票」类的塞进去的就是发票相关的范例问「退款」的塞退款范例。模型每次都看到「跟手头任务最像」的样板。实测对比方式工单分类准确率备注零示例纯指令71%全靠模型理解写死 3 个通用示例79%长尾类别拉胯动态检索 3 个相似示例88%长尾也跟着稳了提升最大的是长尾类别——以前没范例可参照的冷门问法现在也能从示例库里找到最贴近的样板。几个要注意的坑示例库质量是天花板。检索出来的示例如果本身标注就错模型照着学只会错得更自信。我每隔一阵就抽查清洗一遍示例库把标错的、过时的剔掉。这活儿没法偷懒。别塞太多。动态检索容易让人贪心一口气塞十条示例。但示例越多 prompt 越长、成本越高而且会撞上前面说的「中间被忽略」。我固定 3 条再多收益不明显。示例和真问题别混。有回我示例库里混进了带敏感信息的真实工单差点泄露。示例库要单独治理该脱敏脱敏。搭这套我省了不少事。智能体在一个零代码就能配 RAG 的平台上拖出来我把示例库当成第二个知识库挂上去向量检索平台包了prompt 拼接在节点里配。它帮我托住了向量化和检索但「示例库怎么攒、怎么清洗、塞几条」这些判断还得自己来平台替不了你定义什么是好范例。(底层大模型走的讯飞星辰 MaaS现成模型直接调没自建算力)你们 few-shot 是写死还是动态检索示例库多大、怎么维护质量评论区交流下我这两百条总觉得还能再精简。
few-shot示例别写死:按问题动态检索最像的例子
一句话讲明白prompt 里的 few-shot 示例别在代码里写死那固定三五个。改成「按当前用户问的问题从一个示例库里实时检索出最相似的几条」塞进去模型照着最贴近的范例答效果比一套通用示例打天下强不少。我在一个工单分类的活儿上换成动态示例后准确率提了一截今天讲怎么做。写死示例的问题在哪few-shot 就是在 prompt 里给模型几个「问题—答案」的范例让它照葫芦画瓢。常见写法是挑三五个自认为有代表性的例子硬编进 prompt所有请求都用同一套。问题是用户问的东西五花八门你写死的那几个例子覆盖不全。我做工单分类时硬编的三个例子都是「退款」「物流」类的结果碰到「发票」「投诉」类工单模型没见过相似范例分得乱七八糟。例子选得越「通用」对具体问题反而越没指导性。动态示例现用现检索思路跟 RAG 一模一样只不过检索的不是知识库文档是「示例」。攒一个示例库。把历史上标注好的「问题 标准答案/标准分类」存进一个向量库每条示例的问题部分做 embedding。我攒了大概两百条覆盖各种问法。来一个新问题先检索最像的 N 条示例。拿用户问题去示例库里向量检索捞出最相似的 3 条。把这 3 条动态拼进 prompt再调模型。def build_dynamic_prompt(query, k3): examples vector_search(embed(query), example_store, k) # 检索最像的示例 shots \n.join(f问{e[q]}\n答{e[a]} for e in examples) return f参照下面例子的格式和判断标准回答。\n{shots}\n\n问{query}\n答关键就在第 2 步每个请求拿到的示例都不一样是当下这个问题最该参照的那几条。问「发票」类的塞进去的就是发票相关的范例问「退款」的塞退款范例。模型每次都看到「跟手头任务最像」的样板。实测对比方式工单分类准确率备注零示例纯指令71%全靠模型理解写死 3 个通用示例79%长尾类别拉胯动态检索 3 个相似示例88%长尾也跟着稳了提升最大的是长尾类别——以前没范例可参照的冷门问法现在也能从示例库里找到最贴近的样板。几个要注意的坑示例库质量是天花板。检索出来的示例如果本身标注就错模型照着学只会错得更自信。我每隔一阵就抽查清洗一遍示例库把标错的、过时的剔掉。这活儿没法偷懒。别塞太多。动态检索容易让人贪心一口气塞十条示例。但示例越多 prompt 越长、成本越高而且会撞上前面说的「中间被忽略」。我固定 3 条再多收益不明显。示例和真问题别混。有回我示例库里混进了带敏感信息的真实工单差点泄露。示例库要单独治理该脱敏脱敏。搭这套我省了不少事。智能体在一个零代码就能配 RAG 的平台上拖出来我把示例库当成第二个知识库挂上去向量检索平台包了prompt 拼接在节点里配。它帮我托住了向量化和检索但「示例库怎么攒、怎么清洗、塞几条」这些判断还得自己来平台替不了你定义什么是好范例。(底层大模型走的讯飞星辰 MaaS现成模型直接调没自建算力)你们 few-shot 是写死还是动态检索示例库多大、怎么维护质量评论区交流下我这两百条总觉得还能再精简。