首页 AI开发平台 sqlite-vec:纯 C 向量搜索 SQLite 扩展,Mozilla 赞助的本地 RAG 利器

sqlite-vec:纯 C 向量搜索 SQLite 扩展,Mozilla 赞助的本地 RAG 利器

📅 2026/6/8 👁 阅读 2 🔗 工具访问 0 次
sqlite-vec:纯 C 向量搜索 SQLite 扩展,Mozilla 赞助的本地 RAG 利器

工具地址

https://github.com/asg017/sqlite-vec

🚀 访问工具

如果你的应用要做语义搜索、RAG、或者图片相似度匹配,通常得搭一套专门的向量数据库——Pinecone、Weaviate、Milvus,每个都是独立服务,部署和运维都不轻松。那如果只是个小应用、个人项目、甚至只是个嵌入式的本地程序呢?

sqlite-vec 就是为了这个场景诞生的。它把向量搜索直接塞进了 SQLite——你不需要额外跑一个数据库服务,不需要装复杂的依赖库,一个 .so 文件就够了。

sqlite-vec 封面图

是什么

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 能跑的地方,它就能跑。

sqlite-vec 项目首页截图

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 #嵌入式数据库 #语义搜索


关注我,每期分享一个帮你省事的强大工具 🛠️

💬 评论区 (0 条评论)

暂无评论,快来发表第一条评论吧!

📤 分享这篇文章

📌 相关推荐

微信扫码分享

打开微信扫一扫