上一篇文章中,我们构建了由 FastAPI 后端驱动的流式 AI 聊天机器人。这一模式可覆盖大多数企业场景。但对于某些需求——满足《个人信息保护法(PIPL)》《数据安全法》和等保2.0(尤其是工控/OT 系统场景)的数据不出境要求、离线运行能力、高并发下的成本控制——在设备上直接运行模型才是正确答案。
2026 年,这已不再是概念验证:Snapdragon 8 Elite 上实测 inference 延迟低于 20ms,1~5 GB 的模型可达到 GPT-3.5 同等质量,配套的 React Native 库将所有功能封装进熟悉的 React Hook——端侧 AI 已正式进入生产可用阶段。
为什么选择端侧?四个核心理由
1. 架构级隐私保护(PIPL / 数据不出境)。 Inference 在设备上完成,用户数据不会离开本地。无 API 调用日志,无第三者服务器风险。对于需要满足 PIPL 数据本地化要求或等保2.0 OT 环境安全隔离要求的应用,此方案从架构上消除了整类合规风险。
2. 低延迟。 云端往返在第一个 token 出现前增加 200~800ms。Snapdragon 8 Elite 上的端侧首 token 延迟低于 100ms,对话体验的差异用户感受明显。
3. 高并发下的零边际成本。 当消息量增大,per-token API 费用快速累积。端侧 1B 参数模型在首次下载后,每次对话的追加成本为零。
4. 离线能力。 工厂车间、医院病房、偏远地区、飞机上——网络不稳定的场景中端侧 AI 始终可用。
2026 年 React Native 端侧工具对比
| 库 | 后端 | 适用场景 |
|---|---|---|
| react-native-executorch | Meta ExecuTorch | LLM、语音识别、图像分类 — Hook API 完整 |
| react-native-fast-tflite | Google LiteRT 2.x | 经典 ML、视觉模型、存量 TFLite 模型 |
| MediaPipe(原生模块) | Google MediaPipe | 姿态估计、目标检测、文本分类 |
2026 年 React Native LLM 推理的首选是 react-native-executorch(Software Mansion 出品):useLLM Hook 处理模型加载、token 流式输出和内存管理;useWhisper 实现端侧语音识别;计算机视觉 Hook 一应俱全。
注意: react-native-executorch 需要 New Architecture。RN 0.84(2026 年 3 月)已从 iOS 构建中完全移除 legacy bridge 支持。
Part 1: 安装
yarn add react-native-executorch
yarn add react-native-executorch-expo-resource-fetcher
yarn add expo-file-system expo-asset
在应用入口初始化:
import { initExecutorch } from 'react-native-executorch';
import { ExpoResourceFetcher } from 'react-native-executorch-expo-resource-fetcher';
initExecutorch({
resourceFetcher: ExpoResourceFetcher,
});
Part 2: 面向国内市场的模型选型
| 模型 | 大小 | 所需 RAM | 首 token 延迟 | 备注 |
|---|---|---|---|---|
| LFM2.5 1.2B Instruct | ~900 MB | ~1.4 GB | ~80ms | 质量/体积比最优 |
| Llama 3.2 1B | ~850 MB | ~1.3 GB | ~90ms | 多语言能力强 |
| Qwen2.5 0.5B | ~400 MB | ~700 MB | ~45ms | 中文优化;中端机型首选 |
| Llama 3.2 3B | ~2.0 GB | ~3.0 GB | ~210ms | 质量更高;仅适合旗舰机 |
对于国内 Android 生态中 4~6 GB RAM 中端机型仍大量存在的现实,Qwen2.5 0.5B 是更实际的选择——覆盖大多数对话任务,体积更小可减少设备碎片化下的 OOM 崩溃。数据不出境场景也可使用 Qwen 系列,与用友、金蝶等国产 ERP 的移动端集成天然契合。
Part 3: 端侧聊天 UI
import { useLLM, models, type Message } from 'react-native-executorch';
const llm = useLLM({
model: models.llm.lfm2_5_1_2b_instruct(),
});
// 首次下载进度展示
if (llm.downloadProgress < 1) {
return (
<View>
<Text>正在下载 AI 模型…</Text>
<Text>{Math.round(llm.downloadProgress * 100)}%</Text>
<Text>仅需下载一次,模型将缓存在设备上</Text>
</View>
);
}
// 流式生成
await llm.generate(messages, {
onToken: (token: string) => {
setMessages((prev) => {
const updated = [...prev];
updated[updated.length - 1].content += token;
return [...updated];
});
},
});
Part 4: 混合架构——端侧 + 云端 Fallback
生产应用通常需要两种路径并存:
- 端侧: 含个人信息的查询、离线场景、高频对话
- 云端: 复杂推理、长文档综合、低端设备用户
export function useHybridAI() {
const llm = useLLM({ model: models.llm.lfm2_5_1_2b_instruct() });
const [isCloudMode, setIsCloudMode] = useState(false);
const generate = async (messages, onToken) => {
if (isCloudMode || !llm.isReady) {
await cloudGenerate(messages, onToken); // R-03 的 FastAPI 端点
} else {
await llm.generate(messages, { onToken });
}
};
return {
generate,
isOnDevice: !isCloudMode && llm.isReady,
};
}
UI 展示"本地推理 · 数据不出境"或"云端 AI"徽标,满足等保2.0 对用户知情的透明度要求。
Part 5: 生产环境注意事项
模型下载体验是关键。 绝不在 App 启动时触发下载。设置用户显式 opt-in:"开启 AI 助手(下载约 900 MB)",展示进度并允许取消。
内存管理。 离开页面时卸载模型:
useEffect(() => {
return () => { llm.interrupt(); };
}, []);
上下文窗口限制。 端侧模型通常支持 2K~8K token,远小于云端的 200K+。使用滑动窗口裁剪对话历史。
OOM 自动 Fallback:
try {
await llm.generate(messages, { onToken });
} catch (err: unknown) {
if (err instanceof Error && err.message.includes('out of memory')) {
setIsCloudMode(true);
await cloudGenerate(messages, onToken);
}
}
常见问题
react-native-executorch 支持 Expo managed workflow 吗?
配合 expo-dev-client 使用可以,Expo Go 不支持(需要原生模块)。
哪些设备支持端侧 LLM?
6 GB+ RAM 设备可运行 LFM2.5 1.2B;4 GB 设备可运行 Qwen2.5 0.5B。硬件加速支持高通骁龙 8 Gen 3 / 8 Elite(QNN NPU)或 Apple A17 Pro+(ANE)。
能使用自己微调的模型吗?
可以。将 PyTorch 模型通过 torch.export 导出为 .pte 格式,将 URL 传入 useLLM。
适合企业 RAG 应用吗?
混合方案最佳:在端侧完成 embedding 和检索(上下文量小),在云端完成需要长 context 的最终回答生成。这与 Simplico 将 simpliDoc 文档层接入移动端时使用的架构一致。
下一步
R 系列下一篇将连接 React Native 应用与私有文档知识库——将 D 系列的 RAG 流水线与 R-03、R-04 的移动端技术栈整合。
有端侧私有 AI 或企业内部文档安全移动访问需求?联系 Simplico 团队。
最新文章
- 你的员工有24个密码,你的企业就有24个攻击面 June 11, 2026
- 潜伏在工程团队中的安全隐患 June 8, 2026
- SOAR与告警疲劳:为何你的SOC正被告警淹没(以及自动化如何真正帮助) June 7, 2026
- MES与ERP:有何区别?工厂到底需要哪个? June 7, 2026
- React Native vs Flutter 2026年:如何做出正确选择 June 4, 2026
- React Native 2026年版:现在还值得用来开发应用吗? June 3, 2026
