satoriDB
嵌入式向量数据库,支持 billion 级数据量,HNSW 热路由 + SSD 冷扫描,95%+ r
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
嵌入式向量数据库,支持 billion 级数据量,HNSW 热路由 + SSD 冷扫描,95%+ r
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
SatoriDB 是由独立开发者 nubskr 构建的嵌入式向量数据库,专注于处理超大规模(billion 级)数据集的近似最近邻(ANN)检索。该项目在 2024 年底的 Reddit 帖子上首次亮相,即以"从零徒手写 billion-scale 向量数据库"的硬核形象引发技术社区热议,在 GitHub 上迅速积累 242 颗星。
传统的向量数据库(如 Milvus、Qdrant)依赖独立进程运行,数据需要跨网络传输;而嵌入式数据库则直接运行在用户进程中,零网络开销。对于延迟敏感或数据隐私要求极高的场景(如本地 RAG 、医疗记录检索、金融风控模型),嵌入式方案天然更优。
但嵌入式向量数据库长期面临一个核心矛盾:内存容量 vs 检索规模。向量数据动辄数十 GB,嵌入在应用进程内会迅速耗尽 RAM。
SatoriDB 的答案是:两层架构。
热层(Hot Tier):内存中的 HNSW 路由索引,只存储"桶质心"(bucket centroids),而非全部向量。质心经过标量量化(f32 → u8),一个质心仅占 1 字节。500k 个桶的路由索引可在 1GB 以内放下——即便向量总量达到 billion 级别。
冷层(Cold Tier):CPU 绑定的 Glommio 异步 worker,驱动 io_uring 批量读写 SSD/HDD。多个 worker 各自持有独立的 io_uring ring 和 LRU 缓存,查询路径零跨核同步。距离计算全部走 SIMD(AVX2/AVX-512),从量化求和到 k-means 分配均有硬件加速。
自动分桶:后台 Rebalancer 监控桶大小,当单个桶超过 ~2000 个向量时自动触发 k-means(k=2)分裂,保持桶大小可预测,从而确保查询延迟稳定。
持久化层:向量本体存入 Walrus(基于追加存储,io_uring 批量写入),向量 ID 等元数据索引存入 RocksDB(支持精确点查和去重)。
在 BigANN-1B benchmark(10 亿向量,500GB 磁盘数据)上,SatoriDB 达到 95%+ recall,延迟可预测。这在嵌入式向量数据库中极为罕见——通常 recall 和延迟不可兼得。

| 层级 | 技术选型 | 作用 |
|---|---|---|
| 核心语言 | Rust | 内存安全、高性能、零成本抽象 |
| 异步运行时 | Glommio | Linux io_uring 原生绑定,异步 I/O |
| 序列化 | rkyv | 零拷贝序列化,验证后直接内存映射 |
| 持久化索引 | RocksDB | 点查 ID 索引、Bloom Filter |
| SIMD 加速 | AVX2/AVX-512 | 距离计算、量化、聚类 |
| 路由算法 | HNSW | 近似最近邻图索引 |
适合场景:
不适合场景:
SatoriDB 当前版本 0.1.2,属于实验性质。README 明确标注"experimental",issues 仅 1 个,CI 状态待验证。对于生产级部署,建议等待更成熟版本。
核心局限包括:缺乏多租户隔离、无内置压缩工具链、Rebalancer 在分裂期间会短暂阻塞写入。开发者 nubskr 的更新节奏较快,但社区贡献目前有限。
SatoriDB 代表了向量数据库的一个新兴方向:嵌入式 + 超大规模。传统上,这两个特性互相矛盾——嵌入式追求轻量,billion-scale 追求容量。SatoriDB 通过热/冷分层优雅地化解了这一矛盾,为资源受限环境下的 AI 应用提供了新的可能性。
随着 LLM 上下文窗口成本持续下降,本地化 RAG 场景会越来越多,SatoriDB 这类嵌入式向量引擎的价值将进一步凸显。