一个让我愣住的问题
几个月前,我在 GitHub trending 上看到了一个项目:
Laya --- "Multilingual, non-autoregressive System 1 decision engine. Typed decisions over 100+ languages in a single forward pass --- 33 ms --- trained with reinforcement learning against strictly proper scoring rules."
我的第一反应是:这不是跟 BERT 差不多吗?都是基于 Transformer encoder,都是处理文本,都能做分类......
然后我花了两个晚上深入研究,发现自己大错特错。
它们之间的差异,远比我想象的更深、更本质。
如果你也在 AI 领域做选型,或者对 Agent 架构感兴趣,这篇文章会帮你彻底搞清楚这两个模型的本质区别。
先说结论:它们根本不是一回事
很多人第一眼看到 Laya 的描述,会觉得它是"BERT 的变种"或者"又一个 NLP 模型"。
这是最常见的误解。
BERT 是一个语言理解模型。它的核心能力是:理解一段文本说了什么。
Laya 是一个决策引擎。它的核心能力是:在多个选项中,快速选出一个。
这就像比较"翻译官"和"裁判"------前者要把内容准确传达,后者要在规则内做出判定。两者都需要脑子,但完全不是同一项工作。
用一个更形象的比喻:
BERT 是那个读完了整本书、做了满满一页笔记的人。他理解书里每一个细节。
Laya 是那个站在分岔路口、看了GPS一眼就说出"左转"的人。他不需要理解整条路,他只需要决定下一步往哪走。
在 AI Agent 系统中,这两者甚至可以配合使用------BERT 负责理解,Laya 负责决策。这不是谁替代谁,而是分工协作。
历史背景:一个被忽视的开源先行者
在深入技术细节之前,我想先讲一个有些让人唏嘘的故事。
2025 年 3 月,一位独立研究者 Nandakishor M 在 arXiv 上发表了一篇论文,提出了"非自回归决策模型"的概念------基于强化学习和严格proper scoring rules,在encoder架构上做端到端的决策输出。他开源了模型权重、数据集,发布了PyPI包,在Reddit的 r/LocalLLaMA 社区分享。
几乎没有人关注。
2025 年 9 月,他发表了第二篇论文,进一步完善了这个框架。
2026 年 9 月,TypeSafe AI (由 ChatGPT 联合发明者 Diogo Almeida 创立)发布了 Jev,提出"非自回归决策引擎"的概念,一时间整个AI圈为之震动,被称为"突破性进展"。
然后 GitHub trending 上,突然出现了大量 Jev 相关的开源项目。
而 Laya,正是这个被忽视的先行者------它在 Jev 出现之前一年就被做出来了,并且是完全开源的。
这不是要否定 Jev 的价值(Jev 确实在产品化和生态建设上做得更好),而是说明一个现实:好的技术,不一定有好的时机。Laya 的作者选择了继续开源、继续迭代,而不是抱怨。
这个故事本身,也折射出了当下 AI 领域的一个有趣现象:很多真正的创新,可能比你以为的更早出现在开源社区。
核心差异一:设计哲学根本不同
BERT 的设计哲学
BERT(Bidirectional Encoder Representations from Transformers)是 Google 在 2018 年提出的语言表示模型。它的核心目标是:
学习一个优质的通用文本表示,使得各种下游任务都能在这个表示上做得很好。
BERT 的预训练任务有两个:
- MLM(Masked Language Model):随机遮住15%的词,让模型预测被遮住的是什么。这是一个完形填空任务。
- NSP(Next Sentence Prediction):判断两句话是否是连续的上下文。这是为了让模型理解句子间关系。
BERT 输出的,是一个固定维度的向量表示(768维或1024维)。这个向量包含了输入文本的语义信息,但具体怎么用它来做任务,取决于你接什么下游头------分类器、抽取器、匹配层......
所以 BERT 本质上是一个特征提取器,而非任务模型。
Laya 的设计哲学
Laya 从一开始就不是为了"理解"设计的。它的设计目标非常纯粹:
给定任意文本(state)和一组结构化问题,直接输出决策答案。
它不是特征提取器,它是一个端到端的决策系统。
Laya 的输出是严格结构化的:
- choice(选择):从多个候选中选出一个,并附上每个候选的概率和置信度
- score(评分):在一个有序量表上打分(如0-3表示紧急程度)
- noul(布尔判断):返回P(true),一个经过校准的0到1之间的概率
正因为输出空间是严格概率化的,Laya 永远不会生成文本,不可能产生幻觉,也不可能输出格式错误的JSON。
核心差异二:架构与训练方法
BERT 的架构
标准 BERT 来自 2018 年的论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》:
- BERT-Base:12层 Transformer Encoder,768 hidden dimension,12 heads,110M 参数
- BERT-Large:24层,1024 hidden dimension,16 heads,340M 参数
- 最大输入长度:512 tokens
BERT 的核心创新在于双向理解------通过 Masked Language Model,模型在预测一个词的时候能看到这个词前后的上下文,不像之前的单向语言模型只看左边。
Laya 的架构
Laya 则是 2025 年的产物,架构上更加专门化:
三个专门化的 Checkpoint:
| Checkpoint | 基础模型 | 参数量 | Context Length | 适用场景 |
|---|---|---|---|---|
| laya | ModernBERT-large | 421M | 512 | 英文场景 |
| laya-multilingual | mmBERT-base | 322M | 1024(最高8192) | 100+语言 |
| laya-typed-decisions | ModernBERT-large | 421M | 1024 | 类型化决策工作流 |
架构亮点:
Laya 在 ModernBERT-large(一个现代化的BERT变体)基础上,加了一个专门训练的 Decision Head Transformer:
输入文本(state)+ 结构化问题(typed questions)
↓
[CLS] <type> question: <instructions> [SEP] [MASK] opt0 [MASK] opt1 ... [SEP] <state> [SEP]
↓
┌──────────────────────────────────────────────┐
│ ENCODER: ModernBERT-large (双向注意力) │
│ 28层,hidden 1024,16 heads,GeGLU MLP │
└────────────────────┬─────────────────────────┘
↓
+ Question-Type Embedding(choice=0, score=1, noul=2)
↓
┌──────────────────────────────────────────────┐
│ DECISION HEAD Transformer(~25.2M 参数) │
│ 2层 TransformerEncoder,d=1024,16 heads │
└──────────────┬──────────────────┬────────────┘
↓ ↓
[MASK] 标记提取 [CLS] 状态池化
↓ ↓
Option Scorer ACT / ESCALATE Head
↓
输出:概率分布 + 校准置信度
这个架构的关键创新是:所有问题在单次前向传播中并行处理,不需要多次调用,也不需要生成式推理。
训练方法:RLCD
Laya 的训练方法也跟 BERT 完全不同。
BERT 用的是标准的预训练+下游微调范式:先在大规模语料上做MLM/NSP预训练,再在特定任务数据上微调。
Laya 用的是 RLCD(Reinforcement Learning for Calibrated Decisions)------用强化学习结合严格proper scoring rules来训练决策能力。
所谓"严格proper scoring rules",简单说就是:模型的概率预测必须是"诚实的"------如果模型说某个选项的概率是80%,那它实际正确的频率就应该接近80%。这跟 LLM 那种"我觉得我很自信"有本质区别。
RLCD 训练出来的模型,概率输出是经过数学校准的,不是语言模型那种"听起来自信的文本"。
核心差异三:性能对比
这是最震撼的部分。
在 Laya 的官方 Benchmark(与 Jev 公开数据对比)中:
| 指标 | Laya | Jev(公开数据) |
|---|---|---|
| typed-decisions 准确率(2000个决策) | 0.766 | 0.727 |
| AG News 准确率(4分类) | 0.953 | 0.910 |
| DAIR Emotion 准确率(6分类) | 0.600 | 0.480 |
| ECE(越低越好,概率校准度) | 0.081 | 0.246 |
| P50 延迟(1个问题,T4 GPU) | 32.8 ms | 236-276 ms |
几个关键数字:
- 准确率更高:Laya 在几乎所有任务上都超过了 Jev 的公开数据
- 校准度更好:ECE 0.081 vs 0.246------Laya 的概率输出更诚实,不会出现"嘴上说90%但实际只有60%"的情况
- 速度快近10倍:32.8ms vs 236ms------这是因为 Laya 完全不需要生成式推理
而且 Laya 是完全开源的,有完整的训练代码、数据集、PyPI 包和 Docker 镜像。
核心差异四:使用场景与生态集成
BERT 的经典场景
BERT 自 2018 年以来,几乎统治了 NLP 领域的各个方向:
- 文本分类:情感分析、垃圾邮件检测、内容审核
- 命名实体识别(NER):从文本中抽取人名、地名、机构名
- 问答系统:给定文档,回答相关问题
- 文本相似度:判断两段文本是否语义相似
- 句子嵌入:将句子编码为向量,用于各种检索和匹配任务
BERT 的使用范式通常是:BERT 编码 → 接下游分类器/匹配层 → 输出结果。整个流程需要两阶段建模。
Laya 的经典场景
Laya 的场景更加专一,但专一到极致:
- AI Agent 路由:用户输入来了,先用 Laya 快速判断该调用哪个工具/技能
- 工单分流:客服工单自动分类到对应部门(billing/technical/other)
- 优先级判定:判断请求的紧急程度(not urgent / soon / blocking)
- 风险检测:识别钓鱼邮件、垃圾内容、jailbreak 攻击
- 流失预警:判断用户是否威胁要取消服务
- 审批判断:在 workflow 中做快速的通过/拒绝/升级判断
Laya 的使用极其简单:
from laya import Router
router = Router() # 首次自动下载 checkpoint
state = "Hi, we were billed twice for March. Please refund the duplicate today or we will cancel our plan."
questions = {
"department": {
"type": "choice",
"instructions": "Which department should handle this?",
"criteria": {
"billing": "invoices, payments, refunds",
"technical": "bugs, outages, system errors",
"other": "everything else"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this?",
"criteria": ["not urgent", "soon", "blocking"]
},
"churn_risk": {
"type": "noul",
"instructions": "Does the user threaten to cancel or leave?"
}
}
result = router.predict(state, questions)
print(result["answers"]["department"]["choice"]) # billing
print(result["answers"]["churn_risk"]["noul"]) # 0.87(87%概率)
生态集成
Laya 虽然新,但生态集成已经相当完善:
- LangChain / LangGraph:官方集成,可作为 selector 使用
- LlamaIndex:官方集成,用于 selectors
- CrewAI:用于 agent 路由
- MCP(Model Context Protocol):官方 MCP server 支持
- ONNX Runtime:支持 CPU 推理,优化生产部署
- Docker:官方镜像,一键部署
- TypeScript / Node.js:有独立的 laya-ts 包,npm 可安装
核心差异五:多语言能力
BERT 有多语言版本(mBERT),在104种语言上做过预训练。
Laya-multilingual 走得是另一条路------它专门针对决策场景优化,支持100+语言,而且在很多语言上的决策准确率远超 BERT 的多语言版本。
在 MASSIVE 数据集(51种语言,20选项意图分类)上的测试结果:
- 英文:0.58 准确率
- 泰语:0.48(相比英文版提升了40个百分点)
- 韩语:0.45
- 印地语:0.43
- 阿拉伯语:0.40
对于非英语场景,Laya-multilingual 的决策质量显著高于单语版本,这得益于专门针对决策任务的训练数据和方法优化。
核心差异六:概率校准的意义
这是我认为最值得单独讲的一点。
BERT 以及大多数分类模型,输出的"概率"其实是一个soft label ------它是模型在训练中学习到的相对置信度,但这个数字没有数学上的诚实性。
换句话说:当 BERT 说"我有90%的把握这是垃圾邮件",你其实不知道它实际正确的频率是不是90%。它可能60%的时候就敢说90%。
这就是所谓的**概率校准(Calibration)**问题。
ECE(Expected Calibration Error) 是衡量校准度的标准指标------越低越好。
Laya 的 ECE 是 0.081 (极好),Jev 是 0.246,差距非常明显。
这意味着:
- Laya 的输出可以直接用于风险控制决策:模型说"这封邮件有87%的概率是钓鱼",你可以信任这个数字,并据此设定阈值
- BERT 的输出更适合做排序和分类,但不适合做精确的概率决策:如果你需要精确的风控阈值,BERT 的概率值是不可靠的
两者如何协作?
这是最有意思的部分。
在真实的 AI Agent 架构中,BERT 和 Laya 实际上是互补关系:
用户输入
↓
┌─────────────────────────────────────┐
│ Laya(快思考决策层) │
│ "这个请求属于什么类型?该走哪条路?" │
└──────────────┬──────────────────────┘
↓
┌──────────┴──────────┐
↓ ↓
工具A调用 工具B调用
↓ ↓
┌─────────────────────────────────────┐
│ BERT(深度理解层) │
│ "理解返回内容,生成人类可读的回复" │
└──────────────┬──────────────────────┘
↓
最终输出
一个具体的例子------智能客服系统:
- 用户发来一条消息 → Laya 判断:部门(billing)、紧急度(soon)、流失风险(高)
- 高流失风险 + billing → 触发人工接管流程,同时给用户发送安抚话术
- 历史工单数据 → BERT 做语义理解和相似工单检索,辅助人工客服
- 最终回复 → BERT 生成温暖、人性化的客服回复
在这个流程里,Laya 负责需要毫秒级响应的快速决策,BERT 负责需要深度理解的内容生成。两者各司其职,缺一不可。
技术选型指南
如果你正在为某个场景选型,这里有一个实用的判断标准:
用 BERT 当:
- 需要理解文本的语义内容
- 需要做文本生成或内容摘要
- 需要输出非结构化的自由文本
- 场景本身不要求毫秒级响应
- 需要用到句子的向量表示做相似度匹配/检索
用 Laya 当:
- 需要在多个候选选项中做快速选择
- 需要对请求做分流、路由、分类
- 需要做布尔判断(是/否、风险高/低)
- 对响应延迟有严格要求(<100ms)
- 需要可信赖的概率输出用于风控决策
- 在 AI Agent 中做工具路由
两者都用当:
- 构建完整的 AI Agent 系统
- 需要"先决策、再理解"的双层架构
- 企业级智能客服、工作流自动化
结语
BERT 和 Laya,代表了 AI 模型进化史上的两个方向:
BERT 代表的是"大一统"思路------一个模型学习通用表示,所有的任务都建立在这个表示之上。它优雅、通用,打开了 NLP 领域的新时代。
Laya 代表的是"专精化"思路------不为理解,只为决策。用最合适的架构、最合适的训练方法,做最纯粹的一件事。它出现在 AI Agent 爆发的时代,找到了自己的生态位。
两者没有高下之分,只有适用场景的不同。
真正重要的,是理解每种工具的能力边界,然后在正确的场景中使用它。
最好的 AI 系统,往往不是最强的模型,而是最合适的组合。
💬 讨论
你在项目中用过 Laya 或者类似的决策引擎吗?或者有没有遇到过"该用 BERT 还是该用其他模型"的纠结?来评论区聊聊你的经验!