大家好,我是何三,独立开发者
7MB。
包含引擎、模型、分词器,全塞在一个 WASM 包里。跑语义搜索,不需要 GPU,不需要调 API,浏览器里就能跑。
没错,我说的是 ternlight,一个刚在 GitHub 上火起来的项目,515 Star(约 500+)。它做的事很纯粹——把语义嵌入(semantic embeddings)做到极致的小、极致的快。

这东西解决什么问题?
做过语义搜索、RAG、向量数据库的都知道,传统嵌入模型有多痛苦。
拿最常用的 all-MiniLM-L6-v2 来说,模型文件几百 MB。你部署到生产环境,要么租个 GPU 实例(烧钱),要么调 OpenAI 的 Embeddings API(每次调用都在滴血)。想在前端浏览器里跑?想都别想。
ternlight 的作者显然也被折磨过。他搞了个骚操作——三元量化。
啥意思?
传统模型的权重参数是浮点数(比如 0.12345,-0.67890),计算量巨大。ternlight 把所有权重压缩成 -1、0、+1 三个值。
对,就这么粗暴。
权重只有三个可能的值,那推理就变成了简单的加法和减法——没有乘法,没有除法,没有任何复杂运算。
说实话,这块细节我刚开始也没完全搞懂——量化感知训练(QAT)这东西挺深的。但原理大概是这样:模型在训练阶段就「假装」自己是三元模型,等训练完,它已经学会了用这三个值来表达语义信息。

效果怎么样?
他们测过,Spearman 相关系数 0.844(base 版本),跟原始 teacher 模型差距不大,但体积缩小了 几十倍。
说到这个三元权重,让我想起一个事
前几年 BitNet b1.58 论文出来的时候,圈内一片「这不可能」。结果微软研究院真就搞出来了,权重只用 -1、0、+1,效果还没崩。ternlight 就是站在这个肩膀上做的。
你看,技术圈就是这样——大家都在卷参数量、卷浮点精度,突然有人站出来说:「要不我们试试用整数?不对,试试用三个数?」然后居然跑通了。
这感觉就像——大家开车都在比排量大,结果有人搞了辆自行车,骑得还挺快。
上手体验:真的就一行代码
装 ternlight 很简单,npm 装一下:
npm install @ternlight/base
然后你就可以写:
import { embed, cosineSim, similar } from '@ternlight/base';
// 两句话的语义相似度
cosineSim(embed('我忘了密码'), embed('如何重置密码'));
// → 0.88(非常高)
// 在一堆文档里找最相关的
similar('我想退款', [
'退款流程:如何把钱拿回来',
'查看物流状态',
'修改收货地址',
]);
// → 第一个结果相似度 0.70
注意,这段代码跑在 CPU 上。服务器端能用,浏览器里也能用。Cloudflare Workers、Deno、Bun,全支持。
性能数据也挺猛:
| 版本 | 体积(gzip) | 每次嵌入耗时 | 单线程吞吐 |
|---|---|---|---|
| @ternlight/mini | 5.0 MB | 2.5 ms | ~400 emb/s |
| @ternlight/base | 7.2 MB | 5.1 ms | ~195 emb/s |
5 毫秒一次嵌入,这速度——怎么说呢,你打字的速度都没它快。

我自己试了一下,在浏览器里跑了一个搜索 2000 篇文档的 Demo,输入第一个字符结果就出来了,真的是边打边搜。
Vite 里用的话注意加一行配置:
// vite.config.js
export default {
optimizeDeps: {
exclude: ['@ternlight/base'],
},
};
Next.js 用户开个 asyncWebAssembly 就完事。具体配置官方文档写得很清楚,这里不展开了——这个压缩率——算了先不说这个,你先装上看效果。
这种嵌入式嵌入模型的思路,我之前还关注过两个方向:
- Ollama 跑的是大语言模型,重在对话生成,本地跑 LLM 的标杆
- Llama.cpp 纯 CPU 推理,追求极致优化,社区活跃度极高
- ternlight 专注语义嵌入,体型是最小的那个,而且能跑在浏览器里
说白了,如果你需要做本地语义搜索、离线 RAG、或者隐私敏感的应用(比如 Obsidian 插件、浏览器扩展),ternlight 是目前最优雅的方案。之前我也整理过一份《2026 年 GitHub 高性能神器排行榜》,这类小体积高性能的工具越来越多了。
项目地址:https://github.com/soycaporal/ternlight
说点大实话
ternlight 不是万能的。
128 tokens 的输入限制(大概 95 个英文单词),处理长文本得切块。三元量化在极端场景下精度会有损失,特别是领域术语很偏的任务。
但这个方向真的有意思。
5-7MB 的一个包,塞进了引擎 + 模型 + 分词器,还能跑在浏览器和边缘设备上。想想以前要在前端搞语义搜索,基本是天方夜谭。现在 npm install 一下就行了。
我觉得这代表了一个趋势——AI 推理正在从「云端集中」走向「端侧分布」。小模型、本地运行、隐私保护,这些关键词会越来越火。
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用