Windows 下编译安装 pgvector 向量搜索扩展完整实战

发布时间:2026/9/6 19:21:12

Windows 下编译安装 pgvector 向量搜索扩展完整实战
Windows 下编译安装 pgvector 向量搜索扩展完整实战【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectornmake /F Makefile.win跑完弹出PGROOT is not set——这是多数人在 Windows 上编译 pgvector 时遇到的第一个报错。紧接着Cannot open include file: postgres.h: No such file or directory和error C2196: case value 4 already used会轮番出现。这些错误看着五花八门背后其实只有三类配置问题工具链路径、PostgreSQL 开发文件、架构位宽。把它们逐一理清编译安装 pgvector 向量搜索扩展这件事实际上不到二十分钟。前置条件Windows 工具链清单在动手编译之前先把依赖件备齐。pgvector 的 Windows 构建走的是 MSVC 编译器加 nmake 的路径和 Linux 下make的构建逻辑完全不同缺任何一环都会卡住。以下组件缺一不可组件要求验证方式Visual Studio 2022 或更新版本安装时勾选使用 C 的桌面开发工作负载在 x64 Native Tools 终端中运行cl能输出 MSVC 版本号PostgreSQL 13 及以上开发版安装时勾选 Development Files确认%PGROOT%\include\server\postgres.h文件存在Git任意版本git --version正常返回版本号管理员权限安装阶段需要写入 PostgreSQL 目录以管理员身份运行命令提示符 这里有一个最容易被忽略的前提必须使用 x64 Native Tools Command Prompt for VS 2022或你实际安装的对应版本而不是普通的 CMD 或 PowerShell。这个终端在启动时会自动加载 MSVC 的编译环境变量cl、nmake、link等命令才能被正确识别和调用。用普通终端跑nmake大概率直接报nmake 不是内部或外部命令。环境搭建阶段打开 x64 Native Tools Command Prompt 后第一件事是设定PGROOT指向你的 PostgreSQL 安装根目录。pgvector 的 Makefile.win 中所有路径变量——头文件目录、库目录、安装目标——都从这个变量展开它设错了后面全错set PGROOTC:\Program Files\PostgreSQL\18版本号和具体路径根据实际安装调整。设完之后花十秒验证头文件可达dir %PGROOT%\include\server\postgres.h能列出该文件说明 PostgreSQL 开发文件完整编译所需的头文件搜索路径已经通了。这一步不通过后面的编译一定挂在 include 阶段。源码拉取建议放在%TEMP%下目的是避开用户目录下可能出现的中文路径和空格减少转义带来的意外问题cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector编译构建阶段源码就绪后构建命令只有两条严格按顺序执行。第一条完成编译和链接nmake /F Makefile.win这条命令会依次编译 src/ 目录下的全部 C 源文件包括vector.c、hnsw*.c、ivfflat*.c等约二十个文件链接生成vector.dll同时把 sql/vector.sql 复制为对应版本号 0.8.6 的升级脚本。编译日志的末尾应出现vector.dll的链接输出没有报错即为构建成功。第二条完成安装nmake /F Makefile.win install安装步骤将产物分发到 PostgreSQL 的四个位置%PGROOT%\lib\vector.dll——扩展共享库PostgreSQL 加载扩展时读取%PGROOT%\share\extension\vector.control和vector--0.8.6.sql——扩展控制文件与 SQL 脚本%PGROOT%\include\server\extension\vector\——C 头文件供其他扩展引用 pgvector 的数据结构⚠️ 如果安装阶段报Access is denied说明当前终端没有管理员权限。关闭终端以管理员身份重新打开 x64 Native Tools Command Prompt重新set PGROOT后跑nmake /F Makefile.win install即可。部署验证阶段重启 PostgreSQL 服务或断开后重新连接在目标数据库中执行CREATE EXTENSION vector;这条语句成功执行即表示扩展已被 PostgreSQL 加载并注册。接下来建一张最小测试表跑一次 L2 距离检索来确认向量类型和距离算子都正常工作CREATE TABLE t (id serial PRIMARY KEY, e vector(3)); INSERT INTO t (e) VALUES ([1,2,3]), ([4,5,6]), ([7,8,9]); SELECT id FROM t ORDER BY e - [3,2,1] LIMIT 1;预期返回id 1。如果这条查询正常出结果向量存储、L2 距离计算、表扫描精确检索的整条链路已经打通。快速自检安装是否成功判断 pgvector 是否装好核心看三件事不需要逐条 SQL 验证扩展可创建CREATE EXTENSION vector;无报错。向量类型可用建表时vector(n)类型能正常声明插入和查询不报错。距离算子可执行-L2 距离、#内积、余弦距离至少跑通一个。这三步都过了扩展的安装和基础功能就是正常的。如果需要更全面的回归验证项目自带了一套覆盖 HNSW、IVFFlat、各种向量类型vector、halfvec、bit、sparsevec的端到端测试用例位于 test/sql/ 和 test/t/ 目录下可以用nmake /F Makefile.win installcheck触发。排查 pgvector 编译失败的四个核心问题实际编译中碰到的报错绝大多数集中在以下四类报错信息根因修复PGROOT is not set环境变量未在当前终端会话中设置在当前 x64 Native Tools 终端中重新执行set PGROOT...后再编译Cannot open include file: postgres.hPostgreSQL 未安装 Development Files或PGROOT路径指向了错误位置重装 PostgreSQL 时勾选开发组件用dir %PGROOT%\include\server\postgres.h核实路径error C2196: case value 4 already used使用了 32 位命令提示符导致架构不匹配改用x64Native Tools 终端先nmake /F Makefile.win clean清除旧产物再重新编译unresolved external symbol float_to_shortest_decimal_bufnPostgreSQL 17.0 至 17.2 的已知缺陷升级到 PostgreSQL 17.3 及以上版本后重新编译 补充一个链接阶段的常见问题如果出现LNK2019未解析符号错误大概率是%PGROOT%\lib\postgres.lib缺失。Makefile.win 中LIBDIR指向的目录必须真实包含该文件路径中有空格时 Makefile 已做了引号处理一般不需要手动改。编译优化与并行构建pgvector 的 Makefile.win 默认已启用/O2 /fp:fast优化标志和 MSVC 自动向量化。如果你的 CPU 支持 AVX2 指令集可以在文件顶部的OPTFLAGS行追加指令集参数来提升向量运算性能OPTFLAGS /arch:AVX2修改后重新执行nmake /F Makefile.win即可生效。如果 CPU 较老不支持 AVX2保持默认值或使用/arch:SSE2替代。 不建议盲目上最高指令集等级——/arch:AVX512之类的参数在部分 CPU 上会导致运行时Illegal instruction崩溃。关于并行编译MSVC 的nmake不支持 GNU make 的-j并行参数。pgvector 本身只有约二十个源文件单线程编译通常在两分钟内完成并行化的收益非常有限不必额外折腾。这套方案适合什么场景pgvector 把向量搜索直接嵌入 PostgreSQL 内部向量数据和业务数据共享同一套事务、JOIN、ACID 机制。这个架构特点决定了它的适用边界选型时值得想清楚。适合的场景向量规模在十万到千万级且向量查询需要频繁和业务表 JOIN 取其他字段团队已有 PostgreSQL 技术栈不想再引入一套向量数据库的部署和运维负担对事务一致性有要求比如向量插入、更新必须和业务数据在同一事务中提交或回滚不太适合的场景向量规模达到上亿、QPS 极高的纯检索场景专用向量数据库在吞吐和召回率调优上通常更有优势对向量索引构建速度有极致要求的场景pgvector 的 HNSW 索引构建时间会随数据量近似线性增长选型的核心判断标准如果你的向量查询大部分是从已有业务数据中找相似项而不是独立的高吞吐向量检索服务pgvector 是更简洁、运维成本更低的方案。延伸方向pgvector 项目迭代活跃CHANGELOG.md 记录了从 0.1.0 到 0.8.6 的完整版本演进。HNSW 与 IVFFlat 两种索引的取舍、halfvec和bit类型的量化压缩、索引参数调优等进阶内容在 README.md 的 Scaling 和 Quantization 章节中有详细说明。社区讨论和 issue 跟踪可以在 GitCode 仓库页面参与。关键要点回顾x64 Native Tools 终端是编译前提PGROOT 必须指向含开发文件的安装路径两条 nmake 命令完成构建与安装三种距离算子验证扩展功能架构位宽不匹配是最隐蔽的编译错误【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格

