如果你的应用要做语义搜索、RAG、或者图片相似度匹配,通常得搭一套专门的向量数据库——Pinecone、Weaviate、Milvus,每个都是独立服务,部署和运维都不轻松。那如果只是个小应用、个人项目、甚至只是个嵌入式的本地程序呢?
sqlite-vec 就是为了这个场景诞生的。它把向量搜索直接塞进了 SQLite——你不需要额外跑一个数据库服务,不需要装复杂的依赖库,一个 .so 文件就够了。
是什么
sqlite-vec 是一个 SQLite 扩展,让你在 SQLite 里直接做向量相似度搜索(KNN)。它由 Alex Garcia 开发,是 sqlite-vss 的继任者——Mozilla Builders 项目之一,得到了 Mozilla 的官方赞助。
纯 C 实现,零依赖 —— 这是最核心的特点。不需要 BLAS、OpenBLAS、cuBLAS 或者任何数值计算库。编译出来就一个 .so 文件,加载进 SQLite 就能用。
vec0 虚拟表 —— 用 SQL 的 CREATE VIRTUAL TABLE 来定义向量列,用 MATCH 操作符做 KNN 搜索,语法和普通 SQL 没区别。
多向量类型 —— 支持 float、int8 和 binary 三种向量格式。int8 适合量化后的 embedding,binary 适合哈希向量。
随处运行 —— Linux、macOS、Windows、浏览器(WASM)、树莓派。只要 SQLite 能跑的地方,它就能跑。

GitHub 上 7.7K Stars,Apache-2.0 协议,完全开源。
怎么用
安装:
# Python
pip install sqlite-vec
# Node.js
npm install sqlite-vec
# Rust
cargo add sqlite-vec
# Ruby
gem install sqlite-vec
使用:
-- 创建向量表
CREATE VIRTUAL TABLE vec_items USING vec0(
embedding float[768]
);
-- 插入向量(JSON 格式)
INSERT INTO vec_items(rowid, embedding)
VALUES (1, '[0.1, 0.2, ...]');
-- KNN 搜索
SELECT rowid, distance
FROM vec_items
WHERE embedding MATCH '[0.15, 0.25, ...]'
ORDER BY distance
LIMIT 5;
底层用暴力扫描(brute force),没有索引结构。官方称 "fast enough"——对于小型到中型数据集(几千到几万条向量)完全够用。
为什么需要它
当前的向量数据库生态有个共同的问题:每一个都是独立服务。
Pinecone 是托管服务,Weaviate 要跑 Docker,Milvus 要搞分布式架构。对于个人项目、嵌入式设备、浏览器端应用、或者单机工具来说,这些东西太重了。
sqlite-vec 的哲学是:你的数据本来就在 SQLite 里,向量搜索只是多一个查询类型。不需要另外部署,不需要网络调用,一个进程内搞定。
典型场景:
本地 RAG —— Ollama + sqlite-vec,一个在本地跑 LLM,一个在本地做向量搜索。全程不需要联网,不需要外部服务,一台笔记本全搞定。
浏览器端搜索 —— WASM 版本的 sqlite-vec 可以在浏览器里跑。前端应用直接做客户端语义搜索,不经过后端。
嵌入式设备 —— 树莓派之类的设备上,跑一个完整的向量数据库不太现实。sqlite-vec 编译后体积极小,非常适合。
数据分析 —— 用 sqlite-vec 做 embedding 的相似度分析,配合 Datasette 可以直接在浏览器里查。
不是没有槽点
有几点得说明白。
暴力扫描,没有索引 —— 这是本质限制。目前 sqlite-vec 只支持 brute force KNN,没有 IVF、HNSW 之类的近似索引。对于一万条以下的向量,速度没问题。上了百万级数据,就扛不住了。
Pre-v1,可能改 API —— 官方明确说了 pre-v1,以后会有 breaking changes。上生产要谨慎。
功能比较基础 —— 没有 metadata 过滤(roadmap 上有)、没有混合搜索。对比专业的向量数据库,功能确实少。
社区还在增长中 —— 作者 Alex Garcia 很活跃,但也只有他一个人在写核心代码。遇到问题可能要翻 issues 而不是查文档。
跟同类怎么比
vs sqlite-vss:sqlite-vec 是它的继任者,设计更好、支持的向量类型更多。如果你是新项目,直接上 sqlite-vec。
vs 专业向量数据库(Pinecone/Weaviate/Milvus):不是替代关系。大型生产场景用专业数据库,小型个人项目用 sqlite-vec。后者省心太多。
vs pgvector:pgvector 是 PostgreSQL 的向量扩展,功能更成熟(支持 IVFFlat、HNSW 索引),适合已经在用 PostgreSQL 的项目。但 PostgreSQL 本身就比 SQLite 重很多。sqlite-vec 适合轻量级、嵌入式、边缘设备。
一句话:如果你的向量数据在万级以下、不想为向量搜索单独部署一个服务、或者需要在本地/浏览器/嵌入式环境做语义搜索,sqlite-vec 是眼下最轻量、最省心的选择。
GitHub:github.com/asg017/sqlite-vec
文档:alexgarcia.xyz/sqlite-vec/
标签:#sqlite-vec #向量搜索 #SQLite #RAG #本地AI #Mozilla #嵌入式数据库 #语义搜索
关注我,每期分享一个帮你省事的强大工具 🛠️