跳到主要内容
Documentation

嵌入锚点设计原则

概览

版本:最新版

嵌入锚点设计原则

概览

本页汇总了编写嵌入锚点包的设计原则。嵌入锚点包是 embedding 信号规则用于余弦匹配的候选短语集。本页将随可选择启用的图像模态锚点包(config/signal/embedding/image-routing.yaml)一同引入的编写指南加以推广,使同一套思路同样适用于文本模态和图像模态锚点包。

请在阅读 嵌入信号 教程后再阅读本页。该教程介绍具体机制(candidatesthresholdaggregation_methodquery_modality);本页则介绍如何构建能可靠路由的锚点包,而不是一个看似合理、在规模化应用中却会误判的锚点包。

主要优势

  • 将锚点编写变成可重复的锚点包设计工作流,而不是反复试错地调整短语。
  • 将完整锚点包而非任何单个短语视为信号,有助于减少假阳性。
  • 明确阈值校准与验证,使锚点包持续与生产环境中的嵌入模型保持一致。

解决什么问题?

如果锚点过度拟合字面措辞、遗漏良性反例,或复用其他模型的阈值,嵌入规则在评审时可能看似合理,实际路由却仍表现不佳。本指南说明如何构建能泛化到真实流量的锚点包,而不是只能匹配精挑细选的示例。

何时使用

每当创建或修订 embedding 信号规则时,都应采用这些原则,尤其是在以下情况下:

  • 添加新的文本或图像路由类别,
  • 针对不同的嵌入模型重新校准阈值,或
  • 调试现有锚点包产生的假阳性或假阴性。

配置

将这些原则应用于 嵌入信号 教程所述的同一组 embedding 信号字段:

  • candidates 应使用多个语义各异的锚点完整覆盖整个类别,
  • aggregation_method 应与触发路由所需的条件相符,即任一强锚点命中或整个锚点包达成广泛共识,且
  • threshold 必须根据已部署的模型和带标签语料库进行校准。

原则 1:锚点描述输入是什么,而不是其中有哪些词

嵌入锚点在模型的语义空间中进行匹配,因此它应描述内容的特征,而不是你预期会出现的字面字符串。

  • 对于图像模态规则,这意味着描述视觉特征。photograph of a passport page 之所以有效,是因为护照具有可识别的视觉结构;the words "passport number" 则无效,因为视觉编码器嵌入的是视觉布局,而不是经 OCR 识别的文本。
  • 对于文本模态规则,这意味着描述请求的类型a request to summarize a legal contract 能够泛化;将某份特定合同中的一个句子原样粘贴为锚点,则会对该措辞过度拟合。

快速自检:如果一个锚点只有在某个特定字面词元出现时才能匹配,那么它描述的是文本,而不是特征,因此泛化能力会很差。

原则 2:锚点包才是信号,而非任何单个锚点

余弦相似度存在噪声。用一个锚点匹配一个输入,在规模化应用中会产生假阳性。稳健性来自整个锚点包层面的冗余,而非任何单独短语。

  • 为每个类别编写足够的锚点(8-15 是一个合适的实践范围),从多个角度覆盖该类别。锚点太少会使规则脆弱;过多近似重复的锚点则会造成过度拟合,却不会增加覆盖面。
  • 不要以单个锚点触发作为路由决策的门槛。应将锚点包整体视为证据。
  • 由于任一锚点都可能较弱,即使移除区分能力最差的锚点,锚点包仍应保持正确行为。如果单个锚点承担着决定性作用,则锚点包构建得还不充分。

原则 3:显式覆盖良性类别(负空间锚点)

最常见的失败模式是,良性输入逐渐更靠近敏感锚点,而不是任何描述良性内容的锚点,这只是因为锚点包中没有任何内容描述良性情况。解决办法是做加法:添加对良性/环境类别作正向描述的锚点,而不是试图做减法或将其列入阻止列表。

图像锚点包提供 ambient_office_imagery 正是出于这个原因:白板、会议室、普通办公场景,以及工厂/仓库的广角照片,为低敏感度输入提供了可匹配的对象,使其保持低置信度,而不会意外落在敏感锚点附近。任何锚点包都应照此处理:对于每个作为路由依据的敏感类别,都要为同一使用场景中的常规、非敏感内容提供专属锚点。

原则 4:根据模型和语料库校准阈值

阈值无法跨嵌入模型或模态直接移植。

  • 图像锚点包使用 0.10,这是针对随附的 multi-modal-embed-small 模型校准的;该模型的图像-文本余弦值大致落在 0.04 到 0.17 的范围内。文本模态的默认值 0.70 会阻止所有图像规则。
  • 不同的嵌入模型,或同一模型面对不同的内容分布,都会有不同的工作范围。务必根据自己的带标签评估集进行校准,而不是从示例锚点包复制阈值。
  • 对于彼此独立的敏感类别,aggregation_method: max 通常是正确选择:任何单个强匹配都足以触发。仅当你有意要求整个类别得到广泛支持时才使用 mean

原则 5:依赖锚点包之前,先将其作为整体进行验证

锚点包是一个小型分类器。应像对待模型变更一样对待它的变更:

  • 保留一个小型带标签语料库(包含每个类别的敏感与良性示例),并在编辑前后对照检查锚点包的接受/拒绝行为。
  • 添加或移除锚点时,重新检查良性语料库是否仍低于阈值,因为添加敏感锚点也可能随之拉高良性输入的分数。
  • 记录语料库校准时所依据的模型和阈值;两者都是锚点包契约的一部分。

参考:可选择启用的图像锚点包

config/signal/embedding/image-routing.yaml 是五项原则的完整示例:三个类别(identifier_document_imagerycode_or_terminal_imageryambient_office_imagery),每类 8 个锚点,aggregation_method: max,以及针对模型校准的 0.10 阈值。将其内联到 routing.signals.embeddings 下,然后将 ambient_office_imagery 锚点替换为针对你自己的部署场景的内容,并重新校准。

有关字段参考和完整的路由示例,请参阅 嵌入信号 教程。