postgreSQL下载 + 使用PGvector插件实现向量存储

PGvector实现向量存储

PGvector是为postgreSQL提供向量数据库功能的插件。

安装postgreSQL并通过idea连接

这是postgreSQL的中文社区下载页面/Download: 世界上功能最强大的开源数据库…

我们是要在linux系统上安装postgreSQL,我使用的是centos7版本。

首先需要下载源代码,运行命令:

 wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2

需要安装bzip2,没有的话执行命令

sudo yum install bzip2

解压

tar -xvf postgresql-12.2.tar.bz2

拟安装至/opt/pgsql

./configure --prefix=/opt/pgsql

如果安装失败的话可能是缺少以下文件,安装上再试一次

#安装GCC编译器
sudo yum groupinstall "Development Tools"
sudo yum install gcc glibc-devel

sudo yum install readline-devel
sudo yum install zlib-devel

执行命令查看是否正确显示版本

/opt/pgsql/bin/psql --version
🚀 后续步骤
  1. 编译 PostgreSQL

运行以下命令开始编译:

make # 使用 -j 参数可加速编译(如 make -j4,根据 CPU 核心数调整)
  1. 安装到指定目录
sudo make install # 将安装到 --prefix 指定的 /opt/pgsql
  1. 初始化数据库
#添加用户,官网上说会让我们设置密码但是我做的时候没有
adduser postgres
#如果你想要设置可以执行命令
sudo passwd postgres

# 创建数据目录 
mkdir /opt/pgsql/data 
chown -R postgres:postgres /opt/pgsql/data

#使用postgres帐号操作
su - postgres

#初始化数据库
/opt/pgsql/bin/initdb -D /opt/pgsql/data 

#启动数据库
/opt/pgsql/bin/pg_ctl -D /opt/pgsql/data -l logfile start 

 #创建数据库,假定数据库名为gerericdb)
/opt/pgsql/bin/createdb genericdb

# (进入数据库内部)
/opt/pgsql/bin/psql genericdb 

以上就完成了,常用命令可以网上查找,'\q’是退出命令

提示符 test=# 表示:
已连接到名为 test 的数据库
'#'表示你以超级用户(postgres)身份登录('$' 表示普通用户)

'#'号前的符号含义:
=	事务空闲(未开启事务)	dbname=#	正常状态,可以执行新命令
+	事务进行中(有未提交的修改)	dbname+#	已执行 BEGIN 但未 COMMIT/ROLLBACK
-	事务失败(需回滚)	dbname-#	事务中发生错误(如违反约束)
使用idea远程连接postgreSQL数据库
postgreSQL允许远程连接的配置步骤
  1. 修改 postgresql.conf
sudo nano /opt/pgsql/data/postgresql.conf

找到并修改:

listen_addresses = '你的服务器ip地址, localhost' # 添加服务器IP 
port = 5432 # 确保端口一致
  1. 修改 pg_hba.conf(客户端认证)
sudo nano /opt/pgsql/data/pg_hba.conf

在文件末尾添加(允许所有IP连接,生产环境应限制):

# TYPE DATABASE USER CIDR-ADDRESS METHOD 
host all all 0.0.0.0/0 md5 # 允许所有IPv4 
host all all ::0/0 md5 # 允许所有IPv6
  1. 重启 PostgreSQL
sudo systemctl restart postgresql
  1. 开放防火墙端口(CentOS/RHEL)
sudo firewall-cmd --add-port=5432/tcp --permanent #放开5432端口
sudo firewall-cmd --reload #重启规则
idea连接

database新建连接选择postgreSQL(第一次要下载依赖)

在这里插入图片描述

然后点Test Connection测试连接就行。

安装PGvector并创建向量数据库操作
安装PGvector插件
#进入postgreSQL的安装路径,我的是在/opt/pgsql
cd /opt/pgsql

#下载PGvector源码
git clone --branch v0.5.1 https://github.com/pgvector/pgvector.git

#进入pgvector文件
cd pgvector

#编译
make

#如果出现“make: pg_config:命令未找到”错误就执行
sudo yum install postgresql-devel
export PATH=/opt/pgsql/bin:$PATH  #手动指定 pg_config 路径

#清理之前的编译尝试
make clean

#再次编译
make
#安装
sudo make install

#验证安装
ls /opt/pgsql/share/extension/vector*

