寶塔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.pswp.cn/bicheng/95939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95939.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

麒麟系統 doc轉pdf

# 安裝LibreOffice&#xff08;如果尚未安裝&#xff09; sudo apt update sudo apt install libreoffice# 將DOC轉換為PDF libreoffice --headless --convert-to pdf 你的文檔.doc# 或者指定輸出目錄 libreoffice --headless --convert-to pdf --outdir /輸出目錄 你的文檔.do…

Python實現生成矩形框、三角形框、六邊形框和圓環點云

本節我們分享上節提到的不填充點云。在點云處理、計算機視覺與工業檢測中&#xff0c;幾何輪廓&#xff08;邊框/環&#xff09;點云比實心點云更能反映物體的邊緣特征、結構骨架與形貌突變區域。Python 借助 NumPy 即可快速生成矩形邊框、三角形邊框、六邊形邊框與圓環點云&am…

2025年本體論:公理與規則的挑戰與趨勢

摘要本文章旨在深入探討本體論&#xff08;Ontology&#xff09;中公理&#xff08;Axioms&#xff09;與規則&#xff08;Rules&#xff09;的核心概念、技術實現、驗證方法、性能評估及其在2025年的前沿趨勢與挑戰。公理與規則是構建嚴謹、一致知識模型的邏輯基石&#xff0c…

【51單片機】【protues仿真】基于51單片機PM2.5空氣質量檢測系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、LCD1602液晶顯示 2、按鍵?設置閾值 3、PM2.5大于閾值時啟動聲光警報 二、使用步驟 基于51單片機的PM2.5空氣質量檢測系統通常采用STC89C51/52作為核心控制器&#xff0c;結合…

【目錄-單選】鴻蒙HarmonyOS開發者基礎

用哪一種裝飾器修飾的組件可作為頁面入口組件&#xff1f;Look at the answer下面是ArkTS中類名、枚舉名推薦的代碼風格是 Look at the answer向服務器提交表單數據&#xff0c;以下哪種請求方式比較合適 Look at the answer使用http發起網絡請求&#xff0c;需要以下哪種權限&…

maven【maven】技術詳解

MavenMaven的本質是項目管理工具&#xff0c;將項目開發和管理過程抽象成一個項目對象模型&#xff08;POM&#xff09;Project Object Model&#xff1a;項目對象管理模型作用&#xff1a; 項目構建&#xff1a;提供標準的、跨平臺的自動化項目構建方式依賴管理&#xff1a;方…

【操作系統-Day 25】死鎖 (Deadlock):揭秘多線程編程的“終極殺手”

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

【嵌入式C語言】七

8.4函數的聲明和定義聲明一個函數意味著向編譯器描述函數名、返回值、參數個數和類型&#xff0c;但并不會為函數分配存儲空間定義一個函數意味著在聲明變量的同時還要有具體的實現&#xff0c;并且會為函數分配存儲空間8.5多源文件的函數聲明和定義8.6預處理指令#Include#incl…

hardhat3 源神 -- 啟動!

Hardhat 項目開發環境搭建完整指南 1. 從 GitHub 下載項目 # 使用 SSH 方式克隆&#xff08;需要配置 SSH key&#xff09; git clone gitgithub.com:NomicFoundation/hardhat.git# 或使用 HTTPS 方式 git clone https://github.com/NomicFoundation/hardhat.git# 進入項目目錄…

遇到 Git 提示大文件無法上傳確實讓人頭疼

遇到 Git 提示大文件無法上傳確實讓人頭疼&#xff0c;但別擔心&#xff0c;我們可以一步步來解決。為了讓你更清晰地了解整個流程&#xff0c;我先用一個表格來概括主要步驟&#xff1a;步驟核心操作關鍵命令/工具示例 (用于刪除歷史中的大文件)1. 定位大文件使用 Git 命令或工…

機器人控制器開發(傳感器層——奧比大白相機適配)

