如何在 Windows 上快速源码编译安装 pgvector 向量搜索扩展:完整指南
2026/9/5 15:19:11 网站建设 项目流程

如何在 Windows 上快速源码编译安装 pgvector 向量搜索扩展:完整指南

【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector

这篇指南带你走完 pgvector 在 Windows 上源码编译、安装进 PostgreSQL 并启用向量相似性搜索的完整流程:先核对版本与工具链,再一次性跑通 nmake 构建,最后用几行 SQL 完成验证、调优与排错。环境核对无误的前提下,整个过程可以一次做对。

动手前核对环境:三处最容易翻车的地方

Windows 上的构建失败,绝大多数能归因到下面三个位置,建议动编译器之前先过一遍。

对齐 PostgreSQL 版本

pgvector 0.8.1 支持 PostgreSQL 13 及以上版本,版本越高越稳妥。如果你机器上装过多个版本,先选定一个并记住它的安装目录——下一步的 PGROOT 就指向这里,选错版本是后续一切报错的源头之一。

确认 Visual Studio 的 C++ 工具链完整

编译依赖 Microsoft Visual Studio 2019 或更高版本中的桌面 C++ 生成工具。装完后在开始菜单找得到 “x64 Native Tools Command Prompt for VS” 才算齐活,找不到就说明 C++ 组件没装全。

预先认识三种典型失败现象

  • make / gmake 不被识别:Linux 与 macOS 习惯里的makemake install在 Windows 环境里跑不起来,本项目的 Windows 构建入口是nmake /F Makefile.win
  • 提示缺少 pgxs.mk:它属于 PostgreSQL 的构建系统,找不到通常意味着 PGROOT 没设置或没指对安装目录。
  • 复制文件时拒绝访问:安装环节要写入 PostgreSQL 的 lib 与 share 目录,非管理员的终端会被挡下来。

编译流程:一次性跑通的顺序

以管理员身份打开 x64 Native Tools Command Prompt

右键以管理员身份运行 “x64 Native Tools Command Prompt for VS”。这里要的不是普通 PowerShell 或 cmd,而是这个预配置好的原生编译环境。判断标准:终端标题栏带 “x64 Native Tools” 字样,且窗口是以管理员身份打开的。

设置 PGROOT 指向 PostgreSQL 安装目录

set "PGROOT=C:\Program Files\PostgreSQL\18"

把版本号换成你实际安装的版本。这个变量是 Makefile.win 的硬性要求——不设置时构建脚本会直接报PGROOT is not set。设置后可以在同一窗口里执行echo %PGROOT%回显确认,输出的路径应真实存在。

克隆源码并进入项目目录

cd %TEMP% git clone --branch v0.8.1 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector

固定在 v0.8.1 标签上拉取,保证代码与本指南描述的行为一致。

用 nmake 编译并安装

nmake /F Makefile.win nmake /F Makefile.win install

判断标准:第一条命令结束后,目录下应出现vector.dll及一批.obj文件;第二条命令结束后,%PGROOT%\lib下多了vector.dll%PGROOT%\share\extension下多了 vector 的控制文件与 SQL 脚本。任一步失败,对照文末的排错速查表处理。

构建之后:验证、调优与排错速查

用最小 SQL 验证扩展可用

以数据库超级用户身份进入 psql,依次执行:

CREATE EXTENSION vector; SELECT NULL::vector; CREATE TABLE test_items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO test_items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'); SELECT * FROM test_items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
  • 第一条必须返回CREATE EXTENSION且无报错,报"找不到扩展"则回到安装步骤检查文件是否落盘。
  • 类型测试应返回一个 NULL 的 vector 值而不是类型错误。
  • <->算子是 L2 距离,结果应是[1,2,3]排在[4,5,6]前面——顺序正确即代表扩展工作正常。
  • 该扩展需要在每个想使用它的数据库里单独创建一次。

内存参数与 HNSW 索引

数据量上来后,配合调整 PostgreSQL 内存参数:先用SHOW shared_buffers;SHOW work_mem;查看现状,再用SET maintenance_work_mem = '2GB';之类的语句加速索引构建(具体数值以机器实际内存为准)。

查询侧推荐 HNSW 索引搭配vector_l2_ops算子类:

CREATE INDEX ON test_items USING hnsw (embedding vector_l2_ops);

其余算子类与 IVFFLAT 的取舍,以 README.md 的说明和官方文档为准。

排错速查表

现象原因与处理
PGROOT is not set漏了set "PGROOT=..."一步,补上后重新编译
Cannot open include file: 'postgres.h'PGROOT 未设置或指错目录,修正后重编
error C2196: case value '4' already used没用 x64 Native Tools 终端;换终端后执行nmake /F Makefile.win clean再重新编译
Access is denied非管理员权限运行,换管理员终端重跑安装命令
make 命令不识别Windows 上请使用nmake /F Makefile.win,而不是make

以上判断依据来自仓库 README 的 Windows 安装说明一节,可自行对照 README.md 核对。

验证通过后就可以接入真实数据了:先灌入一小批向量做近邻查询,确认索引被命中且耗时符合预期,再逐步放量。下一步建议按 README.md 中 Getting Started 之后的索引与检索章节继续深入。

【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询