当前位置: 首页 > news >正文

宝塔PostgreSQL安装pgvecto插件contrib包实现向量存储

1. 宝塔安装

  1. 首先确保你的宝塔已经安装了 PostgreSQL。

安装好后是能看到上面这个界面的。

我安装的是 16.1 版本,下面的教程讲的也是 16.1 版本的。

2.开放防火墙的端口号 5432

3.允许外部访问所有数据库

4.设置超级管理员用户密码

用户名默认为:postgres

后续连接数据库可用超级用户连接

username:postgres

password:就是你刚刚设置的

2. 安装 pgvector 插件

2.1 查看安装状态

1. 首先去到控制台,输入命令连接 postgreSQL 数据库。

/www/server/pgsql/bin/psql -U postgres -h localhost -p 5432

显示 postgres=# 就是连接上了数据库,可以敲 sql 语句了。

2. 在psql命令行中,执行创建扩展的命令:

CREATE EXTENSION vector;

如果没有安装过插件就会报错。

3.验证是否安装成功:

\dx vector

如果成功,它会列出 vector 扩展的信息。如下图:

2.2 安装pgvector

下载pgvector插件:

下载地址: https://github.com/pgvector/pgvector/archive/refs/tags/v0.7.4.zip

postgresql14 对应 pgvector0.5 的版本

postgresql15 对应 pgvector0.6 的版本

postgresql15 对应 pgvector0.7 的版本

将压缩包本地解压好,去宝塔建个文件夹,直接把文件都传进去。

2.3 编译安装

进入刚刚上传文件夹的目录,准备编译安装。

# 进入你的 pgvector 源代码目录
cd /www/wwwroot/pgvector# 清理之前的编译尝试(可选,但推荐)
make clean# 使用找到的 pg_config 路径进行编译
make PG_CONFIG=/www/server/pgsql/bin/pg_config# 安装编译好的扩展(需要 root 权限)
sudo make install PG_CONFIG=/www/server/pgsql/bin/pg_config

然后重复 2.1 查看安装状态,查看是否安装成功。

2.4 设置环境变量 (建议设置)

1.找到PostgreSQL的可执行工具路径

我的 PostgreSQL 安装目录是/www/server/pgsql。这个目录下的 bin 子目录包含了所有 PostgreSQL的命令行工具,包括 psql (PostgreSQL 交互终端)和 pg-ctl (服务控制工具)。

重要工具路径:

psql:/www/server/pgsql/bin/psql(用于连接数据库和执行 SQL 命令)

pg-ctl:/www/server/pgsql/bin/pg-ctl(用于管理PostgreSQL 服务,如启动、停止)

检查工具是否存在:

ls -la /www/server/pgsql/bin/psql
ls -la /www/server/pgsql/bin/pg-ctl

如果这些文件存在(应该有可执行权限),你就可以使用它们了。

2.设置环境变量

为了方便使用,建议将 PostgreSQL 的 bin目录添加到你的 PATH 环境变量中。这样你就可以直接在命令行中输入 psql、pg-ctl 等命令,而不需要每次都输入完整路径。

#临时添加(当前终端会话有效):
export PATH=/www/server/pgsql/bin:$PATH#永久添加(推荐):
#将上面的export 命令添加到你的 shell配置文件中(如~/.bashrc 或~/.bash_profile):
echo 'export PATH=/www/server/pgsql/bin:$PATH' >> ~/.bashrc
Source ~/.bashrc#验证路径是否设置成功:
which psql
# 应该输出: /www/server/pgsql/bin/psql

3.使用psql 连接到 PostgreSQL 数据库

psql 是 PostgreSQL 的交互式终端程序,允许执行 SQL 命令和管理数据库。

以postgres用户连接到数据库:

#使用完整路径(如果未设置PATH)
/www/server/pgsql/bin/psql -U postgres -h localhost -p 5432#或者如果已设置PATH
psql -U postgres -h localhost -p 5432

