ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows 下 pgvector 快速安装完整指南:免编译与源码构建两条路都讲透

Windows 下 pgvector 快速安装完整指南:免编译与源码构建两条路都讲透 Windows 下 pgvector 快速安装完整指南免编译与源码构建两条路都讲透【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector你的业务要接向量检索又不想多养一套中间件pgvector 是 PostgreSQL 的开源向量相似度搜索扩展让向量数据和业务数据躺在同一张表里用熟悉的 SQL 就能做近邻查询。本文带你用免编译或源码构建两种途径在 Windows 上完成 PostgreSQL 向量扩展的安装并跑通第一次近邻检索。 从一个具体痛点说起想象一下产品要做语义搜索团队评审时有两个选项——引入一套独立的向量数据库或者给现有 PostgreSQL 加个扩展。前者意味着多一个集群、多一套备份恢复流程、多一种连接方式而 vector.control 描述的 pgvector 方案只需要在现有库里执行一句CREATE EXTENSION vector;向量列和关系型列就能写在同一个事务里。这就是它的定位向量能力长在你的数据库里而不是数据库旁边。支持稠密向量、半精度向量、二进制向量和稀疏向量覆盖 L2、内积、余弦、L1 等距离度量对应 src/ 目录下的 vector.c、halfvec.c、bitvec.c、sparsevec.c 等实现。 开工前的环境清单动手前对照下面这张表缺什么补什么项目要求说明操作系统Windows 10 / 1164 位版本PostgreSQL16 及以上走源码构建时需设PGROOT指向安装目录编译器Visual Studio 2019/2022勾选 C 工作负载仅源码构建需要要选x64 Native Tools Command Prompt版本管理Git for Windows用于拉取 pgvector 源码pgvector 源码最新稳定版当前版本号为 0.8.6见 Makefile.win 第 2 行️ 先花 10 秒选一条路你的情况推荐路线大致耗时能拿到对应版本的 Windows 预编译产物只想尽快用起来免编译通道下 DLL拷文件5 分钟想要最新特性、需要自定义编译选项或没有现成预编译包源码构建通道nmake 编译15 分钟两条路殊途同归最终都是让vector.dll、vector.control和升级脚本各就各位。下面分开讲。 免编译通道文件放对位置就成功前提是你已经拿到了与本机 PostgreSQL 主版本匹配的 pgvector 预编译包。把vector.dll复制到 PostgreSQL 安装目录的lib子目录例如C:\Program Files\PostgreSQL\16\lib\。把vector.control和所有vector--*.sql脚本复制到share\extension\目录。升级脚本的作用见仓库里的 sql/ 目录——每个vector--旧版--新版.sql负责一次版本迁移vector--0.8.6.sql则对应全新安装。重启 PostgreSQL 服务或至少确认服务账号有读取这些文件的权限。落位清单核对文件目标位置vector.dll%ProgramFiles%\PostgreSQL\版本\lib\vector.control%ProgramFiles%\PostgreSQL\版本\share\extension\vector--0.1.0.sql及各升级脚本同上share\extension\如果这一步卡住多半是文件版本和你本地的 PostgreSQL 主版本不匹配——加载扩展时如果报version 0.8.6 not found之类的错就是脚本没拷全。 源码构建通道五条命令走完全程用 Visual Studio 附带的x64 Native Tools Command Prompt for VS右键选择以管理员身份运行依次执行set PGROOTC:\Program Files\PostgreSQL\18声明你的 PostgreSQL 安装根目录Makefile.win 在没设置PGROOT时会直接!error拒绝编译。cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector拉取指定 tag 的源码到临时目录避免污染其他工作区。nmake /F Makefile.win编译vector.dll并生成带版本号的安装脚本。注意这里显式指定Makefile.win——误用 Linux 用的Makefile会立刻撞上process_begin: CreateProcess(NULL, uname -s, ...) failed这类错误因为普通 nmake 不认识其中的 POSIX 命令。nmake /F Makefile.win install这一步对应 Makefile.win 第 61~66 行的 install 目标把 DLL 拷进lib\把.control和 SQL 脚本拷进share\extension\同时把vector.h等头文件放到服务器扩展头目录。编译慢或想加优化参数时可以看 Makefile.win 中PG_CFLAGS的注释它已经内置了/O2 /fp:fast的自动向量化配置。 报错定位速查症状根因修复process_begin: CreateProcess(NULL, uname -s, ...) failed执行的是 Linux 版 Makefile而非 Makefile.win命令里显式写nmake /F Makefile.win!error PGROOT is not set未声明 PostgreSQL 根目录先执行set PGROOTC:\Program Files\PostgreSQL\版本No such file or directory/No rule to make target在普通 cmd 或 PowerShell 中执行缺少 MSVC 环境变量改用 x64 Native Tools Command Prompt for VS 重新执行编译通过但CREATE EXTENSION找不到版本DLL 或 SQL 脚本没放进正确目录按落位清单逐项核对确认服务账号可读vector.dll加载失败pgvector 与 PostgreSQL 主版本不匹配重新用与本机 PG 相同主版本重新编译或更换匹配的预编译包✅ 冒烟验证三条 SQL 定生死打开 psql连上任意业务库CREATE EXTENSION vector; SELECT [1,2,3]::vector; SELECT * FROM pg_extension WHERE extname vector;判定标准一句话三条全部无报错执行、第二条返回[1,2,3]就说明扩展链路DLL → control → SQL 脚本全部就位。 首批查询体验建表、插数、找近邻接下来用三段最小 SQL 感受下向量距离算子。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 * FROM items ORDER BY embedding - [3,1,2] LIMIT 5;-是 L2 距离算子距离越小排得越前——[1,2,3]会排在第一位。换算子就能换度量#内积、余弦、L1对应 src/vector.c 中注册的距离函数。 上生产前的备忘版本兼容pgvector 的 DLL 与 PostgreSQL 主版本绑定PG 升级后要重新编译或更换匹配产物扩展自身的版本升级由share\extension\下的升级脚本链驱动sql/ 目录从 0.1.0 一直排到 0.8.6。索引选型数据量大时别裸扫建hnsw或ivfflat索引。HNSW 召回稳定、写入代价略高实现见 src/hnsw.cIVFFlat 建索引快、适合批量入库场景实现见 src/ivfflat.c可按查询延迟目标先小数据压测再定。备份扩展随数据库一起被 pg_dump/pg_basebackup 覆盖无需单独处理但记得把vector(n)列的维度变更纳入变更流程因为维度变化不兼容旧数据。 接下来可以摸什么距离函数扩展把test/sql/下的用例当教材跑通 test/t/ 中的回归脚本039_hnsw_cost.pl、040_ivfflat_cost.pl等体会索引代价估算逻辑。稀疏向量与半精度用sparsevec、halfvec类型重做一遍近邻查询对比存储占用与召回差异。过滤召回调优参考 test/t/017_hnsw_filtering.pl 的写法验证WHERE条件叠加下 HNSW 的召回表现。迭代扫描了解ivfflat.iterative_scan/hnsw.iterative_scanGUC对应 test/t/041_ivfflat_iterative_scan.pl 的验证用例在多跳召回场景下多扫几批候选。挑其中一项在你的测试库上建一张 10 万行的向量表跑通它——这比读十篇博客更能确认你的环境真的准备好了。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表