datavec概述
openGauss提供datavec Extension(版本为datavec-0.4.4)。datavec是一个基于openGauss的向量扩展,目前支持的向量功能有:精确和近似的最近邻搜索、L2距离&余弦距离&内积、向量索引、向量操作函数和操作符。作为openGauss的扩展,datavec 使用熟悉的SQL语法操作向量,简化了用户使用向量数据库的过程。
datavec限制
- 暂时仅支持Create extension命令方式加载插件。
- 暂时仅支持ivfflat索引。
- 只支持行存表。
- 索引WAL日志功能待完善,可能出现重启索引失效。
datavec安装
插件手动安装。如果需要手动编译加载插件最新变更,步骤如下:
编译安装
-
将datavec源码拷贝到openGauss-server源码的contrib目录下。
-
进入datavec目录执行make install。
OM安装
-
om安装的openGauss。
-
拷贝插件所需文件: datavec.so 路径: app/lib/postgresql/。 datavec.control和datavec--0.4.4.sql 路径 app/share/postgresql/extension。
datavec使用
datavec使用
创建Extension
创建datavec Extension可直接使用CREATE Extension命令进行创建:
openGauss=# CREATE Extension datavec;
使用Extension
示例1:创建一个带有3维向量的表。
openGauss=# CREATE TABLE items (val vector(3));
示例2:向量数据的插入。
openGauss=# INSERT INTO items (val) VALUES ('[1,2,3]'), ('[4,5,6]');
示例3:索引创建。
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_l2_ops) WITH (lists = 100);
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_ip_ops) WITH (lists = 100);
openGauss=# CREATE INDEX ON items USING ivfflat (val vector_cosine_ops) WITH (lists = 100);
说明:
索引最大支持2000维向量。
示例4:计算最近邻。
openGauss=# SELECT * FROM items ORDER BY val <-> '[3,1,2]' LIMIT 5;
openGauss=# SELECT * FROM items ORDER BY val <#> '[3,1,2]' LIMIT 5;
openGauss=# SELECT * FROM items ORDER BY val <=> '[3,1,2]' LIMIT 5;
删除Extension
在openGauss中删除datavec Extension的方法如下所示:
openGauss=# DROP Extension datavec [CASCADE];
说明:
如果Extension被其它对象依赖,需要加入CASCADE(级联)关键字,删除所有依赖对象。