編譯OrbbecSDK_ROS2的代碼 執行命令 colcon buildros2 launch orbbec_camera dabai.launch.py問題1&#xff1a; 運行時報錯&#xff1a; [component_container-1] [ERROR] [1757153916.450795107] [camera.camera_container]: Failed to load library: Could not load library…

C語言(長期更新)第15講 指針詳解(五):習題實戰

C語言&#xff08;長期更新&#xff09;第15講 指針詳解&#xff08;五&#xff09;&#xff1a;習題實戰 跟著潼心走&#xff0c;輕松拿捏C語言&#xff0c;困惑通通走&#xff0c;一去不回頭~歡迎開始今天的學習內容&#xff0c;你的支持就是博主最大的動力。博主主頁&#…

數據倉庫概要

什么是數據倉庫&#xff1f; 數據倉庫是一個面向主題的、集成的、相對穩定的、反映歷史變化的數據集合&#xff0c;用于支持管理決策。 核心特征 1. 面向主題 數據倉庫圍繞核心業務主題&#xff08;如客戶、產品、銷售、財務&#xff09;來組織數據&#xff0c;而不是圍繞具體的…

python庫 Py2exe 的詳細使用(將 Python 腳本變為Windows獨立軟件包)

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 一、Py2exe 概述 1.1 Py2exe介紹 1.2 Py2exe安裝 1.3 替代工具推薦 二、基礎使用 2.1 編寫打包腳本 2.2 執行打包命令 2.3 完整案例 2.4 配置選項詳解 2.5 構建和分發 三、高級配置 3.1 包含隱藏導入 3.2 處理特殊包…

CuTe C++ 簡介02,gemm_device cuda kernel 的實現

《CuTe C 簡介01&#xff0c;從示例開始 》 中&#xff0c;最后看到了 計算 gemm 的cuda kernel&#xff0c;使用 NVIDIA CUTLASS 的 CUTe (CUDA Tile) 庫實現的高性能 GEMM (通用矩陣乘法) CUDA kernel。接下來解釋一下這個內核的各個部分。文末再貼一遍代碼&#xff0c;方便查…

萬代《寶可夢》主題新品扭蛋公開!史上最大尺寸

使用jQuery的常用方法與返回值分析 jQuery是一個輕量級的JavaScript庫&#xff0c;旨在簡化HTML文檔遍歷和操作、事件處理以及動畫效果的創建。本文將介紹一些常用的jQuery方法及其返回值&#xff0c;幫助開發者更好地理解和運用這一強大的庫。 1. 選擇器方法 jQuery提供了多種…

【FastDDS】Layer Transport ( 05-Shared Memory Transport)

6.4 共享內存傳輸 共享內存&#xff08;SHM&#xff09;傳輸依靠主機操作系統提供的共享內存機制&#xff0c;實現了在同一處理單元/機器上運行的實體之間的快速通信。注意 Fast DDS 利用域參與者&#xff08;DomainParticipant&#xff09;的 GuidPrefix_t 來識別在同一主機上…

記 2025/9/6

人工智能常見的模型按照處理問題分為6大類&#xff1a;處理權重問題的權重模型、處理狀態問題的狀態模型、處理序列問題的問題模型、處理表示問題的表示模型、處理相似度的相似模型、處理分類問題的分類模型。權重是計算特定狀態下事物的重要性。狀態問題是刻畫權重動態變化的過…

開啟Python之路,第一節學習大綱-從入門到進階

前端開啟Python之路&#xff0c;前端有沒有必要卷后端技術&#xff0c;歡迎各位大神批評指正 第一階段&#xff1a;基礎入門 (打好根基) 目標&#xff1a; 理解編程基本概念&#xff0c;掌握 Python 核心語法&#xff0c;能編寫簡單的腳本程序。 1、環境搭建與開發工具 安裝 Py…

webshell及冰蝎雙擊無法打開?

什么是webshell&#xff1f; web:萬維網 shell&#xff1a;是指一種應用程序&#xff0c;為用戶和系統之間建立連接&#xff0c;通過這個界面訪問操作系統內核的服務 webshell:是以asp、aspx、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境&#xff0c;也可以將其稱做…