sqlite-vec
技术文档
欢迎使用sqlite-vec
,这是一个轻量级且“足够快”的向量搜索SQLite扩展,它可以在任何地方运行!作为sqlite-vss
的后继者,本指南将帮助您了解并有效地运用这个强大的工具。
安装指南
步骤一:环境准备
确保您的系统已经安装了SQLite,并且具备相应的编程语言环境(如Python、Node.js等),以利用sqlite-vec
的不同绑定。
步骤二:安装sqlite-vec
Python 用户
执行命令 pip install sqlite-vec
来安装。
Node.js 用户
通过 npm install sqlite-vec
添加到项目依赖。
其他语言
- Ruby: 使用
gem install sqlite-vec
- Go: 执行
go get -u github.com/asg017/sqlite-vec/bindings/go
- Rust: 运行
cargo add sqlite-vec
- 对于Ruby、Go、Rust等其他语言,也各自提供了详细的官方文档链接,请参考上文的表格。
对于特定框架或工具(如Datasette、rqlite、sqlite-utils)的集成方法,访问对应的文档页面获取详细步骤。
步骤三:下载虚拟表扩展
在SQLite会话中,使用 .load
命令加载 ./vec0
扩展文件,例如 .load ./path/to/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.924]'),
(2, '[0.443, -0.501, ..., 0.362]'), -- 省略中间值以节省空间
...
查询操作
执行KNN风格查询,找到最近邻的向量:
SELECT rowid, distance
FROM vec_examples
WHERE sample_embedding MATCH '[0.890, 0.544, ..., 0.175]'
ORDER BY distance
LIMIT 2;
项目API使用文档
尽管SQLite本身不提供API接口,但sqlite-vec
扩展定义了一套SQL语法扩展来处理向量数据。主要通过.match
操作符实现向量距离计算,支持基于距离的排序和限流查询,比如上述查询示例中的使用。
关键函数和操作符
.match
: 用于执行向量匹配查询,根据提供的查询向量返回最相似的记录。distance
: 返回与查询向量的距离,作为查询结果的一部分。
注意事项
- 由于
sqlite-vec
目前处于pre-v1阶段,可能会有破坏性的变更,请在生产环境中谨慎使用。 - 访问相关网站或文档获取最新信息和高级功能指导,例如 安装详情 和各语言的详细使用案例。
加入开发者社区,贡献代码或反馈,共同推进这一项目的成熟和稳定。如果您对赞助或合作感兴趣,请联系作者获得更多详情。
以上即为sqlite-vec
的基本技术文档概述,更多高级特性和示例可在官方文档和GitHub仓库中找到。祝您使用愉快!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考