PostgreSQL笔记42: pgvector扩展安装与配置完全指南
概述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 仓库sudopgenv repoaddPGDG# 2. 安装 pgvector 扩展pgenv extinstallpgvectorpgenv会自动处理所有依赖项如 LLVM、Python 开发包等无需手动解决依赖关系。这对于新手用户或不希望折腾依赖环境的场景尤为推荐。源码编译安装源码编译安装是最通用、最灵活的方式适用于需要安装特定版本或无法使用包管理器的场景。标准编译步骤参照 pgvector 官方文档# 1. 获取源码cd/tmpgitclone--branchv0.8.6 https://github.com/pgvector/pgvector.gitcdpgvector# 2. 编译make# 3. 安装可能需要 sudomakeinstallpg_config 的作用源码编译过程中make命令需要知道 PostgreSQL 的安装位置、头文件路径、库文件路径等信息。pg_config是 PostgreSQL 提供的配置信息查询工具它打印当前安装的 PostgreSQL 版本的配置参数。pg_config的核心输出包括--bindir用户可执行文件位置--includedir头文件位置--libdir库文件位置--pgxs扩展 makefile 位置在扩展的Makefile中通过PGXSPostgreSQL 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/Ubuntusudoaptinstallpostgresql-server-dev-17对于 RHEL/Rocky Linuxsudoyuminstallpostgresql17-devel解决方案二指定 PG_CONFIG 路径如果系统中有多个 PostgreSQL 版本或pg_config不在PATH中可以在make命令中直接指定makePG_CONFIG/usr/pgsql-17/bin/pg_configsudomakeinstallPG_CONFIG/usr/pgsql-17/bin/pg_config解决方案三使用 sudo 时保留环境变量当需要使用sudo执行make install时sudo默认会重置环境变量导致pg_config不可用。解决方案sudo--preserve-envPG_CONFIGmakeinstall安装验证源码编译安装完成后pgvector 的动态库文件.so会安装到 PostgreSQL 的lib目录控制文件.control和 SQL 脚本会安装到share/extension目录。# 查看动态库ls$PGHOME/lib/vector.so# 查看控制文件ls$PGHOME/share/extension/vector.controlRPM 包安装RPM 包安装适用于企业生产环境特别是无法联网或需要严格版本管控的场景。从 PostgreSQL Yum 仓库安装# RHEL/Rocky Linuxsudoyuminstallpgvector_17# 或sudodnfinstallpgvector_17RPM 安装方式的挑战在于需要提前解决所有依赖项包括 LLVM、Git 以及 PostgreSQL 开发包等。扩展启用与验证无论采用哪种安装方式最后都需要在数据库中启用扩展。连接到目标数据库后执行-- 创建 pgvector 扩展CREATEEXTENSIONIFNOTEXISTSvector;-- 验证安装SELECTextname,extversionFROMpg_extensionWHEREextnamevector;执行结果示例extname | extversion --------------------- vector | 0.8.6 (1 row)注意CREATE EXTENSION命令需要在每个需要使用 pgvector 的数据库中分别执行。vector 数据类型基础使用安装并启用扩展后即可使用vector数据类型-- 创建包含向量列的表3 维向量CREATETABLEitems(id BIGSERIALPRIMARYKEY,embedding vector(3));-- 插入向量数据INSERTINTOitems(embedding)VALUES([1,2,3]),([4,5,6]);-- L2 距离最近邻查询SELECT*FROMitemsORDERBYembedding-[3,1,2]LIMIT5;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.mkCREATE EXTENSION所属PostgreSQL SQL 命令方法签名CREATEEXTENSION[IFNOTEXISTS]extension_name[WITH][SCHEMAschema_name][VERSION version][FROMold_version][CASCADE]参数说明IF NOT EXISTS如果扩展已存在则不报错SCHEMA指定扩展安装的目标 schemaVERSION指定要安装的版本CASCADE自动安装依赖扩展示例-- 基本创建CREATEEXTENSION vector;-- 安全创建避免重复执行报错CREATEEXTENSIONIFNOTEXISTSvector;-- 删除扩展DROPEXTENSION vector;make 与 PG_CONFIG所属GNU make PostgreSQL 扩展构建系统方法签名make[target][PG_CONFIG/path/to/pg_config]常用 targettarget说明all默认编译扩展install安装扩展到 PostgreSQL 目录clean清理编译产物installcheck运行回归测试示例# 指定 PostgreSQL 安装路径编译makePG_CONFIG/usr/pgsql-17/bin/pg_config# 指定路径安装使用 sudo 时保留环境变量sudo--preserve-envPG_CONFIGmakeinstall项目难点与解决方案核心难点多版本 PostgreSQL 环境下的扩展编译路径问题。当系统中同时安装多个 PostgreSQL 版本时默认的pg_config可能指向错误的版本导致扩展安装到非预期的 PostgreSQL 实例中。解决方案通过PG_CONFIG环境变量或make命令行参数显式指定目标 PostgreSQL 的pg_config路径exportPG_CONFIG/usr/pgsql-17/bin/pg_configmakesudo--preserve-envPG_CONFIGmakeinstall广度该问题不仅存在于 pgvector而是所有需要编译的 PostgreSQL 扩展如 PostGIS、pg_stat_statements 等的共性问题。深度pg_config与PGXS是 PostgreSQL 扩展构建基础设施的核心组件。理解其工作机制——pg_config提供路径信息PGXS提供构建规则——是掌握所有 PostgreSQL 扩展编译的基础。复杂度源码编译安装涉及依赖包安装LLVM、Python 开发包、Git 等、环境变量配置、权限管理等多个环节对新手有一定门槛。pgenv等工具的出现正是为了降低这一复杂度。官方文档PostgreSQL pg_config 官方文档https://www.postgresql.org/docs/current/app-pgconfig.htmlPostgreSQL PGXS 扩展构建基础设施https://www.postgresql.org/docs/current/extend-pgxs.htmlpgvector GitHub 仓库https://github.com/pgvector/pgvectorpgvector PGXN 页面https://pgxn.org/dist/vector/参考链接pgvector 安装说明Linux/macOShttps://github.com/pgvector/pgvector#installationpgenv GitHub 仓库https://github.com/theory/pgenvPostgreSQL Yum 仓库https://yum.postgresql.org/PostgreSQL APT 仓库https://apt.postgresql.org/总结本文系统介绍了 pgvector 扩展的三种安装方式pgenv一键安装适用于快速部署和开发测试源码编译安装最为灵活通用适合生产环境和指定版本需求RPM 包安装适用于企业级离线部署场景。源码编译安装的核心在于正确配置pg_config路径——pg_config是 PostgreSQL 提供的配置信息查询工具扩展的Makefile通过PGXS机制调用它来获取头文件、库文件路径等编译参数。当系统存在多个 PostgreSQL 版本或使用sudo导致环境变量丢失时需通过PG_CONFIG变量显式指定路径。无论采用哪种安装方式最后都需在目标数据库中执行CREATE EXTENSION vector来启用扩展。掌握pg_config与PGXS的工作原理是理解和解决所有 PostgreSQL 扩展编译问题的基础。

