移动的质心

移动的质心

March 29, 2026

所有的 LLM 工程手段,本质上都在做同一件事:conditioning 一个概率分布,让它的质心靠近人类意图,同时压缩尾部风险。

这个抽象的起点,是放弃"逼近正确答案"的直觉。后者预设了 ground truth 的存在——在分类任务里成立,在语言生成里几乎从不成立。真正的问题不是"输出是否正确",而是"输出是否对当前 context 合适"。一旦接受这个前提,优化目标就从逼近固定终点,变成了持续 conditioning 一个动态分布。

理解这件事的最好方式,是跟着一个请求从进入模型到产生输出走一遍,看工程手段在哪里介入。

一个 token 序列进入模型,模型在每一步从一个条件概率分布里采样下一个 token,直到输出完成。这个分布不是固定的——它由模型参数和当前 context 共同决定。Context 是什么,分布就长什么样。这个机制决定了所有的干预都必须回答同一个问题:如何在采样发生之前、之中或之后,让分布更接近我们想要的形态。

推理开始之前,有三类干预可以发生。最直接的是改变 context 的信息密度:RAG 把相关文档注入进来,Memory 系统把历史状态带入,MCP 的 data-fetch 把外部系统的实时状态 feed 进 context。Context 越接近真实状态,采样的条件概率越准,质心自然移动。第二类干预是注入行为先验——不是告诉模型答案,而是把专家的程序性知识压进 context,约束模型倾向于走的路径,而不是目的地本身。Fine-tuning 是这个逻辑的激进版本,直接把行为模式烧进参数权重。第三类干预更暴力:用 JSON schema 或 structured output 直接截断输出子空间,把不合法的 token 路径在采样阶段硬性排除。前两类是引导,第三类是修剪。

推理过程中,工具调用引入了一个不同性质的干预。模型不再只是采样——它调用外部工具,工具的返回值重新进入 context,持续 condition 后续的每一步推理。这不只是补充信息,而是把不确定性从模型内部转移到了外部系统。幻觉的根源之一是模型被迫从参数记忆里编造它不确定的事实;工具调用把这部分不确定性外包出去了。

推理结束之后,还有最后一类干预:不移动分布本身,而是在输出侧做 rejection sampling。运行、评估、重试——这个 harness 逻辑的前提是:与其把分布调到完美,不如多采样几次,用确定性的评估逻辑筛选。Reflection loop 是它的变体,让模型看到自己的输出再修正,把单次采样变成了迭代 conditioning。

这个时间轴上的分布对应三种不同的工程哲学:把条件给足(前置)、让模型接地气(中间)、不行就再来(后置)。三者都有代价——只依赖前置的系统在 edge case 面前脆弱,只依赖后置的系统计算成本失控。成熟的工程实践往往是三者的组合,理解每类干预在时间轴上的位置,是做出合理组合的前提。

再看那些让人眼花缭乱的新技术——新的 agent 框架、新的 context 管理方案、新的 evaluation 工具——会发现它们几乎都能在这个坐标系里找到位置。技术在变,但根本问题没有变:如何在一个概率输出系统里,系统性地让质心靠近人类意图。