Constrained Decoding(受限解码)

在文本生成过程中实时约束模型输出必须符合指定语法规则(如JSON Schema)的推理技术。通过在每一步解码时屏蔽不合法的token,从根本上保证输出格式正确,是Structured Outputs的底层实现机制。

Constrained Decoding(受限解码)

一句话理解

在模型"一个 token 一个 token 吐字"的过程中,实时屏蔽掉所有会导致格式违规的 token,让输出从生成过程本身就不可能出错。

工作原理

大语言模型生成文本时,每一步都会为词表中的所有 token 计算概率分布,然后选出概率最高的(或按概率采样)。Constrained Decoding 在这个选择环节加了一层语法约束

  1. 维护一个目标格式的状态机(如 JSON Schema 对应的有限状态自动机)
  2. 每次解码前,根据当前状态计算哪些 token 是"合法的下一步"
  3. 将不合法 token 的概率置为 0(mask),只从合法 token 中采样

这样模型在每一步都只能输出符合格式要求的 token,最终结果必然是合法的。

与后处理校验的区别

后处理校验Constrained Decoding
时机生成完成后检查生成过程中实时约束
保证不保证,需要重试100% 保证格式合法
类比运行时类型检查编译期类型约束
性能可能需要多次重试一次生成即合法

应用场景

  • Structured Outputs:OpenAI 的 strict: true 底层就是 Constrained Decoding
  • JSON Mode:各厂商的 JSON 输出模式也依赖类似技术
  • 代码生成:保证输出的代码在语法上合法
  • 结构化数据提取:从非结构化文本中提取符合 schema 的数据