news 2026/9/6 21:09:51

折腾两天终于跑通:pgvector向量搜索扩展在Windows 11下的编译排坑实录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
折腾两天终于跑通:pgvector向量搜索扩展在Windows 11下的编译排坑实录

折腾两天终于跑通:pgvector向量搜索扩展在Windows 11下的编译排坑实录

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

pgvector是PostgreSQL的向量相似度搜索扩展,让Postgres能对向量列做最近邻查询。我在Windows 11 + PostgreSQL 16上编译它,被报错卡了两天,最后发现是选错了编译器位数。

卡在哪里:最先吓到我的报错

我照着常规流程走:拉源码、开命令行、执行nmake。构建先是刷出一大片warning C4141: 'dllexport': used more than once,符号被重复声明导出。我一开始以为这是主犯,后来发现它只是警告。

真正的拦路虎是这个:

tupmacs.h(65): error C2196: case value '4' already used tupmacs.h(197): error C2196: case value '4' already used

报错位置在PostgreSQL内部头文件tupmacs.h里,不在pgvector自己的源码文件里。switch分支里同一个case值被用了两次,编译器直接报错中断,DLL根本出不来。

排查路径:我先往错的方向走了

我先怀疑是符号冲突,去数据库里查了已装扩展列表,确认没有别的扩展重复定义同名符号;又执行了clean重新构建,结果一模一样。

接着怀疑PostgreSQL版本不兼容。我逐行看了Makefile.win,确认PGROOT指向的就是实际安装的PG16目录,头文件和库文件路径都对得上,排除环境配置问题。

转折点是我又看了一眼报错文件:tupmacs.h是PG头文件,里面的分支是靠SIZEOF_DATUM宏(Datum的大小,Datum可理解为Postgres通用的数据载体)做条件编译的。64位下它是8,分支不冲突;用32位编译器编译时它是4,switch里的分支就撞上了。

绕了一圈回头看我的命令行窗口——我一直用的是x86的Developer Command Prompt。项目Windows安装说明里写明了要用x64 Native Tools Command Prompt,我当时没留意这一句。

关键修复:切到x64编译环境的四步

T🔧 换环境不复杂,难在一把过:

  1. 打开 "x64 Native Tools Command Prompt for VS",别用普通Developer Command Prompt——原因:编译目标架构必须和64位Postgres对齐。
  2. 拉源码并进入目录:git clone https://gitcode.com/GitHub_Trending/pg/pgvector,这就是扩展的完整源码。
  3. 声明PGROOT并执行构建:
set "PGROOT=C:\Program Files\PostgreSQL\16" nmake /F Makefile.win clean nmake /F Makefile.win nmake /F Makefile.win install
  1. clean那一步不能省——把32位编译留下的obj清干净,否则新旧产物混着链接,还是会挂。

✅ 装完后执行CREATE EXTENSION vector;,能建向量列和索引就算彻底通了。

踩坑备忘:这些细节容易再犯

⚠️ 别凭窗口标题判断编译器位数。不确定就执行where cl,路径里带x86_amd64说明是32位。

  • 换完环境先clean再构建,32位的obj混进来一定失败。
  • C4141重复导出警告不影响DLL生成成功,别在它上面耗时间。
  • PG 17.0到17.2会在链接阶段报float_to_shortest_decimal_bufn,那是PG自身问题,升到17.3以上。
  • install阶段报 Access is denied 就是权限不够,用管理员身份重跑。

一句话总结:Windows上编译扩展,先查编译器位数,再怀疑代码。建议把x64命令行固定成你的默认环境。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 21:08:25

A3报告培训课件设计:从思考逻辑到实战落地的完整方法论

简介:这份A3报告制作培训PPT课件是一套面向企业管理者、班组长及持续改进专员的问题解决工具训练材料,重点讲解源自丰田生产系统的A3报告方法。课件系统阐述了A3报告的意义——简明沟通、深度分析和标准化工具,并按照认识问题、现状把握、要因…

作者头像 李华
网站建设 2026/9/6 21:07:21

完整上手 TrollStore:任意 IPA 永久安装

完整上手 TrollStore:任意 IPA 永久安装 【免费下载链接】TrollStore Jailed iOS app that can install IPAs permanently with arbitary entitlements and root helpers because it trolls Apple 项目地址: https://gitcode.com/GitHub_Trending/tr/TrollStore …

作者头像 李华
网站建设 2026/9/6 21:06:54

Floyd算法详解:从动态规划原理到显式路径实现

简介:针对弗洛伊德(Floyd)算法实现与课程设计需求,这份 doc 文档提供了完整的“求解最短路径”课题方案,适合正在学习数据结构、图论算法或准备算法课程设计的读者参考。内容从问题分析和任务定义入手,明确…

作者头像 李华
网站建设 2026/9/6 21:05:49

MaxKB 安装部署教程:一条命令跑起企业级智能体平台

MaxKB 安装部署教程:一条命令跑起企业级智能体平台 【免费下载链接】MaxKB 🔥 MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。 项目地址: https://gitcode.com/GitHub_Trending/ma/MaxKB …

作者头像 李华