Needle 是 Cactus Compute 开源的边缘基础模型,整模型仅 8-29MB,采用 2-bit 量化与 Simple Attention Network 架构,可在手机、可穿戴设备、机器人和微控制器上完成工具调用、结构化抽取、文本嵌入与语音识别。它主动放弃通用闲聊,换来超越 10 倍体积模型的工具调用精度,并支持校准置信度与字节级语法约束。
适用人群:1. 嵌入式与 IoT 开发者,需要在微控制器、智能家居面板、车载或机器人固件中嵌入自然语言意图解析能力;2. 移动端与可穿戴应用开发者,希望在不上云的前提下实现本地工具调用、表单抽取与语义检索;3. 端侧 AI 研究者与算法工程师,关注超小体积模型的量化、语法约束解码与部署深度弹性等工程问题。
适用场景:1. 智能家居与车载语音中控:用户一句口语触发多个设备操作,模型输出有序的函数调用列表,无法覆盖的请求返回空列表而不乱猜;2. 票据与表单结构化抽取:把杂乱的发票、订单、通知、预约文本按声明的 schema 解析成带类型的字段,解码语法保证结果一定可解析;3. 本地语义检索与路由:用同一模型产出句子向量,在设备侧完成匹配、去重与请求分发,配合 Whistle 还能把音频直接变为工具调用。
推荐理由:如果你正在做端侧交互,却在为模型体积与云端延迟发愁,Needle 值得认真评估:8-29MB 单文件即可落地,装饰器式 API 让函数签名直接变成工具定义,还附带置信度与语法约束,能显著降低端侧自动化的幻觉风险与集成成本。
项目定位与背景
大模型落地最大的阻力往往不是效果,而是体积与功耗。当目标设备是手机、手表、智能家居面板、机器人,甚至是内存只有几百 KB 的微控制器时,几十亿参数的模型根本无从谈起。Cactus Compute 开源的 Needle 正是冲着这个缝隙来的:它把整个模型压缩成一个 8-29MB 的单一二进制文件,用 2-bit 量化换来端侧可运行的基础模型能力。它主动放弃通用聊天,把预算全部押在移动端工具调用与结构化抽取上,定位非常明确,不是替代聊天机器人,而是成为设备内部的自动化中枢。
核心功能与技术架构
Needle 提供四类能力。第一是工具调用:你声明应用暴露的函数,模型从用户口语中挑出正确的函数并填满每个参数;用户一次说两件事就返回两个有序调用,没有工具覆盖的请求返回空列表而不是猜测。第二是结构化抽取:声明一个形状,把脏文本丢进去,得到带类型的字段,如发票、订单、通知、表单,解码语法保证输出一定可解析,抽取能力还能泛化到分类。第三是文本嵌入:同一个模型返回句子向量,让应用在本地完成检索、匹配与路由。第四是语音,配套的 Whistle 语音识别模型共用同一容器与引擎,音频进、工具调用出。
架构上,Needle 3 是一个 Laddered Simple Attention Network:用 Monarch Hadamard MLP 替代常规 FFN,采用带因果卷积抽头的 GQA 注意力,通过 gather 读取 engram n-gram 记忆,并引入多通道超连接;训练时让 2 到 20 层的每个深度都成为可部署模型。大部分参数位于 engram,因此 121M 参数量的模型只承担约 50M 规模的计算量。每个 token 都受从你的 schema 编译出的字节级语法约束,响应还附带学习头给出的校准置信度。
创新点与亮点
最值得关注的是它的取舍哲学。多数端侧模型试图在通用能力上追平云端,Needle 反其道而行,砍掉闲聊,把参数密度集中在工具调用与抽取这两类自动化任务上,于是能以 8-29MB 的体量打赢 10 倍体积的对手,在抽取任务上追平 2-3 倍大的模型。其次是可部署的深度阶梯,同一套权重可按设备算力选择 2 层到 20 层,让不同层级的硬件复用同一训练成果。第三是置信度头,端侧自动化最怕模型自信地胡说,一个校准过的分数让应用可以决定何时交还给人处理。第四是工程友好,装饰器 API 让函数签名直接成为参数类型、docstring 直接成为工具描述,run() 一步完成决策与执行。
与同类项目对比
在端侧推理赛道,llama.cpp、MNN、ONNX Runtime 解决的是怎么跑,而 Needle 解决的是跑什么,交付的是模型权重加平台引擎,而不是通用运行时。相比动辄 1-3B 的端侧小模型,Needle 体积小一个数量级,代价是失去通用对话与开放域知识;相比 Apple Foundation Models、Gemini Nano 这类绑定特定平台的方案,Needle 覆盖微控制器与更多硬件形态,且开源可自托管。它不适合当聊天机器人,而适合嵌入已有 App 或固件里充当意图解析层。
快速上手
安装只需 pip install cactus-needle,权重与各平台引擎发布在 Hugging Face,也能直接在官网浏览器里试用。定义工具用 needle.tool 装饰器,参数类型来自函数签名,工具描述来自 docstring,随后构造 Needle 实例并调用 run(),它会把模型生成的调用真正执行并返回结果。每一轮返回一个 JSON 对象,内含 function_calls、reasoning 与 confidence,方便上层做日志、兜底与置信度门控。
总结与展望
Needle 是一次方向明确的减法:用体积极小的专用模型,在资源受限设备上换取可靠的自动化能力。短板同样清晰,没有通用对话能力,任务范围受限于你声明的 schema,跨领域迁移需要重新设计工具与形状。但对做智能家居中控、可穿戴交互、车载语音与机器人指令解析的开发者来说,这套 8-29MB 的单文件方案,可能是目前最贴近量产现实的选择。
项目信息
| 项目名称 | cactus-compute/needle |
| 编程语言 | Python |
| Star 数 | 13892 |
| Fork 数 | 940 |
| 主题标签 | cactus, edge-ai, foundation-model, function-calling, llm, on-device-ai, tinyml, tool-calling |