sqlite-vec
一个极小的、"足够快"的向量搜索SQLite扩展,可以在任何地方运行!是sqlite-vss
的继任者。
[!重要]
sqlite-vec
尚未发布v1版本,请预期会有重大变更!
- 在
vec0
虚拟表中存储和查询浮点型、8位整型和二进制向量 - 用纯C语言编写,无依赖,可在任何支持SQLite的平台上运行(Linux/MacOS/Windows、浏览器中的WASM、树莓派等)
- 可通过
rowid IN (...)
子查询对向量进行预过滤
sqlite-vec
是一个
Mozilla Builders项目,
并得到了以下赞助商的额外支持:
Fly.io 、
Turso和
SQLite Cloud。
详情请参阅赞助商部分。
安装
有关更多详细信息,请参阅安装sqlite-vec
。
语言 | 安装 | 更多信息 | |
---|---|---|---|
Python | pip install sqlite-vec | Python版sqlite-vec | |
Node.js | npm install sqlite-vec | Node.js版sqlite-vec | |
Ruby | gem install sqlite-vec | Ruby版sqlite-vec | |
Go | go get -u github.com/asg017/sqlite-vec/bindings/go | Go版sqlite-vec | |
Rust | cargo add sqlite-vec | Rust版sqlite-vec | |
Datasette | datasette install datasette-sqlite-vec | Datasette版sqlite-vec | |
rqlite | rqlited -extensions-path=sqlite-vec.tar.gz | rqlite版sqlite-vec | |
sqlite-utils | sqlite-utils install sqlite-utils-sqlite-vec | sqlite-utils版sqlite-vec | |
Github 发布 |
示例用法
.load ./vec0
create virtual table vec_examples using vec0(
sample_embedding float[8]
);
-- 向量可以以JSON格式或紧凑的二进制格式提供
insert into vec_examples(rowid, sample_embedding)
values
(1, '[-0.200, 0.250, 0.341, -0.211, 0.645, 0.935, -0.316, -0.924]'),
(2, '[0.443, -0.501, 0.355, -0.771, 0.707, -0.708, -0.185, 0.362]'),
(3, '[0.716, -0.927, 0.134, 0.052, -0.669, 0.793, -0.634, -0.162]'),
(4, '[-0.710, 0.330, 0.656, 0.041, -0.990, 0.726, 0.385, -0.958]');
-- KNN 风格查询
select
rowid,
distance
from vec_examples
where sample_embedding match '[0.890, 0.544, 0.825, 0.961, 0.358, 0.0196, 0.521, 0.175]'
order by distance
limit 2;
/*
┌───────┬──────────────────┐
│ rowid │ distance │
├───────┼──────────────────┤
│ 2 │ 2.38687372207642 │
│ 1 │ 2.38978505134583 │
└───────┴──────────────────┘
*/
赞助商
sqlite-vec
的开发得到了多个慷慨赞助商的支持!Mozilla是通过新的Builders项目成为主要赞助商。
sqlite-vec
还得到了以下公司的赞助:
此外,还有多位个人支持者通过 Github sponsors 提供赞助!
如果您的公司有兴趣赞助 sqlite-vec
的开发,请发送电子邮件以获取更多信息:https://alexgarcia.xyz
另请参阅
sqlite-ecosystem
,我开发的更多第三方 SQLite 扩展sqlite-rembed
,从 OpenAI/Nomic/Ollama 等远程 API 生成文本嵌入,用于测试和 SQL 脚本sqlite-lembed
,使用.gguf
格式的嵌入模型在本地生成文本嵌入