说明:

  • -U postgres:指定用户名(PostgreSQL 的默认超级用户通常叫postgres)
  • -h localhost:指定主机 (这里连接本地数据库)
  • -p 5432:指定端口(PostgreSQL 默认端口是54321,如果你的配置不同请修改)

如果连接失败:

  • 权限问题:检查/www/server/pgsql/data/pg_hba.conf 文件,确保有允许 postgres 用户从本地连接的配置。
  • 端口问题:确认你的 PostgreSQL 实际监听端口

(检查/www/server/pgsql/data/postgresql.conf 中的 port 设置)。

4.在数据库中启用pgvector扩展

成功连接to PostgreSQL 后,你会看到提示符变为postgres=#,这表示你现在可以执行 SQL 命令。

创建并启用扩展:

-- 启用 vector 扩展
CREATE EXTENSION vector;-- 验证扩展是否安装成功
\dx vector

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';

4.解决 Spring AI PgVectorStore 的 hstore 扩展问题

错误信息显示:

ERROR: extension "hstore" is not available
详细:Could not open extension control file "/www/server/pgsql/share/extension/hstore.control": No such file or directory.
建议:The extension must first be installed on the system where PostgreSQL is running.

<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">hstore</font> 是 PostgreSQL 的一个扩展,用于存储键值对数据。Spring AI 的 PgVectorStore 依赖这个扩展来存储元数据。

安装 hstore 扩展

安装 PostgreSQL contrib 包(包含 hstore 扩展):

指定版本(假设你使用的是 PostgreSQL 16sudo yum install postgresql16-contrib

让 PostgreSQL 找到 hstore 扩展

手动将 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">contrib</font> 包提供的扩展文件复制或链接到 PostgreSQL 的搜索路径中。

步骤 1: 查找 hstore 扩展文件的位置

首先,我们需要找到 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">postgresql16-contrib</font> 包安装后,<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">hstore</font> 扩展文件实际存放的位置。

使用 find 命令搜索
在终端中执行以下命令,搜索 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">hstore.control</font> 文件:

  1. bashsudo find / -name “hstore.control” 2>/dev/null

或者更精确地搜索 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">contrib</font> 相关的目录:

  1. bashsudo find /usr -path “/contrib/” -name “hstore.control” 2>/dev/null
  2. 检查常见的安装路径
    根据 OpenCloudOS 和 PostgreSQL 的常见安装路径,<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">hstore.control</font> 文件很可能在以下位置之一:
    • <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/usr/share/pgsql/extension/hstore.control</font>
    • <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/usr/share/postgresql16/extension/hstore.control</font>
    • <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/usr/pgsql-16/share/extension/hstore.control</font>

步骤 2: 将扩展文件链接到 PostgreSQL 目录

找到 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">hstore.control</font> 文件及其同目录下的相关文件(通常是 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.sql</font><font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">.so</font> 文件)后,您有两种方法让 PostgreSQL 找到它们:

创建符号链接(推荐,更灵活)

假设您找到的路径是 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">/usr/share/pgsql/extension/hstore.control</font>

# 创建扩展目录(如果不存在)
sudo mkdir -p /www/server/pgsql/share/extension/# 为 hstore.control 创建符号链接
sudo ln -s /usr/share/pgsql/extension/hstore.control /www/server/pgsql/share/extension/hstore.control# 为 hstore--1.x.sql 文件创建符号链接(请替换 x 为实际版本号,或用通配符)
sudo ln -s /usr/share/pgsql/extension/hstore--1*.sql /www/server/pgsql/share/extension/# 为 hstore.so 共享库创建符号链接(库文件可能在 lib 目录下)
# 先找到 hstore.so 文件
sudo find / -name "hstore.so" 2>/dev/null
# 假设找到的路径是 /usr/lib64/pgsql/hstore.so
sudo ln -s /usr/lib64/pgsql/hstore.so /www/server/pgsql/lib/hstore.so

