乐于分享
好东西不私藏

VexDB-Lite DuckDB插件部署与完整使用教程

VexDB-Lite DuckDB插件部署与完整使用教程

1

下载vexdb-lite插件

登陆vexdb-lite github首页,进入 Releases 页面,如下图所示:

跳转后,根据机器架构(x86/arm)下载

vexdb-lite-duckdb-linux-[aarch64/x86_64].tar.gz文件

,即vexdb-lite的duckdb插件版本压缩包。

准备好命令行环境,并确定压缩包目录或将其迁移到当前目录下。

使用‘tar xfz path/to/vexdb-lite-duckdb-linux-[aarch64/x86_64].tar.gz’命令解压插件,注意填写正确的压缩包地址。

目录显示vexdb_lite.duckdb_extension表示插件解压成功,下一步开始安装duckdb及加载插件。

2

安装duckdb

使用pip install 命令安装duckdb,如果无python环境,可以在conda文档官网:

https://docs.conda.io/projects/conda/en/stable/user-guide/install/linux.html#

找到conda安装方式使用python。

或不需要python连接duckdb可以在其官网 https://duckdb.org/install/ 找到对应语言的驱动工具即安装方法。

我们这里只演示python驱动的安装方法:当前插件对应duckdb1.5.2版本,后续添加不同版本后可以从发布文件下载界面中选择对应的版本。注意duckdb的版本必须与插件版本一致。

安装命令语句与执行结果显示如下:

`pip install duckdb==1.5.2`

安装后可以使用:

python -c "import duckdbprint(duckdb.__version__)"

验证安装是否成功以及对应版本

3

加载vexdb-lite插件

使用INSTALL命令加载vexdb-lite插件,注意填写正确的插件路径,命令如下:

python -"import duckdbcon = duckdb.connect(config={\"allow_unsigned_extensions\"\"true\"})con.execute(\"INSTALL 'path/to/vexdb_lite.duckdb_extension'\")"

左右滑动查看更多

没有报错则表示执行成功

接下来可以重新连接验证一下插件内容,执行如下命令:

python -c "import duckdbcon = duckdb.connect(config={\"allow_unsigned_extensions\": \"true\"})con.execute(\"LOAD vexdb_lite\")con.sql(\"SELECT*FROM duckdb_extensions() WHERE extension_name ='vexdb_lite'\").show()"

左右滑动查看更多

表示插件已经安装和加载成功了

后续使用可以通过python语句

con = duckdb.connect(config={\"allow_unsigned_extensions\": \"true\"})con.execute(\"LOAD vexdb_lite\")# 使用con在duckdb上执行SQL语句

左右滑动查看更多

连接并使用duckdb

4

使用vexdb-lite插件

INSTALL是一次性的,日常使用每次连接只需:

pythoncon = duckdb.connect(config={"allow_unsigned_extensions""true"})con.execute("LOAD vexdb_lite")

左右滑动查看更多

向量列类型为FLOAT[N](N是维度)。

建表、写入、建图索引、查近邻

python# 建表并写入向量con.execute("CREATE TABLE items (id INTEGER, vec FLOAT[3])")con.execute("INSERT INTO items VALUES (1[1.0,0.0,0.0]), (2[0.0,1.0,0.0]), (3[0.9,0.1,0.0])")

左右滑动查看更多

建图索引

con.execute("CREATE INDEX idx ON items USING GRAPH_INDEX (vec)")

左右滑动查看更多

近邻查询

ORDER BY 距离函数 + LIMIT k,优化器自动改写为索引扫描

con.sql("""  SELECT id, l2_distance(vec, [1.0,0.0,0.0]::FLOAT[3]) AS dist  FROM items  ORDER BY l2_distance(vec, [1.0,0.0,0.0]::FLOAT[3])  LIMIT 3""").show()

左右滑动查看更多

距离函数

l2_distance`(L2)、`cosine_distance`(余弦)、`inner_product`(内积)

左右滑动查看更多

搜索精度可调

sqlSET vexdb_ef_search =40;   --默认 40,越大召回越高、越慢

左右滑动查看更多

  • 访问VexDB-Lite GitHub:https://github.com/VexDB-THU/VexDB-Lite

  • 访问VexDB-Lite 发布包:

    https://github.com/VexDB-THU/VexDB-Lite/releases/latest

• END •

点击“阅读原文”,访问 VexDB-Lite GitHub