SuperAPI AI 工具集

dspy-knn-few-shot

通用与其它

查看项目

更新于 10-15 23:58

技能介绍

用途:在 DSPy 中实现按输入动态选择少样本演示。dspy.KNN 是内存最近邻检索器,把训练集每条示例用嵌入函数转成向量;查询时对新输入做嵌入,计算点积相似度,返回最相似的 k 条示例。dspy.KNNFewShot 是优化器,内部结合 KNN 与 BootstrapFewShot,编译学生程序后每次前向调用先检索 k 条最近示例,再作为底层模块的少样本演示,因此演示随输入变化。

主要能力:支持任意嵌入函数(如 sentence-transformers 的 all-MiniLM-L6-v2、OpenAI text-embedding-3-small 或自定义 callable),通过 dspy.Embedder 包装;KNNFewShot 可透传 BootstrapFewShot 参数(metric、max_bootstrapped_demos、max_labeled_demos 等);compile(student, *, teacher=None) 返回带动态检索的副本。

使用方式:准备 dspy.Example 训练集并 with_inputs;创建 embedder;用 dspy.KNNFewShot(k=3, trainset=trainset, vectorizer=embedder) 编译模块,之后每次调用自动检索。若只需检索,可单独用 dspy.KNN(k, trainset, vectorizer),返回按相似度排序的 Example 列表。

适用场景:训练示例覆盖多种子任务、输入差异大(多类别分类、跨领域问答);静态示例反而干扰模型;有至少 20-50 条标注示例。

限制:示例少于 10 条、输入几乎相同、或需要优化指令而非演示选择时不宜使用(后者可用 MIPROv2)。检索有少量嵌入与相似度计算开销;每条演示增加提示长度,示例较长时应减小 k。点积相似度要求向量理想上已归一化,否则与余弦相似度可能不一致。具体效果与收费信息暂未提供。