10分钟给PostgreSQL装好pgvector:Windows下向量相似度搜索部署指南
2026/9/6 17:13:13 网站建设 项目流程

10分钟给PostgreSQL装好pgvector:Windows下向量相似度搜索部署指南

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

装完之后,你的PostgreSQL就能直接用SQL跑向量相似度查询:存储单精度、半精度、二进制和稀疏向量,支持精确与近似最近邻搜索,L2、余弦、内积等距离度量开箱即用。这就是Postgres的开源向量搜索扩展pgvector。整个过程在Windows上大约10分钟,前提是你已经装好PostgreSQL 16+,走编译路线的话还需要一套Visual Studio构建工具。

🧭 Windows下安装pgvector:预编译还是源码编译?

你的情况推荐路线说明
只想用起来,不想碰编译器预编译路线把DLL和control文件放进PostgreSQL对应目录
有VS 2019+、版本需严格对齐、或想改源码源码编译路线两条nmake命令完成构建与安装

第一次装建议先走预编译路线,它像开箱即用的成品,变量最少。只有当扩展版本和数据库版本对不上、需要自己重新构建时,才值得花时间走编译路线。

准备工作:PostgreSQL 16+与编译工具链

  • PostgreSQL 16.1+,推荐EDB官方安装包,默认路径C:\Program Files\PostgreSQL\16
  • 源码编译路线额外要求Visual Studio 2019+,并安装"使用C++的桌面开发"工作负载
  • pgvector源码(克隆命令见下方安装步骤)

编译路线唯一的配置项是PGROOT,指向PostgreSQL安装目录,构建脚本会基于它自动找到include、lib、share目录。

安装pgvector:预编译路线

把官方发布页下载的vector.dll放入PostgreSQL的lib目录(如C:\Program Files\PostgreSQL\16\lib),再把vector.control和对应版本的.sql文件放入share\extension目录。文件就位后不需要改任何配置。

安装pgvector:nmake源码编译

打开"x64 Native Tools Command Prompt for VS",依次执行:

set "PGROOT=C:\Program Files\PostgreSQL\16" cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector nmake /F Makefile.win nmake /F Makefile.win install

构建逻辑全部写在Makefile.win中,它会编译src/下的C源码生成vector.dll,并安装到PGROOT指向的目录。

验证:向量扩展验证SQL

用psql连上目标数据库执行:

CREATE EXTENSION vector; SELECT NULL::vector;

第二条语句正常返回空向量值即安装完成。注意CREATE EXTENSION需要在每个要使用它的数据库里各执行一次。

⚠️ 踩坑速查:现象/原因/处理

最典型的报错长这样,基本都是在Windows上误用了Unix风格的make:

process_begin: CreateProcess(NULL, uname -s, ...) failed. Makefile:16: pipe: No error
现象原因处理
出现上述process_begin报错命令环境不认识uname等Unix命令换到VS原生工具命令提示符,执行nmake /F Makefile.win
编译通过但CREATE EXTENSION提示找不到扩展pgvector与PostgreSQL大版本不匹配核对扩展构建版本与数据库版本,重新安装匹配版本
lib目录下的DLL无法覆盖PostgreSQL服务仍在运行并占用文件先停止PostgreSQL服务,替换文件后再启动
写入扩展目录提示拒绝访问命令提示符未以管理员运行,或服务账户权限不足右键"以管理员身份运行"命令提示符,确认服务账户对lib与share目录可写

🔍 延伸使用:建向量表与相似性查询

扩展就位后的最小两个动作:

  1. 建一张带向量列的表:CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(4));
  2. 用距离操作符找最近邻:ORDER BY embedding <-> $1(L2距离)或ORDER BY embedding <=> $1(余弦距离)。

数据量大以后,在向量列上建HNSW或IVFFlat索引即可保持查询延迟稳定,两者都是pgvector内置的访问方法。

到这里,向量搜索和业务数据共用同一条数据库连接,pgvector只是多了一条SQL的事。

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

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

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

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

立即咨询