暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 6.0.0-RC1 DataVec向量数据库测试

openGauss 2024-10-29
320

一、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),加速查询且支持大多向量计算,是向量数据存储与计算不错的选择。



                        点击阅读原文跳转作者文章

                        文章转载自openGauss,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论