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 的数据