mlx-snn
mlx-snn 是一个专为苹果 Apple Silicon 芯片(M1/M2/M3/M4)打造的脉冲神经网络(SNN)开源库。它基于苹果原生的 MLX 框架构建,旨在为神经形态计算研究提供一个高效且易用的开发环境。
传统 SNN 因需在每个时间步存储神经元状态,常受限于显存带宽和容量,难以在普通 GPU 上处理长时序任务。mlx-snn 利用苹果芯片的统一内存架构,消除了 CPU 与 GPU 间的数据传输瓶颈,使得训练更大规模的神经网络和处理更长生物信号序列成为可能。实测显示,其在能效比上表现卓越,能在更低功耗下实现比传统数据中心显卡更快的训练速度。
该工具非常适合从事类脑计算、神经科学建模及低功耗 AI 研究的开发者与科研人员。它提供了简洁的 Python API,内置了 9 种主流神经元模型(如 LIF、Izhikevich 等)、多种代理梯度算法及脉冲编码方式,并支持通过 NIR 标准进行模型互通。无论是探索神经元动力学,还是训练基于事件流的分类器,mlx-snn 都能让用户在苹果生态中流畅地展开前沿实验。
使用场景
某神经形态计算研究团队正在利用 MacBook Pro 开发一套基于脑电波(EEG)的实时癫痫发作预测系统,需要处理长时序生物信号并模拟复杂的神经元动力学。
没有 mlx-snn 时
- 显存瓶颈严重:传统离散 GPU 架构在处理长序列脉冲神经网络(SNN)时,因每个时间步需存储神经元状态,导致显存迅速耗尽,无法加载大规模储备池模型。
- 能效比低下:在数据中心 GPU 上训练递归脉冲动力学模型受限于延迟而非算力,功耗极高且训练速度慢,难以在本地设备快速迭代。
- 多尺度建模困难:难以在一个网络中同时捕捉从 Delta 到 Gamma 不同频段的脑波动态,缺乏原生支持多时间尺度衰减率的神经元模型。
- 数据搬运开销大:CPU 与 GPU 之间频繁的状态数据传输造成显著延迟,阻碍了长时序生物信号流的实时处理。
使用 mlx-snn 后
- 突破显存限制:借助 Apple Silicon 的统一内存架构,mlx-snn 消除了 CPU 与 GPU 间的数据拷贝,轻松支撑更长的时间窗口和更大的储备池网络。
- 能效显著提升:在 M3 Max 芯片上,训练速度比 Tesla V100 快 2.6 倍以上,而功耗仅为七分之一,完美适配递归脉冲动力学的延迟敏感特性。
- 原生多尺度支持:利用
MSLeaky神经元模型,为并行分支分配频率匹配的衰减率,单网络即可精准捕捉全频段脑波动态。 - 流畅长序列处理:结合分块 BPTT 算法与状态分离技术,无需担心内存爆炸,可高效处理长达数分钟的 EEG 原始信号序列。
mlx-snn 通过统一内存优势与原生多尺度建模能力,将苹果硬件转化为高效的神经形态计算平台,让长时序生物信号分析在本地设备上变得既快速又节能。
运行环境要求
- macOS
不需要独立 GPU,必须使用配备 Apple Silicon (M1/M2/M3/M4) 芯片的 Mac 设备,利用其统一内存架构
未说明(依赖 Apple Silicon 的统一内存,建议根据模型规模配置足够内存)