步骤 3: 设置文件权限

确保 PostgreSQL 用户(通常是 <font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">postgres</font>)有权限读取这些文件:

bash

sudo chown postgres:postgres /www/server/pgsql/share/extension/hstore.*
sudo chmod 644 /www/server/pgsql/share/extension/hstore.*
sudo chown postgres:postgres /www/server/pgsql/lib/hstore.so
sudo chmod 755 /www/server/pgsql/lib/hstore.so

步骤 4: 重启 PostgreSQL 服务并启用扩展

完成文件链接或复制后,重启 PostgreSQL 服务以使更改生效,然后启用扩展:

先手动去宝塔面板重启 PostgreSQL 服务

# 连接到 PostgreSQL
psql -U postgres -h localhost# 在 psql 中创建扩展
CREATE EXTENSION hstore;# 验证扩展是否安装成功
\dx hstore

最后确认一下 PostgreSQL 配置文件有没有问题:

5.PostgreSQL 数据库中缺少 uuid-ossp 扩展

  1. 创建符号链接
# 为扩展控制文件和SQL文件创建符号链接
sudo ln -s /usr/share/pgsql/extension/uuid-ossp.control /www/server/pgsql/share/extension/
sudo ln -s /usr/share/pgsql/extension/uuid-ossp--1.0--1.1.sql /www/server/pgsql/share/extension/
sudo ln -s /usr/share/pgsql/extension/uuid-ossp--1.1.sql /www/server/pgsql/share/extension/# 为共享库文件创建符号链接
sudo ln -s /usr/lib64/pgsql/uuid-ossp.so /www/server/pgsql/lib/
  1. 验证符号链接:
ls -la /www/server/pgsql/share/extension/uuid-ossp*
ls -la /www/server/pgsql/lib/uuid-ossp.so

3.重启 PostgreSQL 服务(手动)

4.在 PostgreSQL 中创建扩展

CREATE EXTENSION "uuid-ossp";

http://www.xdnf.cn/news/1475695.html

相关文章:

  • 2025年渗透测试面试题总结-54(题目+回答)
  • rom定制系列------小米8“无人直播”虚拟摄像头 刷机固件 实现解析过程
  • `vector_ip_ops`(内积操作)和 `vector_cosine_ops`(余弦相似度操作)的不同
  • 详解 ELO 评分系统
  • [光学原理与应用-414]:设计 - 深紫外皮秒脉冲激光器 - 元件 - 柱面镜:光学系统中的一维(焦线)调控专家(传统透镜是0维的点)
  • 《用 asyncio 构建异步任务队列:Python 并发编程的实战与思考》
  • java分布式场景怎么实现一个高效的 读-写锁
  • 友猫社区APP源码与小程序端部署详解
  • Redis数据库基础
  • MySQL中有哪些锁
  • MathJax - LaTeX:WordPress 公式精准呈现方案
  • Android Studio 构建变体中的资源选择顺序详解
  • UDP-Server(2)词典功能
  • git在Linux中的使用
  • mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
  • v0.29.3 敏感词性能优化之繁简体转换 opencc4j 优化
  • 大语言模型提示词工程详尽实战指南
  • 记一次uniapp+nutui-uniapp搭建项目
  • 计算机网络:无线局域网加密与认证方式
  • LeetCode算法日记 - Day 33: 最长公共前缀、最长回文子串
  • Linux | i.MX6ULL Tftp 烧写和 Nfs 启动(第十九章)
  • Paimon——官网阅读:文件系统
  • 1.5、机器学习-回归算法
  • Oracle体系结构-Redo Log Buffer详解
  • Day22_【机器学习—集成学习(3)—Boosting—Adaboost算法】
  • FreeMarker快速入门指南
  • Lua 面向对象编程
  • 【MFC】对话框节点属性:Language(语言)
  • macOS下arm编译缺少stdint.h等问题
  • Python入门:从Hello World到项目创建