rqlite 集成sqlite-vec 简单说明
rqlite 是一个基于raft 的实现的分布式sqlite,sqlite-vec 是可以直接集成rqlite的,核心是sqlite 的插件机制,以下是一个简单试用
环境准备
可以使用docker 或者直接下载二进制包运行,为了方便,我直接使用mac 的rqlite 包
- 安装
brew install rqlite
curl -L https://github.com/asg017/sqlite-vec/releases/download/v0.1.1/sqlite-vec-0.1.1-loadable-linux-x86_64.tar.gz -o sqlite-vec.tar.gz
- 启动
sudo rqlited -extensions-path=sqlite-vec.tar.gz -http-addr=127.0.0.1:8080 data
- 使用
rqlite -p 8080
create virtual table vec_examples using vec0(sample_embedding float[8]);
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]')
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
- 效果
说明
注意以上是使用的extensions-path 加载的,同时使用了sqlite-vec 提供好的gz 包,如果是自己构建的插件文件,需要类似如下配置,核心是移除路径信息
zip -j ~/extensions.zip ~/extensions/rot13.so ~/extensions/carray.so
使用rqlite 集成sqlite 的好处是同时可以具有sqlite 的查询,还能使用vector,同时也能提供基于http 的remote 查询能力(还具有分布式能力),值得尝试下,当然libsql 也内置sql vector 能力,还支持复制,就不需要sqlite-vec 扩展了
参考资料
https://rqlite.io/docs/guides/extensions/