2026/9/6 19:21:12

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格 【免费下载链接】teable ✨ AI Spreadsheet for Business 项目地址: https://gitcode.com/GitHub_Trending/te/teable Teable 是一个开源的数据协作平台,界面像电子表格,…

zx 配置指南:深入解析 `$.shell`、`$.kill`、`$.defaults` 等全部配置项

zx 配置指南:深入解析 `$.shell`、`$.kill`、`$.defaults` 等全部配置项

2026/9/6 19:11:12

zx 配置指南:深入解析 $.shell、$.kill、$.defaults 等全部配置项 【免费下载链接】zx A tool for writing better scripts 项目地址: https://gitcode.com/GitHub_Trending/zx/zx zx 的几乎所有行为都通过全局 $ 对象上的属性进行配置:从指定 sh…

Windows Terminal 编码风格深析:Modern C++、WIL 与 C++ Core Guidelines 在 OpenConsole 中的落地

Windows Terminal 编码风格深析:Modern C++、WIL 与 C++ Core Guidelines 在 OpenConsole 中的落地

2026/9/6 19:11:12

Windows Terminal 编码风格深析:Modern C、WIL 与 C Core Guidelines 在 OpenConsole 中的落地 【免费下载链接】terminal The new Windows Terminal and the original Windows console host, all in the same place! 项目地址: https://gitcode.com/GitHub_Trend…

