最近更新时间:2024-11-26 20:31:12
如需使用第三方客户端工具,对数据库中的数据或数据库对象进行管理,你需要先连接到数据库。
本章节以 psql 为例说明如何连接至 Relyt 数据库。
前提条件
环境中存在至少一个向量版数仓服务单元。
执行向量分析该数仓服务单元中存在至少一个数据库。
已获取对应账号的用户名和密码,且该账号拥有目标数据库的 CONNECT
权限。
步骤 1. 安装 psql
本节分别介绍如何在 Windows、Linux、Mac 系统上安装 psql 工具,请根据实际情况选择恰当的安装方式。
如环境中已安装 psql,可跳过此步骤。
Windows 安装
从 PostgreSQL 官网下载对应版本的安装包。
双击下载的安装程序,按照提示完成安装。
在安装过程中,确保选择安装 psql 工具。
安装完成后,选择 系统属性 > 高级 > 环境变量。
在 系统变量 中找到 Path
,并添加 PostgreSQL 的 bin
目录路径(例如:C:\Program Files\PostgreSQL\13\bin
)。
打开命令提示符 cmd,输入 psql --version
,如果显示版本信息,则安装成功。
Linux 安装
使用包管理器安装:
a. 对于 Debian/Ubuntu 系统:
sudo apt update
sudo apt install postgresql postgresql-contrib
b. 对于 CentOS/RHEL 系统:
sudo yum install postgresql-server postgresql-contrib
打开终端,输入 psql --version
,如果显示版本信息,则安装成功。
MacOS 安装
本节介绍如何通过 Homebrew 进行安装,你也可以采用其他方式完成安装。
安装 Homebrew。如系统中已完成 Homebrew 安装,请跳过此步骤。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
使用 Homebrew 安装 PostgreSQL:
brew update
brew install postgresql
打开终端,输入 psql --version
,如果显示版本信息,则安装成功。
步骤 2. 连接数据库
执行以下命令连接到 Relyt 数据库。
psql -h <endpoint_domain> -p <endpoint_port> -U <dw_user_name> -d <db_name>
参数说明:
参数 | 描述 |
endpoint_domain | 数仓服务单元的公共端点。 |
endpoint_port | 数仓服务单元的端口号,默认为 5432。 |
dw_user_name | 用于登录数仓服务单元的数仓用户名。 |
db_name | 连接的 Relyt 数据库名称。 |
本节介绍如何在向量数据库中导入数据
前提条件
环境中存在至少一个向量版数仓服务单元。
已获取对应账号的用户名和密码。
数据准备
本文使用如下测试数据集作为示例:
你可以通过命令行进行下载:
使用 wget 下载:
wget https://commontestdata.ks3-cn-beijing.ksyuncs.com/quickstart/glove-25-angular-train.csv
使用 curl 下载:
curl -O https://commontestdata.ks3-cn-beijing.ksyuncs.com/quickstart/glove-25-angular-train.csv
测试数据表结构说明:
字段 | 数据类型 | 说明 |
id | varchar | 编号。 |
vector | float16[] | 特征向量数据 |
post_publish_time | timestamp | 数据更新时间。 |
步骤 1. 创建数据库、表和索引
Relyt 支持通过控制台进行数据库表和索引的创建,也支持通过其它兼容的客户端工具进行操作。如通过 psql 等客户端工具,请确保已 连接至 Relyt 数据库。
通过控制台创建
创建数据库
登录目标数仓服务单元控制台。
在左侧导航栏中,选择 数据库,点击页面右上角的 + 数据库。
输入数据库名称和描述(可选)。
此处以 testdb
为例。
创建 Schema 和表
在左侧树上选择 testdb,选择 + Schema,输入 Schema 名称和描述(可选)。
本文以 vector_test
为例。
进入 vector_test
Schema,点击 + 创建
> 表
。
在打开的工作簿中,输入 CREATE TABLE
语句。
CREATE TABLE test_tbl
(
id VARCHAR,
vector vecf16(25),
post_publish_time TIMESTAMP
)
DISTRIBUTED BY(id);
在 SQL 编辑器中,选中对应 CREATE TABLE
语句,点击右上角的 运行 按钮。
创建索引
在左侧导航栏中,选择 工作簿,点击 + 工作簿。
在打开的工作簿的编辑器的左上角,将数据库和 Schema 分别选择为 testdb
和 vector_test
。
在 SQL 编辑器中,输入如下 SQL 语句:
-- 修改向量列的存储格式为 PLAIN
ALTER TABLE vector_test.test_tbl ALTER COLUMN vector SET STORAGE PLAIN;
-- 创建向量索引
CREATE INDEX test_vector_idx ON vector_test.test_tbl USING vectors (vector vecf16_l2_ops);
选中上述语句,点击右上角的 运行 按钮。
通过客户端工具创建
执行如下命令创建名为 testdb
的数据库,并连接至该数据库。
-- 创建一个名为 testdb 的数据库
CREATE DATABASE testdb;
-- 连接至该数据库
\c testdb
执行如下命令创建名为 vector_test
的 Schema 和名为 test_tbl
的表。
CREATE SCHEMA IF NOT EXISTS vector_test;
CREATE TABLE test_tbl
(
id VARCHAR,
vector vecf16(25),
post_publish_time TIMESTAMP
)
DISTRIBUTED BY(id);
执行如下命令,为表 test_tbl
创建索引。
-- 修改向量列的存储格式为 PLAIN
ALTER TABLE vector_test.test_tbl ALTER COLUMN vector SET STORAGE PLAIN;
-- 创建向量索引
CREATE INDEX test_vector_idx ON vector_test.test_tbl USING vectors (vector vecf16_l2_ops);
步骤 2. 导入数据
本文以使用 psql 的 \copy
命令为例。
连接 psql 至 testdb
数据库。关于如何连接 psql 至 Relyt 数据库,参考连接至数据库。
2. 执行如下命令:
\copy test_tbl from '/<save_directory>/glove-25-angular-train.csv' WITH CSV DELIMITER '|';
请将示例中的 <save_directory>
替换为测试数据实际所在的存储目录。例如,测试数据下载到了 /home
目录下,那么此处应该为 /home/glove-25-angular-train.csv
。
导入完成后,系统会返回 COPY 295879
(表示本次共拷贝了 295879 条数据)。
本文旨在指导新手用户快速上手向量分析。
前提条件
环境中存在向量版数仓服务单元,且数仓服务单元中已有数据库。
目标数据库中已存在目标表和数据。关于如何在数据库中导入数据,参考本文“导入数据”部分。
向量分析示例
下述查询以获取欧氏距离(平方)为例。
Q1: 查询所有向量中离目标向量最近的 10 个向量
SELECT id,
vector <-> '[0.6377800107002258,0.9509999752044678,0.9408400058746338,-0.5509499907493591,0.06180400028824806,-1.6734999418258667,-0.5704600214958191,-1.5750000476837158,0.5274199843406677,-0.3642300069332123,0.5622000098228455,0.009283199906349182,0.391759991645813,0.46647000312805176,-0.7589899897575378,0.3084399998188019,0.4611699879169464,0.30028998851776123,1.5491000413894653,1.2386000156402588,-0.7254599928855896,1.7488000392913818,0.4075799882411957,-1.96589994430542,0.05322200059890747]'
AS dist FROM test_tbl ORDER BY dist LIMIT 10;
如使用控制台工作簿执行该命令,返回结果如下图所示:
Q2:查询 8 月 8 号到 15 号区间内,由公式 dist \* 10
为算法计算相似度,获得相似度大于 67,最相似的 20 条数据
SELECT b.* FROM (SELECT a.id, a.dist * 10 AS similarity FROM
(SELECT id,
vector <-> '[0.6377800107002258,0.9509999752044678,0.9408400058746338,-0.5509499907493591,0.06180400028824806,-1.6734999418258667,-0.5704600214958191,-1.5750000476837158,0.5274199843406677,-0.3642300069332123,0.5622000098228455,0.009283199906349182,0.391759991645813,0.46647000312805176,-0.7589899897575378,0.3084399998188019,0.4611699879169464,0.30028998851776123,1.5491000413894653,1.2386000156402588,-0.7254599928855896,1.7488000392913818,0.4075799882411957,-1.96589994430542,0.05322200059890747]'
AS dist FROM test_tbl
WHERE post_publish_time >= '2024-08-08 00:00:00'
AND post_publish_time <= '2024-8-15 10:52:00'
ORDER BY dist ASC LIMIT 5000) AS a) AS b WHERE b.similarity > 67 offset 0 LIMIT 20;
如使用控制台工作簿执行该命令,返回结果如下图所示:
纯净模式
鼠标选中内容,快速反馈问题