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。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目