Buzz 离线语音转文字完整指南:从一段会议录音到批量自动化

Buzz 离线语音转文字完整指南:从一段会议录音到批量自动化

2026/9/6 20:31:15

Buzz 离线语音转文字完整指南:从一段会议录音到批量自动化 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz Buzz 是…

Lean量化交易引擎快速指南:从零到第一个策略回测的完整路径

Lean量化交易引擎快速指南:从零到第一个策略回测的完整路径

2026/9/6 20:31:15

Lean量化交易引擎快速指南:从零到第一个策略回测的完整路径 【免费下载链接】Lean Lean Algorithmic Trading Engine by QuantConnect (Python, C#) 项目地址: https://gitcode.com/GitHub_Trending/le/Lean 回测曲线很漂亮,实盘一上就亏——问题…

Webpack 对 CommonJS 模块的 Tree Shaking:机制、配置与产物深度解析

Webpack 对 CommonJS 模块的 Tree Shaking:机制、配置与产物深度解析

2026/9/6 20:31:15

Webpack 对 CommonJS 模块的 Tree Shaking:机制、配置与产物深度解析 【免费下载链接】webpack A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Th…

Wand-Enhancer 完整指南:在本地解锁 WeMod 增强功能与远程面板

Wand-Enhancer 完整指南:在本地解锁 WeMod 增强功能与远程面板

2026/9/6 20:31:15

Wand-Enhancer 完整指南:在本地解锁 WeMod 增强功能与远程面板 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer WeMod(Wand&…

CodexBar 插件安装 3 步上手:用本地 JS/TS 文件扩展用量统计

CodexBar 插件安装 3 步上手:用本地 JS/TS 文件扩展用量统计

2026/9/6 20:31:15

CodexBar 插件安装 3 步上手:用本地 JS/TS 文件扩展用量统计 【免费下载链接】CodexBar Show usage stats for OpenAI Codex and Claude Code, without having to login. 项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar CodexBar 是一款无需登录…

ColossalChat on Ray:在 Ray 集群上分布式运行 ColossalChat PPO 训练的完整指南

ColossalChat on Ray:在 Ray 集群上分布式运行 ColossalChat PPO 训练的完整指南

2026/9/6 20:21:15

ColossalChat on Ray:在 Ray 集群上分布式运行 ColossalChat PPO 训练的完整指南 【免费下载链接】ColossalAI Making large AI models cheaper, faster and more accessible 项目地址: https://gitcode.com/GitHub_Trending/co/ColossalAI 本文围绕仓库中 C…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/5 23:14:13

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…