【免费下载链接】sqlite-vector
SQLite-Vector is a cross-platform, ultra-efficient SQLite extension that brings vector search capabilities to your embedded database.
sqlite-vector是一款专为 SQLite 打造的高效向量搜索(Vector Search)扩展,配合 SQLite AI 生态,你可以在手机、浏览器、边缘设备或服务器上,零预索引、低内存地构建属于自己的智能向量数据库——无需额外的向量数据库服务器。
什么是 SQLite-Vector?把向量搜索装进 SQLite
传统做法是给 AI 应用再部署一个独立的向量数据库(FAISS、Milvus 之类),但对于嵌入式和边缘场景,多一个服务就多一份运维成本。
sqlite-vector 的思路完全不同:它以 SQLite 扩展的形式存在,让你直接在普通 SQLite 表里:
- 用普通
BLOB列存储向量,不需要虚拟表 - 插入即可查,不需要构建 HNSW/DiskANN 索引,没有耗时数小时的预处理
- 默认仅约30MB 内存,支持 iOS、Android、Windows、Linux、macOS 全平台
- 支持 Float32 / Float16 / BFloat16 / Int8 / UInt8 / 1Bit 及 TurboQuant 2/3/4-bit 低比特量化
- 距离函数全部用 C 实现并按 SIMD 加速(SSE2 / AVX2 / AVX512 / NEON / RVV),可离线运行
它的核心实现在 src/sqlite-vector.c,各平台的 SIMD 距离内核分别位于 src/distance-neon.c(ARM 移动端)和 src/distance-avx512.c 等文件中,这也是它在手机和服务器上都能保持高性能的原因。
为什么它是边缘 AI 的理想选择?
| 能力 | SQLite-Vector | 传统向量数据库方案 |
|---|---|---|
| 直接操作普通表 | ✅ | ❌ 通常要专用表/虚拟表 |
| 无需预建索引 | ✅ | ❌ 大数据集可能耗时数小时 |
| 不依赖外部服务进程 | ✅ | ❌ 常需 Redis / FAISS 等 |
| 低内存占用(默认 30MB) | ✅ | ❌ |
| 低比特量化扫描 | ✅ | ❌ |
| 离线 / 端侧可用 | ✅ | ❌ |
| 一套 SQL 就能查 | ✅ | ❌ 复杂 JOIN 与子查询 |
对Edge AI场景,这意味着:📱 数据不出设备(隐私友好)、🔌 完全离线可用、⚡ 实时响应。
快速上手:4 行 SQL 完成向量检索
Python 用户一条命令即可安装(详见 packages/python/README.md),其他平台可下载预编译扩展或按语言引入(Swift Package、Android Gradle、Flutter pub 均有官方封装)。
加载扩展后,整个工作流就是普通 SQL:
-- 1. 建普通表,向量存 BLOB 列 CREATE TABLE docs ( id INTEGER PRIMARY KEY, embedding BLOB, title TEXT ); -- 2. 初始化向量列(384 维,余弦距离) SELECT vector_init('docs', 'embedding', 'type=FLOAT32,dimension=384,distance=COSINE'); -- 3. 插入数据后量化(INT8 是余弦场景的推荐档位) SELECT vector_quantize('docs', 'embedding', 'qtype=INT8'); -- 4. 相似度 Top-20 检索 SELECT d.title, v.distance FROM docs AS d JOIN vector_quantize_scan('docs', 'embedding', ?, 20) AS v ON d.id = v.rowid;支持的距离度量包括 L2、平方 L2、L1、Cosine、Dot 和 Hamming(仅 1bit),完整函数清单见 API.md。
量化与 TurboQuant:30MB 内存扫百万向量的秘密
向量越大越占内存,量化(Quantization)就是压缩之道。vector_quantize()会构建一个紧凑索引,扫描时直接读它而非原始向量;配合vector_quantize_preload()还能再快 4~5 倍。原理与召回率(Recall)评估方法详见 QUANTIZATION.md。
官方基准测试(100 万条 768 维向量、余弦距离、k=20,Apple M5 Pro / NEON,数据来自 test/benchmark.c):
| 部署方式 | 索引内存 | 单查询耗时 | Recall@20 |
|---|---|---|---|
| INT8 预加载 | 740 MB | 37.6 ms | 99.5% |
| INT8 流式(默认 30MB 上限) | 30 MB | 114.4 ms | 99.5% |
用 3 倍延迟换 25 倍内存,召回率不变——这正是为 RAM 有限的移动设备准备的模式。
此外,TurboQuant提供 2/3/4-bit 极低比特表示:qtype=TURBO,qbits=4时索引体积仅为原始 Float32 的约 13%。在真实数据集(Fashion-MNIST)上的复现脚本 test/recall_turboquant_real.py 显示,4-bit 档可达 3.4 倍加速且召回率 0.948;2-bit 档虽仅 0.596 召回,但 8.78 倍加速,适合作为粗筛。
SQLite AI 生态:从数据层到智能层的完整拼图
sqlite-vector 只是 README.md 中所述 SQLite AI 技术栈的一块拼图,整个生态分为三层:
🗄️ 数据层
- sqlite-vector—— SQLite 内的 ANN 向量搜索(本项目)
- sqlite-sync—— 离线优先的跨设备 CRDT 同步
- sqlite-columnar—— 面向 OLAP 的列式分析
- sqlite-js—— 用 JavaScript 编写 SQLite 函数
🤖 AI 层
- sqlite-ai—— 端侧 LLM 推理与 Embedding 生成
- sqlite-agent—— 运行在 SQLite 内的自主 AI Agent
- sqlite-memory—— 为 Agent 提供持久化、可检索的记忆
- sqlite-mcp—— 直接在 SQL 中调用 MCP 工具
☁️ 托管平台:SQLite Cloud 提供带同步、认证、边缘函数与多区域的托管服务,并附免费额度。
组合起来就是完整的端侧智能链路:sqlite-ai 在设备上把文本/图片转成向量 → sqlite-vector 存入本地 SQLite 并检索 → sqlite-memory 让 Agent 记住上下文 → sqlite-agent 执行任务,全程离线、数据不出设备。
实战示例:10 分钟搭建本地语义搜索
仓库内置了一个开箱即用的语义搜索演示(examples/semantic_search/):使用 sentence-transformers 的本地 Embedding 模型(默认 all-MiniLM-L6-v2,384 维)+ sqlite-vector 余弦检索,对 examples/semantic_search/samples/ 里的 20 篇样例文档建索引,然后用自然语言提问。
pip install -r requirements.txt python semsearch.py --repl在交互式界面中:
semsearch> index ./samples -- 索引文档目录 semsearch> search "neural network architectures for image recognition"核心逻辑见 examples/semantic_search/semsearch.py,这是一个典型的 RAG / 语义搜索(Semantic Search)最小实现。
总结:为什么现在就该关注它
- 简单:普通表 + BLOB 列 + 几条 SQL,没有服务、没有索引构建阶段
- 省资源:默认 30MB 内存,TurboQuant 最低把索引压到原始体积的 7%
- 够快:SIMD 全平台优化,百万向量单查询 30~110ms 量级
- 面向未来:与 SQLite AI 生态拼合,构成边缘 AI 时代完整的端侧向量数据库方案
无论你是做端侧 RAG、本地语义搜索,还是 Agent 记忆系统,sqlite-vector 都是目前最轻量的选择。
【免费下载链接】sqlite-vector
SQLite-Vector is a cross-platform, ultra-efficient SQLite extension that brings vector search capabilities to your embedded database.
相关推荐
PowerShell 安装失败别硬装:3 个高频报错的快速修复路径
PowerShell 安装失败别硬装:3 个高频报错的快速修复路径 进度条走到一半突然弹出红色报错,或者 pwsh 输入后直接提示"不是内部或外部命令"——这类
编程语言语言运行时CLI终极指南:如何一键批量导入和管理所有游戏到Steam库
终极指南:如何一键批量导入和管理所有游戏到Steam库 Steam ROM Manager是一款强大的游戏管理工具,专门为那些想要将所有游戏统一整合到Steam
游戏开发3个步骤告别BT下载慢:trackerslist项目让你的下载速度提升300%
3个步骤告别BT下载慢:trackerslist项目让你的下载速度提升300% 你是否曾经面对BT下载时那令人抓狂的龟速?种子明明健康,但下载速度却始终上不去?
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考