Linux系统安装PGSQL实现向量存储
PostgreSQL(常简称为 PGSQL 或 Postgres)是一款功能强大、开源免费、高度可扩展的关系型数据库管理系统(RDBMS),以稳定性、安全性和对 SQL 标准的严格遵循而闻名,同时支持丰富的 NoSQL 特性(如 JSON、数组、地理数据等),广泛应用于企业级应用、大数据分析、云服务等场景。
本文通过宝塔面板在服务器中安装PGSQL、PGVector插件实现向量存储。
1. 宝塔安装
1)在宝塔面板中安装PostgreSQL管理器,这是宝塔用于安装PGSQL的插件。
2)安装PGSQL数据库,我安装的是 16.1 版本,下面的教程讲的也是 16.1 版本的。
3)在开放宝塔以及服务器端口号: 5432,并设置允许外部访问所有数据库。
4)打开navicate,连接服务器数据库发现连接成功
2. 安装 pgvector 插件
1)下载pgvector插件:
下载地址: https://github.com/pgvector/pgvector/archive/refs/tags/v0.7.4.zip
postgresql14 对应 pgvector0.5 的版本
postgresql15 对应 pgvector0.6 的版本
postgresql15 对应 pgvector0.7 的版本
2)将压缩包传到服务器pgsql目录
3)编译安装:在pgvector目录中打开宝塔终端
# 临时设置环境变量
export PATH=/www/server/pgsql/bin:$PATH
#验证路径是否设置成功:
which psql
# 编译安装
make
make install
4)在数据库中启用pgvector扩展
-- 启用 vector 扩展
CREATE EXTENSION vector;-- 验证扩展是否安装成功
SELECT * FROM pg_extension;
3. 解决PostgreSQL中“vector"类型不存在的问题
问题原因分析
扩展已安装但未启用:PostgreSQL 扩展需要在每个要使用它的数据库中单独创建。即使服务器层面安装了 pgvector,不执行 CREATE EXTENSION 命令,当前数据库也无法识别vector 数据类型。
权限问题:当前数据库用户可能没有创建扩展的权限。
搜索路径问题:扩展可能安装在了非默认模式(schema)下,而该模式不在你的search_path中。
解决办法
步骤1:连接到你的数据库并创建扩展
使用有权限的用户(如postgres或具有超级用户权限的用户)连接到你需要使用vector 数据类型的数据库,然后执行以下 SQL 命令:
-- 连接到你的数据库后,执行以下命令创建扩展
CREATE EXTENSION IF NOT EXISTS vector;
步骤2:验证扩展是否创建成功
创建扩展后,可以通过以下命令验证是否成功:
-- 查看当前数据库已安装的扩展列表,检查 vector 是否在列
\dx-- 或者查询扩展详情
SELECT * FROM pg_extension WHERE extname = 'vector';
库已安装的扩展列表,检查 vector 是否在列
\dx-- 或者查询扩展详情
SELECT * FROM pg_extension WHERE extname = 'vector';