PostgreSQL笔记42: pgvector扩展安装与配置完全指南

Pgvector的安装 向量化数据的存储,可以为 PostgreSQL 安装 vector 扩展来存储向量化数据。 阅读详情

概述

pgvector 是 PostgreSQL 官方生态中推荐的向量相似性搜索扩展,支持高维向量的存储、相似度计算以及向量索引结构。在使用 pgvector 之前,需要完成扩展的安装与基本配置。

本文基于 PostgreSQL 17 环境(pgvector 支持 PostgreSQL 13 及以上版本),系统介绍三种主流的 pgvector 安装方式:pgenv 一键安装、源码编译安装以及 RPM 包安装,并重点剖析源码安装过程中常见的 pg_config 路径问题和权限问题。

纲要

  • pgvector 扩展概述
    • 功能特性
    • 适用版本
  • 安装方式对比
    • pgenv 一键安装
    • 源码编译安装
    • RPM 包安装
  • pg_config 与 PGXS 构建基础设施
    • pg_config 的作用
    • PGXS 构建系统
    • 多 PostgreSQL 版本环境下的路径指定
  • 权限问题与解决方案
  • 扩展启用与验证
  • vector 数据类型基础使用

pgvector 扩展概述

pgvector 是 PostgreSQL 的向量相似性搜索扩展,由 pgvector/pgvector 开源项目维护。其核心能力包括:

  • 精确与近似最近邻搜索:支持精确搜索和基于索引的近似搜索
  • 多精度向量类型:单精度 (vector)、半精度 (halfvec)、二进制 (bit)、稀疏向量 (sparsevec)
  • 多种距离函数:L2 距离 (<->)、内积 (<#>)、余弦距离 (<=>)、L1 距离 (<+>)、汉明距离 (<~>)、Jaccard 距离 (<%>)
  • ACID 兼容:与 PostgreSQL 事务机制完全兼容

pgvector 支持 PostgreSQL 13 及以上版本。

安装方式对比

安装 pgvector 主要有三种方式,适用不同场景:

安装方式适用场景优点缺点
pgenv 一键安装快速部署、开发测试自动处理依赖,命令简洁需要网络,版本可能滞后
源码编译安装生产环境、指定版本最灵活,可指定任意版本需手动处理依赖和路径
RPM 包安装企业生产、离线环境符合企业运维规范依赖处理较繁琐

pgenv 一键安装

pgenv 是一个 PostgreSQL 二进制版本管理工具,由社区开发者维护,旨在帮助用户快速安装和管理 PostgreSQL 及其扩展。

适用版本:pgenv 已适配 PostgreSQL 13 至 17。

安装步骤:

# 1. 添加 pgenv 仓库
sudo pgenv repo add PGDG

# 2. 安装 pgvector 扩展
pgenv ext install pgvector

pgenv 会自动处理所有依赖项(如 LLVM、Python 开发包等),无需手动解决依赖关系。这对于新手用户或不希望折腾依赖环境的场景尤为推荐。

源码编译安装

源码编译安装是最通用、最灵活的方式,适用于需要安装特定版本或无法使用包管理器的场景。

标准编译步骤

参照 pgvector 官方文档:

# 1. 获取源码
cd /tmp
git clone --branch v0.8.6 https://github.com/pgvector/pgvector.git
cd pgvector

# 2. 编译
make

# 3. 安装(可能需要 sudo)
make install

pg_config 的作用

源码编译过程中,make 命令需要知道 PostgreSQL 的安装位置、头文件路径、库文件路径等信息。pg_config 是 PostgreSQL 提供的配置信息查询工具,它打印当前安装的 PostgreSQL 版本的配置参数。

pg_config 的核心输出包括:

  • --bindir:用户可执行文件位置
  • --includedir:头文件位置
  • --libdir:库文件位置
  • --pgxs:扩展 makefile 位置

在扩展的 Makefile 中,通过 PGXS(PostgreSQL Extension Build Infrastructure)机制调用 pg_config 来获取这些信息:

PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

常见问题:pg_config not found

当执行 make install 时,如果系统提示 pg_config: command not found,说明当前环境找不到 pg_config 命令。

原因分析:

  • PostgreSQL 的开发包(postgresql-server-dev)未安装
  • pg_config 不在 PATH 环境变量中
  • 使用 sudo 时,超级用户环境与普通用户环境不同

解决方案一:安装开发包

对于 Debian/Ubuntu:

sudo apt install postgresql-server-dev-17

对于 RHEL/Rocky Linux:

sudo yum install postgresql17-devel

解决方案二:指定 PG_CONFIG 路径

如果系统中有多个 PostgreSQL 版本,或 pg_config 不在 PATH 中,可以在 make 命令中直接指定:

make PG_CONFIG=/usr/pgsql-17/bin/pg_config
sudo make install PG_CONFIG=/usr/pgsql-17/bin/pg_config

解决方案三:使用 sudo 时保留环境变量

当需要使用 sudo 执行 make install 时,sudo 默认会重置环境变量,导致 pg_config 不可用。解决方案:

sudo --preserve-env=PG_CONFIG make install

安装验证

源码编译安装完成后,pgvector 的动态库文件(.so)会安装到 PostgreSQL 的 lib 目录,控制文件(.control)和 SQL 脚本会安装到 share/extension 目录。

# 查看动态库
ls $PGHOME/lib/vector.so

# 查看控制文件
ls $PGHOME/share/extension/vector.control

RPM 包安装

RPM 包安装适用于企业生产环境,特别是无法联网或需要严格版本管控的场景。

从 PostgreSQL Yum 仓库安装:

# RHEL/Rocky Linux
sudo yum install pgvector_17
# 或
sudo dnf install pgvector_17

RPM 安装方式的挑战在于需要提前解决所有依赖项,包括 LLVM、Git 以及 PostgreSQL 开发包等。

扩展启用与验证

无论采用哪种安装方式,最后都需要在数据库中启用扩展。

连接到目标数据库后执行:

-- 创建 pgvector 扩展
CREATE EXTENSION IF NOT EXISTS vector;

-- 验证安装
SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';

执行结果示例:

 extname | extversion
---------+------------
 vector  | 0.8.6
(1 row)

注意:CREATE EXTENSION 命令需要在每个需要使用 pgvector 的数据库中分别执行。

vector 数据类型基础使用

安装并启用扩展后,即可使用 vector 数据类型:

-- 创建包含向量列的表(3 维向量)
CREATE TABLE items (
    id BIGSERIAL PRIMARY KEY,
    embedding vector(3)
);

-- 插入向量数据
INSERT INTO items (embedding) VALUES
    ('[1,2,3]'),
    ('[4,5,6]');

-- L2 距离最近邻查询
SELECT * FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;

API 速览

本节梳理 pgvector 安装与使用过程中涉及的核心 API 与命令。

pg_config

所属:PostgreSQL 核心工具

方法签名:

pg_config [option...]

常用选项:

选项说明
--bindir用户可执行文件位置
--includedirC 头文件位置
--libdir库文件位置
--pgxs扩展 makefile 位置
--configure构建时的 configure 选项

示例:

# 查看所有配置
pg_config

# 查看 pgxs 路径
pg_config --pgxs
# 输出示例: /usr/pgsql-17/lib/pgxs/src/makefiles/pgxs.mk

CREATE EXTENSION

所属:PostgreSQL SQL 命令

方法签名:

CREATE EXTENSION [IF NOT EXISTS] extension_name
    [WITH] [SCHEMA schema_name]
    [VERSION version]
    [FROM old_version]
    [CASCADE]

参数说明:

  • IF NOT EXISTS:如果扩展已存在则不报错
  • SCHEMA:指定扩展安装的目标 schema
  • VERSION:指定要安装的版本
  • CASCADE:自动安装依赖扩展

示例:

-- 基本创建
CREATE EXTENSION vector;

-- 安全创建(避免重复执行报错)
CREATE EXTENSION IF NOT EXISTS vector;

-- 删除扩展
DROP EXTENSION vector;

make 与 PG_CONFIG

所属:GNU make + PostgreSQL 扩展构建系统

方法签名:

make [target] [PG_CONFIG=/path/to/pg_config]

常用 target:

target说明
all(默认)编译扩展
install安装扩展到 PostgreSQL 目录
clean清理编译产物
installcheck运行回归测试

示例:

# 指定 PostgreSQL 安装路径编译
make PG_CONFIG=/usr/pgsql-17/bin/pg_config

# 指定路径安装(使用 sudo 时保留环境变量)
sudo --preserve-env=PG_CONFIG make install

项目难点与解决方案

核心难点

多版本 PostgreSQL 环境下的扩展编译路径问题。当系统中同时安装多个 PostgreSQL 版本时,默认的 pg_config 可能指向错误的版本,导致扩展安装到非预期的 PostgreSQL 实例中。

解决方案

通过 PG_CONFIG 环境变量或 make 命令行参数显式指定目标 PostgreSQL 的 pg_config 路径:

export PG_CONFIG=/usr/pgsql-17/bin/pg_config
make && sudo --preserve-env=PG_CONFIG make install

广度

该问题不仅存在于 pgvector,而是所有需要编译的 PostgreSQL 扩展(如 PostGIS、pg_stat_statements 等)的共性问题。

深度

pg_config 与 PGXS 是 PostgreSQL 扩展构建基础设施的核心组件。理解其工作机制——pg_config 提供路径信息,PGXS 提供构建规则——是掌握所有 PostgreSQL 扩展编译的基础。

复杂度

源码编译安装涉及依赖包安装(LLVM、Python 开发包、Git 等)、环境变量配置、权限管理等多个环节,对新手有一定门槛。pgenv 等工具的出现正是为了降低这一复杂度。

官方文档

参考链接

总结

本文系统介绍了 pgvector 扩展的三种安装方式:pgenv 一键安装适用于快速部署和开发测试;源码编译安装最为灵活通用,适合生产环境和指定版本需求;RPM 包安装适用于企业级离线部署场景。源码编译安装的核心在于正确配置 pg_config 路径——pg_config 是 PostgreSQL 提供的配置信息查询工具,扩展的 Makefile 通过 PGXS 机制调用它来获取头文件、库文件路径等编译参数。

当系统存在多个 PostgreSQL 版本或使用 sudo 导致环境变量丢失时,需通过 PG_CONFIG 变量显式指定路径。无论采用哪种安装方式,最后都需在目标数据库中执行 CREATE EXTENSION vector 来启用扩展。掌握 pg_config 与 PGXS 的工作原理,是理解和解决所有 PostgreSQL 扩展编译问题的基础。

向量数据库:PGVector PGVector 是一个基于 PostgreSQL 的扩展插件,为用户提供了一套强大的向量存储和查询的功能 阅读详情

相关推荐

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

本文为本人在安装pgvector中踩过的坑,已找到解决方法,现向大家分享。

m0_62627802的博客 2万+

pgvector安装 重点安装pgvector

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.youkuaiyun.com/xiaoyang1982/article/details/140873734。补丁 安装完centos-release-scl-rh 需要修改镜像源。2. yum makecache ##生成缓存。1. yum clean all ##清除。2.补丁 第二步走不通使用下方的命令安装。

明月乡 4524

PostgreSQL 向量扩展插件pgvector安装和使用

重新修改.bash_profile,配置PG_CONFIG和LD_LIBRARY_PATH,指定安装的postgresql 16.3版本。make编译调用的postgresql不是之前安装的 16.3,而是apt-get 安装的10.23版本。利用pgvector 前提是事先安装好postgresql,安装postgresql例可参考下文。make编译pgvector时无法识别安装的postgresql。安装的版本不是最新的版本而是10.23。pgvector的安装成功。

m0_74823524的博客 2293

PostgreSQL安装扩展vector

这小小的一个扩展我弄了好久,中间出现了问题,pgadmin4打不开了,式了好多办法,比如修改文件啊,然后改注册表啊,都不可以,重新又下了一个pgadmin4降了一个版本才好了。下载vector可以使用很多方法,可以直接在命令行中克隆git上面的源代码(我不是用这个方法的就,就不介绍怎么使用的了)打开c++的终端在终端中打开解压后的pg_vector的地址运行下面两句代码就可以了。再打开pgadmin4输入下面这段代码运行后运行,执行成功后就可以了。上下载的源码,下载好解压到本地就可以了。

qq_57963867的博客 8058

Windows下Pgvector扩展安装全攻略:从Visual Studio到PostgreSQL的完整配置流程

本文详细介绍了在Windows系统下为PostgreSQL安装Pgvector扩展的完整流程。从安装Visual Studio Build Tools编译环境、配置PostgreSQL开发路径,到获取源码、编译安装,最后在数据库中启用并验证功能,提供了全步骤指南和常见问题解决方案,帮助开发者为AI应用快速搭建本地向量搜索能力。

green的博客 944

LabVIEW电压信号采集系统:从零搭建到科研实战

本文详细介绍了如何从零开始搭建一个基于LabVIEW的电压信号采集系统。内容涵盖硬件选型(如NI USB-6002数据采集卡)、软件环境配置、核心程序开发(包括多通道同步采集、数据自动保存)以及高级功能优化。系统支持自定义采样率与时长,并提供了完整的LabVIEW程序框图和配套的Python数据分析脚本,旨在帮助科研人员和工程师快速构建稳定、高效的专属数据采集方案,提升实验自动化水平。

gold8的专栏 462

pgvector 向量数据库完全指南:PostgreSQL 生态的 AI 增强

pgvector是PostgreSQL的开源扩展,为关系型数据库添加向量相似度搜索能力。它完全集成在PostgreSQL内部,复用其存储引擎、事务机制和SQL接口,无需额外基础设施。pgvector支持两种主流索引算法:IVFFlat(适合批量导入)和HNSW(查询快、召回率高)。存储上利用PostgreSQL的TOAST机制,支持压缩和稀疏向量。作为扩展,pgvector添加了新的数据类型、操作符和函数,通过标准SQL即可进行向量操作。部署时可使用官方Docker镜像快速启动,适用于从开发到生产的环境。

心有猛虎细嗅蔷薇 5858

从零到一:Halcon手眼标定的实战避坑指南

本文详细解析了Halcon手眼标定的完整流程,重点介绍了Eye-in-Hand和Eye-to-Hand两种模式的实操技巧与常见陷阱。通过九点法、N点法等实战案例,提供硬件配置检查、数据采集策略及误差修正方案,帮助开发者提升机械臂与视觉系统的协同精度,适用于工业自动化领域的精准定位与抓取任务。

neovim7hacker的博客 236

Windows安装Postgresql以及pgvector扩展详细教程

摘要:本文详细介绍了在Windows中PostgreSQL(pgsql)的安装配置流程及pgvector扩展的安装方法。首先指导用户下载安装pgsql 17.7版本,包括选择组件、设置密码、配置端口等步骤,并验证安装是否成功。其次讲解如何使用Navicat连接数据库。最后重点说明pgvector扩展的安装过程,包括环境变量设置、源码编译以及数据库中的启用方法,特别指出pgsql 17对应pgvector 0.8.x分支版本。全文提供了完整的命令行操作指南和注意事项。

weixin_63908159的博客 8109

(超详细)Qt入门和配置Visual Studio的Qt环境

内容写了Qt入门,创建并编写第一个Qt程序,以及配置VS编写Qt程序的环境。(超级详细)

LY549826LY549264的博客 7680

保姆级教程:用AI辅助反编译Python3.9+的EXE文件(兼容新版pycdc工具)

本文详细介绍了如何利用AI技术辅助反编译Python 3.9+的EXE文件,解决传统工具如uncompyle6无法处理新版字节码的问题。通过pycdc工具和AI大模型的结合,开发者可以高效还原代码逻辑,并提供了从EXE解包到字节码解析的完整流程,适用于逆向工程和代码分析场景。

hill8的博客 1225

PostgreSQL pgvector扩展Windows环境完整安装指南

在人工智能应用日益普及的今天,向量相似性搜索已成为现代数据库的重要功能。PostgreSQL的pgvector扩展为开发者提供了强大的向量处理能力,让您能够在Windows环境下轻松构建AI驱动的应用。 ## 安装前的准备工作 在开始安装pgvector之前,确保您的Windows系统满足以下基本要求: **必备软件清单:** - PostgreSQL 16.1或更高版本 - Microso

gitblog_00064的博客 1438

Ubuntu Server 22.04.5系统安装教程

该教程主要是演示在服务器上安装Ubuntu server 22.04系统的详细步骤,主要包含,安装系统前的准备(镜像的下载,启动盘的制作),安装系统时的语言选择,网络设置,切换镜像源(可根据实际需求来配置,本文使用清华镜像源),手动分区,用户设置,ssh服务安装等。以上就是关于Ubuntu Server 22.04系统安装的详细过程。

逆水行舟,不进则退。 7771

Windows系统下PostgreSQL pgvector扩展的极速安装指南

还在为Windows环境下的PostgreSQL向量搜索功能发愁吗?🤔 别担心,今天我就带你用最简单的方式搞定pgvector扩展的安装,让你的数据库瞬间拥有AI级别的向量相似性搜索能力!PostgreSQL向量搜索从此不再是难题。 ## 为什么你的Windows安装总是失败? Windows用户经常遇到这些问题: - 编译环境配置复杂,Visual Studio版本不匹配 - 缺少必要的头

gitblog_00314的博客 1292

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

软考「系统规划与管理师(第2版)」考后复盘|考试大纲深度解读

第2版大纲其实在定义一种新岗位:不是“会运维的人”,而是“能站在业务战略高度,规划信息系统、治理服务过程、驱动数字化转型的总设计师”。你读大纲,别只看到24章。基础篇给你世界观方法篇给你规划力能力篇给你管理力实践篇给你落地感格局决定分数,责任决定高度。先懂大纲要什么样的人,再决定自己怎么学。官方大纲以中国计算机技术职业资格网最新公布版本为准:https://www.ruankao.org.cn。

软件行业技术文化交流。 46

pgvector Windows 快速安装指南:如何给你的 PostgreSQL 装上一个向量搜索扩展(附完整步骤)

这篇文章带你在一台 Windows 机器上完成 pgvector 安装:PostgreSQL 向量扩展,让 Postgres 原生支持向量存储和近似最近邻查询。适合刚接触向量数据库的新手,也适合只想给现有业务库加一个 embedding 检索能力的老用户。读完并按步骤操作,你就能在自己的库里建向量列、建索引、跑相似度查询。 ## 安装前自检 🧾 动手之前,先把下面这张清单核对完。三项都满足,

gitblog_00462的博客 1044

Unreal5.6从入门到精通之 如何实现MetaHuman数字人

本文介绍了使用HYPER3D-ChatAvatar网站生成3D头部模型,并导入Unreal Engine制作数字人的完整流程。首先上传照片生成头部模型(约2分钟),设置参数后下载模型文件。然后在UE5.6中创建项目,激活MetaHuman插件,导入头部模型并调整肤色、面部特征和身体模板。通过MetaHuman Creator组装数字人蓝图,支持添加音频/视频动画功能。关键步骤包括:取消Rigging选项节省时间、切换英文模式避免材质问题、使用Live Link Face应用实现面部捕捉等。整个流程约需5-1

TxNet 1353

Windows环境下PostgreSQL pgvector扩展安装指南:从入门到精通

在人工智能技术快速发展的今天,向量相似性搜索已成为现代数据库不可或缺的核心能力。PostgreSQL的pgvector扩展为开发者提供了强大的向量处理功能,让您在Windows平台上也能轻松构建智能化的AI应用系统。 ## 环境配置快速检查清单 在开始安装前,请确保您的Windows系统环境满足以下技术要求: **系统环境要求:** - PostgreSQL 16.1或更高版本 - Micr

gitblog_00985的博客 1359

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: PostgreSQL笔记41:向量数据、向量化表示与pgvector扩展实践
下一篇: PostgreSQL笔记43:pgvector向量数据存储机制与索引限制深度解析
Wang's Blog
博客等级 码龄12年 7438粉丝 2422原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值