sqlite-vector
SQLite 扩展,向量搜索能力装进口袋,30MB 内存跑遍全平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
SQLite 扩展,向量搜索能力装进口袋,30MB 内存跑遍全平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:SQLite AI 官方 Logo — SQLite-Vector 是该组织旗下核心项目之一
你有没有遇到过这样的尴尬场景:想给 App 加一个"找相似图片"的功能,一查方案,不是要部署 Elasticsearch,就是得搭 Milvus/Qdrant 服务集群,搞得 App 包才 5MB,依赖服务却要占一台 4 核 8G 的服务器。SQLite-Vector 解决的就是这个问题——把向量搜索能力直接编译成一个 SQLite 扩展,不依赖任何外部服务,内存占用仅 30MB,一个 .so/.dll 文件随身带走,在手机里跑,在浏览器 WASM 里跑,在树莓派上也能跑。
2025 年上半年,GitHub 上出现了一个叫 sqlite-vector 的项目,不到一年时间斩获近千 Star。它的诞生背景很有意思——SQLite Cloud 团队在构建 RAG(检索增强生成)系统时,发现市面上没有一款能在嵌入式环境里简单快速做向量相似度搜索的工具。FAISS 功能强大但依赖 Python 和 C++ 运行时;ChromaDB 很方便但需要单独的服务进程;LanceDB 解决了不少问题但对于只想在现有 SQLite 数据库里加一点 AI 能力的场景来说,还是太重了。团队的想法很朴素:能不能把向量操作做成一个 SQLite 扩展,用户用两条 SQL 就能完成向量存储和最近邻搜索?
这就是 SQLite-Vector 的起点。
SQLite-Vector 的核心代码全部由 C 语言编写(sqlite-vector.c 主文件约 153KB),针对不同硬件平台实现了 5 套 SIMD 后端:
| 后端 | 适用平台 | 说明 |
|---|---|---|
| AVX512 | 高端 x86 服务器 | 512 位宽 SIMD,最高性能 |
| AVX2 | 主流 x86 PC/服务器 | 256 位宽,兼容性最佳 |
| SSE2 | 老旧 x86 设备 | 128 位宽兜底 |
| NEON | ARM 移动设备(iOS/Android) | 苹果 M 系列、高通骁龙等 |
| RVV | RISC-V 硬件 | 新兴开源硬件生态 |
| CPU | 无 SIMD 环境 | 通用 C 实现作为最终兜底 |
运行时通过 SELECT vector_backend() 可以查看当前激活的 SIMD 路径,确认是否用上了硬件加速。距离计算支持 6 种度量:L2 距离(欧氏)、余弦距离、点积、曼哈顿距离(L1)、平方 L2、以及 汉明距离(仅 1bit 向量)。
向量以 BLOB 格式存储在普通 SQLite 表的列中,无需虚拟表(virtual table)。使用前只需调用 vector_init() 初始化向量维度,然后直接 JOIN vector_quantize_scan() 做最近邻检索。
SQLite-Vector 最引人注目的技术创新是 TurboQuant,这是一种借鉴 Google Research 论文(arXiv:2504.19874)的在线向量量化方法。传统量化需要预先处理整个数据集、建立倒排索引,可能耗时数小时。TurboQuant 则采用数据无关(data-oblivious)策略:
实测数据(1M 768维向量,DOT 距离):
| 模式 | 存储占用 | 查询耗时 | 加速比 | Recall@10 |
|---|---|---|---|---|
| 原始全扫描 | ~3.07GB | 3248ms | 1x | 1.0 |
| TurboQuant 4bit | 396MB | 218ms | 14.92x | 0.84 |
| TurboQuant 3bit | 300MB | 188ms | 9.19x | 0.74 |
| TurboQuant 2bit | 204MB | 85ms | 38.27x | 0.48 |
默认内存预算仅 30MB,可通过 max_memory 参数调节。4bit 量化精度(Recall@10 约 0.84)是目前推荐的默认配置。
虽然项目本身不提供 Dockerfile,但其 30 个预编译发布产物几乎覆盖了所有主流平台:
加载方式极为简单,两行代码即可:
.load ./vector -- SQLite CLI
SELECT load_extension('./vector'); -- 应用内嵌
此外,Python(pip install sqliteai-vector)、Flutter(Dart)、Swift(SPM)、Android(Gradle)均有官方维护的 SDK 包,上手门槛极低。
| 场景 | 推荐指数 | 说明 |
|---|---|---|
| 移动端 App 内嵌向量搜索 | 五星 | NEON 后端 + WASM + Flutter SDK 完美覆盖 |
| 边缘设备(Raspberry Pi/ESP32) | 四星 | 仅需 30MB 内存,2bit 量化可跑在极低配置 |
| 浏览器端 RAG | 四星 | WASM 版本无需服务器,在 IndexedDB 里跑 |
| 中型服务器(1M-10M 向量) | 三星 | 单机足够,但要接受无分布式、无副本的局限 |
| 超大型向量库(>100M) | 一星 | 需要分布式集群,超出 SQLite 边界 |
| 有 GPU 加速需求 | 一星 | 纯 CPU 实现,大批量搜索场景性能天花板明显 |
优点说完了,说说槽点。 SQLite-Vector 追求的是"足够好"而非"最精确":
精确 vs 速度的取舍:TurboQuant 是近似搜索,4bit 量化 Recall@10 约 0.84,在对精度要求极高的场景(如医疗影像检索)可能不满足需求。
无水平扩展能力:SQLite 本身是嵌入式数据库,没有任何分片或副本机制。如果向量规模超过单机承载上限,需要引入外部向量引擎(Qdrant/Pinecone)或数据分片逻辑。
缺乏内置 CRUD 以外的管理能力:没有内置的向量更新策略(增量量化、在线学习)、监控指标或自动调参,所有工程化工作需要自己实现。
许可协议需注意:虽然是开源项目,但采用了双许可证——开源项目免费使用,商业生产环境需向 SQLite Cloud 公司申请商业许可。这对部分企业用户是个门槛。
SQLite-Vector 的出现代表着 Edge AI 基础设施的一个趋势:将 AI 能力下沉到数据产生的地方,而不是把所有数据拉到云端再做推理。这与苹果的 on-device ML、Google 的 Mediapipe、Qualcomm AI Engine 等路线方向一致。
从技术上看,TurboQuant 的"数据无关量化"思路值得特别关注——它绕过了传统 PQ/OPQ 需要事先分析数据集的局限,使得在流式数据、增量数据场景下的实时量化成为可能。这个方向可能会影响未来向量数据库的索引设计哲学。
项目里程碑: 2025 年 4 月创建,2026 年 5 月发布 1.0.0 正式版,历经 30 个 release,共 960 Star、42 Fork、零 open issue(维护质量极高)。
一句话评价: 如果你的场景需要的是"轻量、快速、原位"的向量搜索,而不是"最强、最全、最复杂"的向量数据库,SQLite-Vector 几乎是你能找到的最优解。