pgvector Windows部署:源码编译装好PostgreSQL向量扩展,20分钟跑通HNSW相似查询
2026/9/6 17:35:52 网站建设 项目流程

pgvector Windows部署:源码编译装好PostgreSQL向量扩展,20分钟跑通HNSW相似查询

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

pgvector 是 PostgreSQL 的向量搜索扩展,装好后 embedding 直接存在普通表里,不用另起一套向量库。本文在 Windows 10/11 上完成 pgvector 安装与编译,装好扩展、建出 HNSW 索引,跑通第一条相似性查询。

先看装好之后的样子

装好之后的样子很具体:一张普通表存放 embedding,配一个 HNSW 索引,相似检索就是一条 SQL。

CREATE TABLE docs ( id int, title text, embedding vector(384) ); CREATE INDEX ON docs USING hnsw (embedding); SELECT title FROM docs ORDER BY embedding <-> '[0.01, 0.02, 0.03, ...]'::vector LIMIT 10;

最后这条语句按距离排序取前 10 行,返回的就是最相似的结果,全程无需维护独立的向量数据库,查询直接写在业务 SQL 里。

开工前四项核对

四样东西占齐再动手,缺任何一项,后面的编译环节都会卡住:

组件版本要求它在这套流程里的作用
PostgreSQL14+(推荐 16/18)编译阶段要依赖它的头文件和库文件
Visual Studio2019+提供编译器,安装时务必勾选"C++ 桌面开发"工作负载
Windows SDK10.0.19041+随 VS 工具链一起安装,提供系统头文件,漏装会编译失败
Git任意较新版本拉取 pgvector 源码

从克隆源码到编译完成

拉取 v0.8.1 分支源码

源码放在临时目录即可,装完之后不用再管它:

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

设置 PGROOT 与 PATH 环境变量

把 PGROOT 指向你的 PostgreSQL 安装目录。Makefile.win 靠这个变量定位头文件、库文件和安装目标,没设置的话 nmake 会直接报错。同一会话里顺手把 bin 目录也加进 PATH:

set PGROOT=C:\Program Files\PostgreSQL\16 set PATH=%PGROOT%\bin;%PATH%

在 x64 Native Tools 命令行执行 nmake 编译

终端换成 VS 的"x64 Native Tools Command Prompt",用别的 shell 会缺 SDK 依赖。然后跑两条命令,一条编译、一条安装:

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

第二条命令负责把 vector.dll 和 SQL 文件拷贝进 PGROOT 的对应目录。编译本身不慢,顺利的话端到端大约 20 分钟。

两句话验证,一轮回归

连上数据库,依次执行两句:

CREATE EXTENSION vector; SELECT vector_version();

第二条能返回版本号,说明 pgvector 安装已经生效。✅

想跑完整回归的话,命令行再补一行 pgvector installcheck,它会把 test/sql 下的全部用例过一遍,类型转换、索引构建、距离函数都有覆盖:

nmake /F Makefile.win installcheck

编译报错时按这个顺序查

⚠️ 常见的 pgvector 编译报错基本集中在下面三种情况,从上往下排查:

三类高频报错对照

现象原因处理办法
找不到crtdefs.h终端环境不对,或 VS 缺少 SDK 组件换到 VS 的 x64 Native 命令行;仍不行就重装"C++ 生成工具"
PGROOT is not set环境变量没设置,或终端重开后丢失在当前会话重新执行set PGROOT=...
C2196case value already used编译没有在 VS 原生环境里进行切换到正确的命令行后执行nmake /F Makefile.win clean再重新编译

装完能干什么,怎么让它更快

向量类型与维度上限

类型维度上限说明
vector约 2000
halfvec约 4000
bit64000
sparsevec面向高维稀疏数据

距离算子

算子距离类型
<->L2
<#>内积(取负)
<=>余弦
<+>L1

四个算子都能建索引加速查询。

索引选型:HNSW 还是 IVFFlat

索引特点怎么选
HNSW图结构,查询快多数场景的默认选择
IVFFlat构建快更看重建索引速度时

调优清单

  • 数据灌完再建索引
  • 调大maintenance_work_mem
  • 大表建索引时开启并行 worker
  • HNSW 调ef_search,IVFFlat 调probes:调高换召回,调低换速度
  • 召回不达标先查索引选型,小表走顺序扫描往往更稳

想深入看编译规则可以打开 Makefile.win,回归测试用例都在 test/sql/ 目录下。

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

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

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

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

立即咨询