#如果出现“ls: 无法访问/opt/pgsql/share/extension/vector*: 没有那个文件或目录”错误是因为 PGvector 插件被默认安装到了系统目录 /usr/lib64/pgsql/ 和 /usr/share/pgsql/extension/,迁移一下就好了
# 创建目标目录
sudo mkdir -p /opt/pgsql/{lib,share/extension}
# 转移插件文件
sudo mv /usr/lib64/pgsql/vector.so /opt/pgsql/lib/
sudo mv /usr/share/pgsql/extension/vector* /opt/pgsql/share/extension/
# 设置权限
sudo chown -R postgres:postgres /opt/pgsql/{lib,share/extension}

再次执行验证文件存在代码就没问题了
#但是现在还存在一个问题,pgvector插件的位置不能被识别到,我们需要在postgreSQL的配置文件中添加一下
sudo nano /opt/pgsql/data/postgresql.conf
#添加以下代码,保存退出
dynamic_library_path = '/opt/pgsql/lib' 
shared_preload_libraries = 'vector'

# 停止PostgreSQL
sudo systemctl stop postgresql
# 删除旧插件注册
rm -f /opt/pgsql/data/pg_extension/vector*
# 重启服务
sudo systemctl start postgresql

# 重新创建扩展
sudo -u postgres /opt/pgsql/bin/psql #连接数据库
#执行以下sql
CREATE EXTENSION vector;
#验证扩展是否存在
SELECT * FROM pg_extension WHERE extname = 'vector';

在这里插入图片描述

这就代表成功了

测试向量数据库功能
-- 创建测试表
CREATE TABLE test_vectors (
  id SERIAL PRIMARY KEY,
  embedding VECTOR(3)
);

-- 插入数据
INSERT INTO test_vectors (embedding) VALUES 
  ('[1.1, 2.2, 3.3]'),
  ('[4.4, 5.5, 6.6]');

-- 相似度查询
SELECT * FROM test_vectors 
ORDER BY embedding <-> '[1.0, 2.0, 3.0]' 
LIMIT 1;

查看插入数据

select * from test_vectors;

在这里插入图片描述
相似度查询结果:

在这里插入图片描述

### 配置 PostgreSQL 使用 pgvector 扩展 要在 Visual Studio Code (VS Code) 中配置 PostgreSQL 并启用 `pgvector` 扩展,需完成以下几个方面的设置: #### 1. 安装 PostgreSQL 扩展 确保已安装适用于 PostgreSQL 的扩展。可以通过 VS Code 插件市场搜索 “PostgreSQL” 或其他类似的数据库管理工具插件[^5]。 #### 2. 建立与 PostgreSQL 数据库的连接 在 VS Code 中打开 PostgreSQL 扩展面板,点击“+”按钮新建一个数据库连接。输入目标 PostgreSQL 实例的相关参数,包括主机名、端口号、用户名和密码等信息。 #### 3. 启用 pgvector 扩展 一旦成功建立了到 PostgreSQL 数据库的连接,在 SQL 查询编辑器中运行以下命令以激活 `pgvector` 扩展: ```sql CREATE EXTENSION IF NOT EXISTS vector; ``` 此语句会在当前数据库实例上加载必要的函数和支持结构以便处理向量数据类型及其运算逻辑[^4]。 #### 4. 创建用于存储特征向量的表及索引 定义一张新表格用来保存包含特征向量字段的信息记录,并为其构建适合高效检索操作类型的索引来加速查询过程。例如下面这段代码展示了如何创建一个人脸识别相关的表单以及相应的 HNSW 索引: ```sql -- 创建表 CREATE TABLE seeta_face_info ( id SERIAL PRIMARY KEY, name TEXT, features VECTOR(128) ); -- 创建HNSW索引 CREATE INDEX idx_seeta_face_info_features_hnsw ON public.seeta_face_info USING hnsw(features vector_cosine_ops) WITH (m = 32, ef_construction = 200); ``` 以上步骤完成后即可开始利用 `pgvector` 提供的功能特性来进行复杂的相似度匹配计算等工作流了。 ### 注意事项 - 如果遇到权限错误,则可能需要联系管理员授予适当的权利给指定用户账户去执行这些DDL/DML指令。 - 对于生产环境部署而言,请务必遵循最佳实践指导方针调整性能调优参数比如M值或者EF构造数值大小等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值