快速开始
mlx-snn
基于 Apple MLX 构建的通用脉冲神经网络库。
mlx-snn 旨在提供一个高效、适合研究的 SNN 框架,充分利用 MLX 的统一内存架构和惰性求值机制。无论您是在探索神经元动力学、使用代理梯度训练分类器,还是通过 NIR 进行模型交换,mlx-snn 都提供了一个简洁、符合 Python 风格的 API,能够自然地融入 MLX 生态系统。
9 种神经元模型 · 6 种代理梯度 · 8 种脉冲编码 · 5 个神经形态数据集 · LSM 储层 · NIR 互操作性 · 403 个测试用例
亮点
|
统一内存 SNN SNN 在每个时间步都会存储每个神经元的状态——这在独立 GPU 架构上会成为内存瓶颈。而 Apple Silicon 的统一内存消除了 CPU↔GPU 之间的数据传输,使得我们可以构建更长的时间窗口和更大的储层,而不受显存限制。 |
能效提升 17–25 倍 M3 Max 在功耗仅为 Tesla V100 七分之一的情况下,训练 SNN 的速度比后者快 2.6–3.7 倍。递归脉冲动力学主要受限于延迟而非计算能力,因此 Apple Silicon 的高带宽统一架构相比数据中心的并行计算更具优势。 |
多尺度时间建模
|
安装
pip install mlx-snn
需要 Python 3.9 或更高版本以及 Apple Silicon 处理器(M1/M2/M3/M4)。
快速入门
import mlx.core as mx
import mlx.nn as nn
import mlxsnn
# 构建一个脉冲网络
fc = nn.Linear(784, 10)
lif = mlxsnn.Leaky(beta=0.95, threshold=1.0)
# 将输入编码为脉冲序列并随时间运行
spikes_in = mlxsnn.rate_encode(mx.random.uniform(shape=(8, 784)), num_steps=25)
state = lif.init_state(batch_size=8, features=10)
for t in range(25):
spk, state = lif(fc(spikes_in[t]), state)
print("输出膜电位:", state["mem"].shape) # (8, 10)
功能特性
神经元模型
所有神经元都支持 learn_threshold 和可配置的复位机制(subtract / zero / none)。具有衰减常数的神经元支持 learn_beta;递归神经元则支持 learn_V。状态始终以显式字典形式表示,与 MLX 的函数式变换和 mx.compile 兼容。
| 模型 | 描述 | 状态变量 |
|---|---|---|
| Leaky (LIF) | 可配置衰减的漏积分发放神经元 | mem |
| IF | 不漏的积分发放神经元(理想积分器) | mem |
| Izhikevich | 二维动力学,支持 RS/IB/CH/FS 预设 | v, u |
| ALIF | 自适应 LIF,动态阈值 | mem, adapt |
| Synaptic | 基于电导的双状态 LIF | syn, mem |
| Alpha | 双指数突触模型 | syn_exc, syn_inh, mem |
| RLeaky | 可学习反馈的递归 LIF | mem, spk |
| RSynaptic | 可学习反馈的递归 Synaptic | syn, mem, spk |
| MSLeaky | 多尺度 LIF,每条分支有频率匹配的 beta |
每分支 mem |
代理梯度
所有神经元都支持通过 6 种代理梯度函数进行可微训练:
| 函数 | 代理梯度 | 属性 |
|---|---|---|
| Arctan(默认) | α / (π(1 + α²x²)) |
BPTT 收敛稳定,局部性适中 |
| Fast Sigmoid | scale / (2(1 + scale·|x|)²) |
尾部较重,理性衰减 |
| Sigmoid | slope · σ(slope·x) · (1 − σ(slope·x)) |
标准逻辑函数的导数 |
| Triangular | max(0, 1 − |x|) |
支撑紧凑,在阈值附近局部化 |
| Straight-Through | 1 |
最简单,处处梯度为 1 |
| Custom | 用户自定义 | 可插入任意可微近似 |
脉冲编码
8 种编码方法用于将连续信号转换成脉冲序列:
| 方法 | 输入 | 使用场景 |
|---|---|---|
| Rate (Poisson) | 静态值 | 图像、通用分类任务 |
| Latency (TTFS) | 静态值 | 高能效的时间编码 |
| Delta Modulation | 时间信号 | 变化检测、事件型编码 |
| Direct | 任意张量 | 直通预计算输入 |
| Repeat | 脉冲模式 | 将脉冲序列平铺到更长的时间窗口 |
| Frequency-Band | EEG 信号 | 基于 FFT 的分解,划分为 delta/theta/alpha/beta/gamma 波段 |
| Threshold-Crossing | 时间信号 | 多级幅值穿越检测 |
| EEG Encoder | 原始 EEG | 可配置速率/delta/阈值的生物信号编码 |
卷积 SNN 层
利用空间池化构建深层脉冲卷积网络:
import mlxsnn
conv1 = mlxsnn.SpikingConv2d(in_channels=2, out_channels=64, kernel_size=3, padding=1)
pool1 = mlxsnn.SpikingMaxPool2d(kernel_size=2, stride=2)
lif1 = mlxsnn.Leaky(beta=0.95)
drop = mlxsnn.SpikeDropout(p=0.2) # 脉冲感知(无需重新缩放)
flat = mlxsnn.SpikingFlatten()
此外还包含 6 种基于数学原理的时序算子,适用于卷积 SNN:TAC(时序聚合卷积)、TAC-TP(时序保持卷积)、L-TAC(可学习卷积)、FTC(傅里叶时序卷积)、IMC(信息最大化脉冲卷积)、TCC(时序坍缩卷积)。
液态机
基于脉冲神经元的储层计算——随机稀疏的递归连接,拓扑结构可配置:
import mlxsnn
lsm = mlxsnn.LSM(
input_size=64, reservoir_size=500, output_size=10,
connectivity=0.1, spectral_radius=0.9,
topology="small_world", # 也可选:"erdos_renyi"、"scale_free"
exc_ratio=0.8, # 戴尔定律:80% 兴奋性
)
state = lsm.init_state(batch_size=32)
for t in range(num_steps):
output, state = lsm(spikes[t], state)
训练工具
BPTT 变体:
bptt_forward(model, spikes, state)— 标准的随时间反向传播chunked_bptt_forward(model, spikes, state, chunk_size)— 通过在块边界分离状态,在长序列上实现内存高效的训练detach_state(state)— 分离状态字典中的所有张量(用于截断 BPTT)
mx.compile 包装器:
compiled_step(model)— 返回一个编译后的单步可调用函数compiled_forward(model, spikes, state)— 每个时间步都使用mx.compile的 BPTT 前向传播
损失函数(共 11 种):
| 损失 | 方法 |
|---|---|
ce_rate_loss |
对尖峰率(尖峰计数 / T)的交叉熵 |
ce_count_loss |
对原始尖峰计数的交叉熵 |
mse_membrane_loss |
对最终膜电位的均方误差 |
mse_count_loss |
对尖峰计数与目标之间的均方误差 |
membrane_loss |
对最终膜电位的交叉熵 |
rate_coding_loss |
对尖峰计数的 log-softmax 的交叉熵 |
activity_reg_loss |
惩罚与目标发放率的偏差 |
l1_spike_loss |
对尖峰计数的 L1 稀疏惩罚 |
l2_spike_loss |
对尖峰计数的 L2 正则化 |
实用函数:spike_rate, spike_count。
可学习参数: learn_threshold(所有神经元)、learn_beta(基于 LIF 的神经元)、learn_V(递归神经元)。支持标准 MLX 优化器(mlx.optimizers.Adam 等)。
神经形态数据集
5 个内置数据集加载器,具备自动下载、缓存以及事件到帧的转换功能:
| 数据集 | 模态 | 类别 | 样本数 |
|---|---|---|---|
| DVS-Gesture | 事件相机(手势) | 11 | 1,342 |
| CIFAR10-DVS | 事件相机(自然图像) | 10 | 10,000 |
| N-MNIST | 事件相机(数字) | 10 | 70,000 |
| SHD | 音频(语音数字) | 20 | 10,420 |
| SSC | 音频(语音命令) | 35 | 100,000+ |
from mlxsnn.datasets import DVSGestureDataset, create_dataloader
dataset = DVSGestureDataset(root="./data", train=True, num_steps=16)
loader = create_dataloader(dataset, batch_size=16, shuffle=True)
可视化
需要运行 pip install mlx-snn[viz](matplotlib)。
from mlxsnn.utils.visualization import plot_raster, plot_membrane, plot_firing_rate
plot_raster(spike_tensor, title="第1层尖峰") # 尖峰随时间的点阵图
plot_membrane(state["mem"], title="膜电位") # 膜电位轨迹
plot_firing_rate(spike_tensor, title="发放率") # 每个神经元的发放率
NIR 互操作性
NIR 支持跨框架的 SNN 模型交换——可以导入/导出至 snnTorch、Norse、SpikingJelly 以及神经形态硬件。
pip install mlx-snn[nir]
# 导出
layers = [('fc1', nn.Linear(784, 128)), ('lif1', mlxsnn.Leaky(beta=0.9)),
('fc2', nn.Linear(128, 10)), ('lif2', mlxsnn.Leaky(beta=0.9))]
nir.write('model.nir', mlxsnn.export_to_nir(layers))
# 导入
model = mlxsnn.import_from_nir(nir.read('model.nir'))
out, state = model(x, model.init_states(batch_size=32))
支持:nn.Linear ↔ nir.Affine/nir.Linear、Leaky ↔ nir.LIF、IF ↔ nir.IF、Synaptic ↔ nir.CubaLIF。
基准测试
所有实验采用相同的超参数:Adam(LR=1e-3)、泊松率编码、T=25 个时间步、批量大小 128、5 个随机种子、10 个 epoch、surrogate_fn="fast_sigmoid"。完整脚本位于 benchmarks/ 目录下,详细内容参见我们的 arXiv 论文。
训练准确度(在噪声范围内一致)
| 任务 | mlx-snn (M3 Max) | snnTorch (V100) |
|---|---|---|
| FC SNN 在 MNIST 上 | 97.0% | 97.2% |
| FC SNN 在 FashionMNIST 上 | 85.2% | 85.2% |
| LSM 储存器在 MNIST 上 | 92.4% | 93.6% |
训练速度
| 任务 | mlx-snn (M3 Max) | snnTorch (V100) | 加速倍数 |
|---|---|---|---|
| FC SNN(784→128→10) | 7.4 s/epoch | 19.4 s/epoch | 2.6x |
| LSM 储存器(500 个神经元) | 3.2 s/epoch | 5.7 s/epoch | 1.8x |
推理吞吐量(样本/秒,T=25)
| 模型 | 批量 | mlx-snn (M3 Max) | snnTorch (V100) | 加速倍数 |
|---|---|---|---|---|
| FC-SNN | 128 | 23,875 | 6,552 | 3.6x |
| FC-SNN | 512 | 95,735 | 26,058 | 3.7x |
| Conv-SNN | 128 | 6,671 | 3,859 | 1.7x |
| Conv-SNN | 512 | 6,434 | 4,252 | 1.5x |
mx.compile 加速效果
| 模式 | 时间(25 步前向传播) |
|---|---|
| 未编译 | 2.72 ms |
| 编译 | 0.92 ms |
| 加速倍数 | 2.9x |
能效
M3 Max(TDP ~45 W)的 SNN 训练/推理速度比 V100(TDP 300 W)快 2.6–3.7 倍,估计能效提升 17–25 倍(每瓦性能)。
详细结果及复现脚本请参阅 benchmarks/ 目录和我们的 基准测试论文。
从 snnTorch 迁移
mlx-snn 的设计旨在让 snnTorch 用户感到熟悉:
| snnTorch (PyTorch) | mlx-snn (MLX) | |
|---|---|---|
| 导入 | import snntorch as snn |
import mlxsnn |
| 创建 | lif = snn.Leaky(beta=0.9) |
lif = mlxsnn.Leaky(beta=0.9) |
| 前向传播 | spk, mem = lif(x, mem) |
spk, state = lif(x, state) |
| 状态 | 分离的张量(mem) |
显式字典(state["mem"]) |
| 张量 | torch.Tensor |
mx.array |
| 梯度 | autograd + 替代梯度 |
STE 模式 + mx.stop_gradient |
关键设计差异:状态始终是显式的字典——传入即得到。没有隐藏的实例变量。这与 MLX 的函数式变换(mx.grad、mx.vmap、mx.compile)非常契合。
项目结构
mlxsnn/
├── neurons/ # Leaky、IF、Izhikevich、ALIF、Synaptic、Alpha、RLeaky、RSynaptic、MSLeaky
├── surrogate/ # arctan、fast_sigmoid、sigmoid、triangular、straight_through、自定义
├── encoding/ # 率编码、延迟编码、delta 编码、直接编码、重复编码、频带编码、阈值穿越编码、EEG
├── functional/ # 无状态纯函数、11 种损失函数、指标
├── layers/ # SpikingConv2d、MaxPool2d、AvgPool2d、Flatten、SpikeDropout
├── operators/ # TAC、TAC-TP、L-TAC、FTC、IMC、TCC
├── liquid/ # LiquidReservoir、LSM、拓扑生成器
├── datasets/ # DVSGesture、CIFAR10DVS、NMNIST、SHD、SSC
├── training/ # BPTT、分块 BPTT、mx.compile 包装器
├── utils/ # 可视化、状态管理
└── nir_*.py # NIR 导出/导入工具
路线图
- v0.1 — 核心神经元(LIF、IF)、代理梯度、速率/延迟编码
- v0.2 — 扩展神经元(伊兹基维奇、ALIF、突触型、Alpha)、脑电图编码器、差分编码
- v0.3 — NIR 互操作性(导出/导入)
- v0.4 — 循环神经元、卷积/池化层、神经形态数据集、TAC 算子
- v0.5 — 直接/重复编码、活动正则化、SpikeDropout、可视化、SHD 数据集
- v0.6 — CI/CD、API 文档站点、完整示例
- v0.7 — LSM、MSLeaky 神经元、分块 BPTT、
mx.compile、频带及阈值穿越编码 - v1.0 — 完整文档、全面基准测试、JOSS 论文
出版物
- mlx-snn v0.1: 通过 MLX 在 Apple Silicon 上实现脉冲神经网络(arXiv,2026 年)
- mlx-snn v0.4: 在 Apple Silicon 上训练脉冲神经网络:跨框架基准测试(准备中)
引用
如果您在研究中使用 mlx-snn,请引用以下内容:
@misc{qin2026mlxsnn,
title = {mlx-snn: 通过 {MLX} 在 Apple Silicon 上实现脉冲神经网络},
author = {Jiahao Qin},
year = {2026},
eprint = {2603.03529},
archivePrefix = {arXiv},
primaryClass = {cs.LG},
url = {https://arxiv.org/abs/2603.03529}
}
贡献
欢迎贡献!请在 GitHub 上提交问题或拉取请求。
许可证
GPL-3.0
版本历史
v0.7.02026/03/18v0.6.02026/03/18v0.5.02026/03/18v0.4.02026/03/18v0.3.02026/03/18v0.2.02026/03/18v0.1.02026/03/18相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器