openGauss 6.0.0RC1 dataVec向量数据库测试

2024年 5月 27日 68.8k 0

一、datavec概述

    openGauss提供datavec Extension(版本为datavec-0.4.4)。datavec是一个基于openGauss的向量扩展,目前支持的向量功能有:精确和近似的最近邻搜索、L2距离&余弦距离&内积、向量索引、向量操作函数和操作符。作为openGauss的扩展,datavec 使用熟悉的SQL语法操作向量,简化了用户使用向量数据库的过程。

二、环境部署

环境信息

IP

主机名

版本

端口

192.168.59.149

yf4

6.0.0-RC1

15000

部署方式1:

1.编译安装openGauss。

2.将datavec源码拷贝到openGauss-server源码的contrib目录下。

3.进入datavec目录执行make install

4.创建扩展extension

部署方式2:(本文选取方式2部署)

1.om安装的openGauss。

2.拷贝插件所需文件到指定路径下:datavec.so:app/lib/postgresql/。datavec.control和datavec--0.4.4.sql路径:app/share/postgresql/extension。

ll /opt/openGauss/install/app/lib/postgresql/datavec.so

[omm@yf4 ~]$ ll /opt/openGauss/install/app/lib/postgresql/datavec.so-rw------- 1 omm dbgroup 75664 Mar 30 21:13 /opt/openGauss/install/app/lib/postgresql/datavec.so

ll /opt/openGauss/install/app/share/postgresql/extension/datavec*

[omm@yf4 ~]$ ll /opt/openGauss/install/app/share/postgresql/extension/datavec*-rw------- 1 omm dbgroup 9153 Mar 30 21:11 /opt/openGauss/install/app/share/postgresql/extension/datavec--0.4.4.sql-rw------- 1 omm dbgroup  136 Mar 30 21:11 /opt/openGauss/install/app/share/postgresql/extension/datavec.control

3.创建扩展extension

create extension datavec;

openGauss=# create extension datavec;

CREATE EXTENSION

4.查看扩展datavec

select * from pg_extension where extname='datavec';

openGauss=# select * from pg_extension where extname='datavec';

 extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition

---------+----------+--------------+----------------+------------+-----------+--------------

 datavec |       10 |         2200 | t              | 0.4.4      |           |

(1 row)

三、dataVec向量数据库测试

1.创建一个有三维向量的表

CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));

openGauss=# CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));NOTICE:  CREATE TABLE will create implicit sequence "items_id_seq" for serial column "items.id"NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "items_pkey" for table "items"CREATE TABLE

2.插入向量数据

INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'), ('[7,8,9]'), ('[10,11,12]'), ('[13,14,15]');

openGauss=# INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'), ('[7,8,9]'), ('[10,11,12]'), ('[13,14,15]');INSERT 0 5

3.更新向量数据

UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;

openGauss=# UPDATE items SET embedding = '[1,2,3]' WHERE id = 1;UPDATE 1

4.删除向量数据

DELETE FROM items WHERE id = 1;

openGauss=# DELETE FROM items WHERE id = 1;DELETE 1

5.获取最近邻

SELECT * FROM items ORDER BY embedding  '[3,1,2]' LIMIT 5;

openGauss=# SELECT * FROM items ORDER BY embedding  '[3,1,2]' LIMIT 5; id | embedding----+------------  2 | [4,5,6]  3 | [7,8,9]  4 | [10,11,12]  5 | [13,14,15](4 rows)

6.获取距离

SELECT embedding  '[3,1,2]' AS distance FROM items;

openGauss=# SELECT embedding  '[3,1,2]' AS distance FROM items;

     distance

------------------ 5.74456264653803 10.6770782520313 15.7797338380595 20.9284495364563

7.平均矢量

SELECT AVG(embedding) FROM items;

openGauss=# SELECT AVG(embedding) FROM items;

      avg

---------------- [8.5,9.5,10.5](1 row)

四、限制

暂时仅支持Create extension命令方式加载插件。

暂时仅支持ivfflat索引。

只支持行存表。

索引WAL日志功能待完善,可能出现重启索引失效。

五、总结

    datavec是一款轻量级,低耦合,便于安装的向量数据库插件,作为为专有大模型的向量数据存储和检索的底座,支持向量数据的存储、 相似度计算,支持针对向量数据建立索引(IVFFLAT),加速查询且支持大多向量计算,是向量数据存储与计算不错的选择。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论