postgresql与pgvector安装与使用
环境变量修改
- 打开 .bashrc 文件进行编辑:
vim ~/.bashrc
- 在文件的末尾添加上面的环境变量配置
# 添加 PostgreSQL 可执行文件路径到系统 PATH
export PATH=/home/....../pg/postgresql-12.4/bin:$PATH
# 设置 PostgreSQL 数据目录
export PGDATA=/home/....../pg/postgresql-12.4/data
# 设置 PostgreSQL 库文件路径
export LD_LIBRARY_PATH=/home/....../pg/postgresql-12.4/lib:$LD_LIBRARY_PATH
# 自定义 PostgreSQL 端口号(可选)
export PGPORT=5333 # 如果不需要自定义端口,可以改为 5432 或删除这行
3.保存并退出 .bashrc,然后使配置立即生效:
source ~/.bashrc
Postgresql安装与链接
解压成功后显示
ls
postgresql-12.4 postgresql-12.4.tar.gz
进入到postgresql-12.4目录编译安装
# 制定编译工具
./configure --prefix=/home/....../pg --enable-depend --enable-cassert --enable-debug CFLAGS=-O0
# 编译安装
make && make install
- prefix:安装在自己的目录下
注意:CFLAGS建议加上面这个-O0选择,这样可以调试更多内容,方便后续GDB进行调试,否则后续进行学习的时候会重新安装PGSQL。
cd ../
cd pg
cd bin
2、初始化数据库簇 (在postgresql-12.4目录下创建data文件夹)
./initdb -D ../data
3、启动数据库
./pg_ctl -D ../ data -l logfile start
./psql postgres
配置环境变量后,可直接使用 :
启动 PostgreSQL
pg_ctl start
停止 PostgreSQL
pg_ctl stop
如果是手动安装的 PostgreSQL,可以使用 pg_ctl:
/home/....../pg/postgresql-12.4/bin/pg_ctl -D /home/....../pg/postgresql-12.4/data stop
连接到 PostgreSQL 数据库
使用 psql 命令行工具连接到 PostgreSQL 数据库:
psql -U username -d dbname
例如,使用用户 username 连接到 postgres 数据库:
psql -U username -d postgres
如果没有指定数据库名,psql 会尝试连接与当前用户同名的数据库。
断开连接(退出 psql 控制台)
使用以下命令退出 psql 控制台:
\q
PGSQL的使用
使用 \l 用于查看已经存在的数据库;
使用 \c + 数据库名 来进入数据库;
\d 命令来查看表格;
\d tablename 查看表格信息;
pgvector安装
tar -zxvf pgvector-0.7.0.tar.gz
cd pgvector-0.7.0
# 安装调试版本
CFLAGS="g" PG_CFLAGS="-DDISABLE_DISPATCH" make && make install
之后进入到postgresql服务器里面,使用
create extension vector;
创建Vevtor插件。
使用如下代码可以快速在表中生成大量的向量:
create or replace function gen_float4_arr1(int,int) returns float4[] as $$
select array_agg(trunc(random()*$1)::float4) from generate_series(1,$2);
$$ language sql strict volatile;
create or replace function gen_float4_arr(float4[], int) returns float4[] as $$
select array_agg( (u + (u*$2/2.0/100) - u*$2/100*random())::float4 ) from unnest($1) u;
$$ language sql strict volatile;
创建表,id要用serial
create table if not exists v(
id serial PRIMARY KEY,
vec vector(10) -- 自己写想要的维度,比如10
);
使用下面的代码进行向量的随机生成:
do language plpgsql $$
declare
v_cent float4[];
begin
for i in 1..10 loop -- 10个中心点,下面一次插1k条,那就是1万,自己想怎么改怎么改
v_cent := gen_float4_arr1(10000,10); -- 取值范围10000,表是什么维度,这里就写多少
insert into v (vec) select gen_float4_arr(v_cent, 20)::vector(10) from generate_series(1,1000); -- 1万个点围绕一个中心点, 每个维度的值随机加减20% ,10000,20也都可以改
end loop;
end;
$$;