1yefuwang1/vectorlite
Fast, SQL powered, in-process vector search for any language with an SQLite driver
Vectorlite – SQLite 内部的快速向量搜索
功能简介
Vectorlite 是一个可于运行时加载的 SQLite 扩展,它新增了一种虚拟表类型,用于对高维向量进行近似最近邻 (ANN) 搜索。它让您可以直接将向量存储在 SQLite 数据库中,并使用普通的 SQL 语句执行快速相似度查询。
为什么选择它
- SQL 优先的工作流程 – 无需额外的向量数据库;您可以将关系型数据与向量嵌入存储在同一个文件中。
- 速度 – 使用 HNSW 算法 (通过 hnswlib) 与 SIMD 加速距离计算,查询速度比暴力搜索的 SQLite 扩展快 3 到 100 倍。
- 跨语言 – 编译后的
vectorlite.so/.dll/.dylib可与任何能加载 SQLite 扩展的语言 (Python, Node.js, Rust, Go 等) 搭配使用。 - 可移植性 – 提供 Linux x64、Windows x64 和 macOS Apple Silicon 的预编译二进制文件;同时也以 Python wheel (
vectorlite-py) 和 npm 包形式提供。
使用方式 (SQL 示例)
.load path/to/vectorlite.so -- 加载扩展
SELECT vectorlite_info(); -- 版本信息
-- 创建一个包含 3 维 float32 向量的表
CREATE VIRTUAL TABLE my_vec USING vectorlite(
embedding float32[3], hnsw(max_elements=100)
);
INSERT INTO my_vec(rowid, embedding) VALUES (0, vector_from_json('[1,2,3]'));
INSERT INTO my_vec(rowid, embedding) VALUES (1, vector_from_json('[2,3,4]'));
INSERT INTO my_vec(rowid, embedding) VALUES (2, vector_from_json('[7,7,7]'));
-- 寻找 [3,4,5] 的 2 个最近邻居
SELECT rowid, distance
FROM my_vec
WHERE knn_search(embedding, knn_param(vector_from_json('[3,4,5]'), 2));
此扩展提供以下辅助函数:
vector_from_json()/vector_to_json()– 在 JSON 数组与 SQLite 存储的二进制格式之间进行转换。vector_distance()– 计算精确的 L2、余弦或内积距离。knn_param()和knn_search()– 构建并运行 ANN 查询。vectorlite_info()– 显示构建细节与运行时选择的 SIMD 目标。
主要功能
| 功能 | 详细信息 |
|---|---|
| ANN 引擎 | HNSW (hierarchical navigable small world) 通过 hnswlib;可调整 ef_construction, M 等参数 |
| 距离度量 | L2 (平方), 余弦, 内积 (IP) |
| SIMD 加速 | 使用 Google 的 Highway 库;对于高维向量,比 hnswlib 原生的距离代码快 1.5 到 3 倍 |
| 数据类型 | float32, float16, bfloat16 – 半精度表在插入/查询时会进行量化 |
| 元数据过滤 | Row-id 谓词会下推至索引 (SQLite ≥ 3.38) |
| 持久化 | 索引存在内存中;通过明确的 INSERT … (operation, path) VALUES ('save', '/path') 和 ('load', …) 指令进行序列化/反序列化 |
| 跨平台 | 提供 Linux x64, Windows x64, macOS Apple Silicon 的二进制文件;Python wheels 与 Node.js 的 npm 包 |
| Beta 状态 | API 可能会变更;重大变更已移除 CREATE VIRTUAL TABLE 中的自动索引文件参数 |
适用对象
- 开发 RAG 或语义搜索服务的开发者,且已依赖 SQLite 处理元数据。
- 数据科学笔记本用户,希望在不启动额外向量数据库的情况下进行快速向量相似度计算。
- 嵌入式或边缘应用程序 (如移动设备、IoT),需要极小且自包含的向量索引。
- 任何偏好使用 SQL 进行查询,并希望将向量与关系型数据整合在一起的人。
限制
- 索引仅存在于内存中;您必须在关闭连接前明确保存它。
- 仅处于 Beta 阶段 – 未来版本可能会引入重大变更。
- 不支持 Intel 架构的 macOS;仅支持 Apple Silicon。
- 近似结果 – 召回率取决于 HNSW 参数 (您可以调整它们以获得更高的准确度)。
以上所有信息均直接取自仓库的 README。
相关
- 项目
- 项目
- 项目
- 项目
- 项目