相关新闻

Agentic Graph Token Reasoning:基于图与结构化Token的智能体推理范式

Agentic Graph Token Reasoning:基于图与结构化Token的智能体推理范式

1. 从“智能体”到“图推理”:Agentic Graph Token Reasoning 是什么?最近在AI圈子里,几个词的热度居高不下:Agentic、Graph、Token、Reasoning。把它们组合在一起,就成了一个听起来有点玄乎,但内核极其硬核…

2026/8/22 18:07:09 阅读更多 →
AI可控性技术演进:从提示工程到智能体框架的工程实践

AI可控性技术演进:从提示工程到智能体框架的工程实践

从“魔法咒语”到“智能管家”:AI可控性进化之路深度解析在AI应用开发的早期,开发者们常常感到困惑:为什么同一个大模型,有时能精准完成任务,有时却答非所问、胡言乱语,甚至产生有害内容?这种“…

2026/8/22 18:07:09 阅读更多 →
从架构到仿真:DoDAF 怎么落地成能跑的 AFSIM/CMO 想定

从架构到仿真:DoDAF 怎么落地成能跑的 AFSIM/CMO 想定

这是全系列最关键的一篇。前面六篇讲的都是 DoDAF 本身——视角、视图、元模型。这一篇讲"怎么用"。贯穿案例是天眼-01:红方(我方)天基 ISR 体系防御蓝方(欧美)海上编队来袭。 很多人学完 DoDAF 的最大困惑不…

2026/8/22 18:07:09 阅读更多 →

最新新闻

GitHub新建仓库的底层逻辑与避坑指南

GitHub新建仓库的底层逻辑与避坑指南

1. 这不是“点一下就完事”的操作指南,而是你第一次建仓库时真正需要知道的事 GitHub新建仓库,听起来像打开网页、输个名字、点个按钮——但如果你刚学Git,或者正被团队要求提交第一个项目,这个动作背后藏着一连串容易踩空的逻辑…

2026/8/23 21:15:14 阅读更多 →
智能体长时记忆系统设计:从向量检索到图结构关联记忆的实践

智能体长时记忆系统设计:从向量检索到图结构关联记忆的实践

1. 项目概述:从孤立检索到关联记忆的跨越最近在折腾智能体(Agent)的长时记忆系统,发现一个挺普遍的问题:很多现有的记忆模块,本质上就是个“关键词搜索引擎”。你问它“我上周三下午提到的那个关于优化API设…

2026/8/23 21:15:14 阅读更多 →
泰语语音合成G2P引擎:基于Transformer与ONNX Runtime的工程实践

泰语语音合成G2P引擎:基于Transformer与ONNX Runtime的工程实践

1. 项目缘起:当语音助手遇上泰语,我们遇到了什么?做语音交互的朋友都知道,文本转语音(TTS)或者语音助手(Voice Agent)的流水线里,有一个环节至关重要,那就是字…

2026/8/23 21:15:14 阅读更多 →
智能体记忆系统:从向量检索到关联回忆的RippleMem架构设计

智能体记忆系统:从向量检索到关联回忆的RippleMem架构设计

1. 从“孤立检索”到“关联回忆”:智能体记忆的范式转变最近在折腾智能体(Agent)的长时记忆系统时,我遇到了一个非常典型的问题:我的智能体能记住很多事,比如用户上周说喜欢咖啡,昨天提到了要买…

2026/8/23 21:15:14 阅读更多 →
AI Agent感知安全:PIPES框架构建可审计、可信的智能体感知系统

AI Agent感知安全:PIPES框架构建可审计、可信的智能体感知系统

1. 项目概述:当AI智能体“看”世界时,我们如何确保它“看”得对?最近和几个做AI Agent(智能体)的朋友聊天,大家不约而同地提到了同一个痛点:Agent的感知模块太“脆”了。一个精心设计的Agent&am…

2026/8/23 21:15:13 阅读更多 →
高校实习管理系统开发:Spring Boot实战与架构设计

高校实习管理系统开发:Spring Boot实战与架构设计

1. 项目背景与核心价值这个实习实训管理系统是面向高校计算机专业毕业设计的典型开发案例。我在指导类似项目时发现,很多学生在开发这类系统时容易陷入"为了做而做"的困境,忽略了实际教学场景中的真实需求。这个系统本质上要解决的是高校实习管…

2026/8/23 21:14:13 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →