
如何在 Windows 上编译安装 pgvectorPostgreSQL 向量搜索的 PGROOT 到 vector.dll 实操清单【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 是 PostgreSQL 向量搜索的常用扩展它给数据库加上向量类型、距离函数和近似最近邻索引。在 Windows 上装好之后你可以直接对任意表做相似性查询CREATE EXTENSION vector; CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([4,5,6]), ([7,8,9]); SELECT id FROM items ORDER BY embedding - [3,1,2] LIMIT 1;最后一条查询会按 L2 距离返回最接近的目标向量。装完就能跑通上面这四行就算完成。编译前需要备好的三样东西装什么装哪个组件装完怎么确认Visual Studio 2022工作负载勾选使用 C 的桌面开发组件里带上 C CMake 工具和 Windows SDK终端输入cl能打印出 C/C 编译器版本信息PostgreSQL 13 及以上安装时勾选 Development Filesdir %PGROOT%\include\server\postgres.h能列出该头文件PGROOT 环境变量指向 PostgreSQL 安装根目录echo %PGROOT%回显的路径下同时存在include、lib、share三个目录编译器、头文件、环境变量三者齐了后面两步才不会出现找不到东西的报错。阶段一最快拿到编译器环境不要直接在普通 cmd 里敲命令。从开始菜单启动 x64 Native Tools Command Prompt for VS 2022并右键选择以管理员身份运行。管理员身份是留给安装阶段写C:\Program Files用的先开好免得中途重来。cl预期输出是微软 C/C 优化编译器的版本横幅Microsoft (R) C/C Optimizing Compiler及版本号最后提示输入源文件名。通过标准能打印横幅即通过。回显 cl.exe 不是内部或外部命令 说明你开的不是这个终端换个窗口重来。阶段二如何确认 PGROOT 指向正确Makefile.win 里有一段检查PGROOT 未设置会直接报!error PGROOT is not set它负责定位include、lib、share三个目录。所以把它指到 PostgreSQL 的安装根目录且路径带空格时记得用引号包住。set PGROOTC:\Program Files\PostgreSQL\16 echo %PGROOT% dir %PGROOT%\include\server\postgres.h预期输出第一行回显你设置的完整路径第二行列出postgres.h的文件名和大小。通过标准路径回显无误、postgres.h存在。如果dir报找不到文件要么开发组件没装要么版本号写错了回到准备清单重新核对。阶段三编译、安装与体检克隆源码并编译cd %TEMP% git clone https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector nmake /F Makefile.win预期输出src\下 20 个 .c 文件依次编译成 .objbitutils、vector、hnsw 系列、ivf 系列等最后一步链接生成vector.dll。通过标准当前目录出现vector.dll全程没有 LNK 开头的错误。安装到 PostgreSQLnmake /F Makefile.win install这一步会把 dll 拷进lib把vector.control和各版本升级脚本拷进share\extension。dir %PGROOT%\lib\vector.dll dir %PGROOT%\share\extension\vector.control预期输出两条命令各自列出一个文件。⚠️ 若回显 Access denied先执行net stop postgresql-x64-16停掉服务再装装完net start启动即可。连库体检用 psql 连上数据库跑开头那四行 SQL。查询返回id 1即说明类型、函数、扩展都工作正常。排错速查表编译安装报错的一行修复现象根因一行修复cl.exe 不是内部或外部命令未在 VS 工具终端里操作从开始菜单重开 x64 Native Tools Command Prompt for VS 2022PGROOT is not set环境变量没设或拼错set PGROOTC:\Program Files\PostgreSQL\16无法打开包括文件 postgres.h没装 Development Files 或 PGROOT 指错重装 PostgreSQL 并勾选 Development Files再dir验证头文件链接报 LNK2019 未解析符号%PGROOT%\lib\postgres.lib不存在确认 PGROOT 下lib目录里有postgres.lib路径错了就改 PGROOT安装时 Access deniedPostgreSQL 服务占用了目标文件net stop postgresql-x64-16后重跑nmake /F Makefile.win installCREATE EXTENSION vector报打不开共享库装完没重启服务或 dll 没进 lib 目录重启 PostgreSQL 服务并dir %PGROOT%\lib\vector.dll复核 排错时先跑echo %PGROOT%和两条dir命令六个条目里的一半问题在这一步就能定位。能力速览装好之后能做什么向量类型除标准单精度vector外还提供半精度halfvec、二进制bit和稀疏sparsevec各自对应不同存储与计算场景。距离度量L2-、内积#、余弦、L1二进制向量还有汉明~与 Jaccard%。索引算法不加索引时是精确最近邻加上 IVFFlat 或 HNSW 后转为近似搜索用少量召回换查询速度。接下来可以做的两件事一是给items表建一个USING hnsw (embedding vector_l2_ops)索引对比加索引前后LIMIT 1查询的耗时二是跑一遍回归测试集命令是nmake /F Makefile.win installcheck用例在 test/sql/ 目录下。pgvector 的价值在于向量查询与 SQL、事务、JOIN 共用一套基础设施装好后无需再维护第二套向量服务。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考