Windows 下部署 pgvector 完整指南:预编译 DLL 与源码编译两种路径 Windows 下部署 pgvector 完整指南预编译 DLL 与源码编译两种路径【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector本文面向在 Windows 上运行 PostgreSQL 的开发者给出 pgvector 从环境准备到安装验证的全流程操作并附带一份按现象→原因→处理组织的排错速查表覆盖预编译版安装与源码编译两条路径。pgvector 是 PostgreSQL 的开源向量扩展装好后即可在同一数据库中完成向量存储与近似最近邻检索。前置条件与版本对照动手前先确认三样东西PostgreSQL 本体、构建工具链仅编译路线需要、pgvector 的发布产物。项目版本 / 要求说明pgvector0.8.6与仓库 vector.control 中default_version一致PostgreSQL16.1 及以上建议使用 EDB 官方安装包扩展最低支持到 13但 17.0~17.2 存在链接问题需 17.3Visual Studio2019 及以上需安装 C 桌面开发组件且必须使用 x64 版本的命令提示符安装目录以默认路径C:\Program Files\PostgreSQL\16为例下文步骤中的路径请按你的实际版本目录替换。pgvector 预编译 DLL 安装步骤如果机器上没有 Visual Studio 工具链优先选择这条路线只需把三个产物放到 PostgreSQL 安装目录下不经过任何编译环节。从 pgvector 的发布页面获取与你的 PostgreSQL 主版本匹配的产物共三类文件vector.dll、vector.control、sql\vector--0.8.6.sql。将vector.dll复制到C:\Program Files\PostgreSQL\16\lib。将vector.control与sql\vector--0.8.6.sql复制到C:\Program Files\PostgreSQL\16\share\extension。若 PostgreSQL 服务正在运行先在服务中停止postgresql-x64-16放置完文件后再启动。停服务是为了避免写入lib、share目录时被占用导致文件替换不完整。放置位置可直接对照编译路线的install目标Makefile.win 中install就是把 DLL 拷入$(PGROOT)\lib、把.control和sql\vector--*.sql拷入$(PGROOT)\share\extension两条路线的落点完全相同。pgvector 源码编译Visual Studio 命令行没有合适的预编译包、或需要自定义编译选项时走这条路线。在开始菜单启动x64 Native Tools Command Prompt for VS 2019并以管理员身份运行。必须选 x64 版本用 32 位工具链会在编译阶段直接报错且无法产出可被 64 位 PostgreSQL 加载的 DLL。将源码包解压到任意无中文、无空格的目录例如C:\build\pgvector然后依次执行set PGROOTC:\Program Files\PostgreSQL\16 cd /d C:\build\pgvector nmake /f Makefile.win nmake /f Makefile.win install几个关键点必须使用Makefile.win而不是根目录下的Makefile。后者面向 Unix 的make在 Windows 上执行会去调用uname这类命令从而产生process_begin: CreateProcess(NULL, uname -s, ...) failed的报错。PGROOT必须提前设置Makefile.win 开头就有!error PGROOT is not set的检查且后续所有头文件、库文件路径都从它推导。第二条nmake命令会自动完成 DLL 与 SQL 文件的安装无需再手动复制。安装后的 SQL 验证打开psql或数据库管理工具在目标库中执行CREATE EXTENSION vector; SELECT NULL::vector;预期结果第一条语句返回CREATE EXTENSION且无报错第二条返回空集一列 NULL 值不抛未找到文件或无法加载共享库之类的错误。若CREATE EXTENSION报找不到vector.control说明文件没有放进share\extension目录。再跑一段最小功能测试确认向量运算可用CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([4,5,6]); SELECT * FROM items ORDER BY embedding - [3,1,2] LIMIT 5;按 L2 距离排序后[1,2,3]应排在[4,5,6]之前。排错速查表现象原因处理process_begin: CreateProcess(NULL, uname -s, ...) failed. Makefile:16: pipe: No error用了 Unix 版MakefileWindows 执行不了其中的命令改跑nmake /f Makefile.winPGROOT is not set或Cannot open include file: postgres.hPGROOT未设置或指向了错误目录执行set PGROOTC:\Program Files\PostgreSQL\16后重新编译error C2196: case value 4 already used使用了非 x64 的开发者命令提示符改用x64 Native Tools Command Prompt先执行nmake /f Makefile.win clean清理再重新编译unresolved external symbol float_to_shortest_decimal_bufnPostgreSQL 17.0~17.2 的已知问题升级 PostgreSQL 到 17.3 及以上Access is denied当前账户对 PostgreSQL 安装目录没有写权限以管理员身份重跑编译安装命令CREATE EXTENSION报文件不存在pgvector 版本与 PostgreSQL 主版本不匹配或文件放错目录确认下载的是对应 PG 主版本的产物核对lib与share\extension两个路径下一步建议建立向量表并选择相似度操作符-L2 距离、#内积返回值为负内积、余弦距离、L1 距离按业务语义选一种并保持查询与索引一致。数据量上千后为向量列建 HNSW 索引例如CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);写入量大或召回要求更高时可调整m、ef_construction参数。如需进一步压缩存储或提升检索速度参考仓库 README 中 halfvec 半精度向量与量化相关的章节。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考