尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Windows 下编译安装 pgvector 向量搜索扩展完整实战
Windows 下编译安装 pgvector 向量搜索扩展完整实战【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectornmake /F Makefile.win跑完弹出PGROOT is not set——这是多数人在 Windows 上编译 pgvector 时遇到的第一个报错。紧接着Cannot open include file: postgres.h: No such file or directory和error C2196: case value 4 already used会轮番出现。这些错误看着五花八门背后其实只有三类配置问题工具链路径、PostgreSQL 开发文件、架构位宽。把它们逐一理清编译安装 pgvector 向量搜索扩展这件事实际上不到二十分钟。前置条件Windows 工具链清单在动手编译之前先把依赖件备齐。pgvector 的 Windows 构建走的是 MSVC 编译器加 nmake 的路径和 Linux 下make的构建逻辑完全不同缺任何一环都会卡住。以下组件缺一不可组件要求验证方式Visual Studio 2022 或更新版本安装时勾选使用 C 的桌面开发工作负载在 x64 Native Tools 终端中运行cl能输出 MSVC 版本号PostgreSQL 13 及以上开发版安装时勾选 Development Files确认%PGROOT%\include\server\postgres.h文件存在Git任意版本git --version正常返回版本号管理员权限安装阶段需要写入 PostgreSQL 目录以管理员身份运行命令提示符 这里有一个最容易被忽略的前提必须使用 x64 Native Tools Command Prompt for VS 2022或你实际安装的对应版本而不是普通的 CMD 或 PowerShell。这个终端在启动时会自动加载 MSVC 的编译环境变量cl、nmake、link等命令才能被正确识别和调用。用普通终端跑nmake大概率直接报nmake 不是内部或外部命令。环境搭建阶段打开 x64 Native Tools Command Prompt 后第一件事是设定PGROOT指向你的 PostgreSQL 安装根目录。pgvector 的 Makefile.win 中所有路径变量——头文件目录、库目录、安装目标——都从这个变量展开它设错了后面全错set PGROOTC:\Program Files\PostgreSQL\18版本号和具体路径根据实际安装调整。设完之后花十秒验证头文件可达dir %PGROOT%\include\server\postgres.h能列出该文件说明 PostgreSQL 开发文件完整编译所需的头文件搜索路径已经通了。这一步不通过后面的编译一定挂在 include 阶段。源码拉取建议放在%TEMP%下目的是避开用户目录下可能出现的中文路径和空格减少转义带来的意外问题cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector编译构建阶段源码就绪后构建命令只有两条严格按顺序执行。第一条完成编译和链接nmake /F Makefile.win这条命令会依次编译 src/ 目录下的全部 C 源文件包括vector.c、hnsw*.c、ivfflat*.c等约二十个文件链接生成vector.dll同时把 sql/vector.sql 复制为对应版本号 0.8.6 的升级脚本。编译日志的末尾应出现vector.dll的链接输出没有报错即为构建成功。第二条完成安装nmake /F Makefile.win install安装步骤将产物分发到 PostgreSQL 的四个位置%PGROOT%\lib\vector.dll——扩展共享库PostgreSQL 加载扩展时读取%PGROOT%\share\extension\vector.control和vector--0.8.6.sql——扩展控制文件与 SQL 脚本%PGROOT%\include\server\extension\vector\——C 头文件供其他扩展引用 pgvector 的数据结构⚠️ 如果安装阶段报Access is denied说明当前终端没有管理员权限。关闭终端以管理员身份重新打开 x64 Native Tools Command Prompt重新set PGROOT后跑nmake /F Makefile.win install即可。部署验证阶段重启 PostgreSQL 服务或断开后重新连接在目标数据库中执行CREATE EXTENSION vector;这条语句成功执行即表示扩展已被 PostgreSQL 加载并注册。接下来建一张最小测试表跑一次 L2 距离检索来确认向量类型和距离算子都正常工作CREATE TABLE t (id serial PRIMARY KEY, e vector(3)); INSERT INTO t (e) VALUES ([1,2,3]), ([4,5,6]), ([7,8,9]); SELECT id FROM t ORDER BY e - [3,2,1] LIMIT 1;预期返回id 1。如果这条查询正常出结果向量存储、L2 距离计算、表扫描精确检索的整条链路已经打通。快速自检安装是否成功判断 pgvector 是否装好核心看三件事不需要逐条 SQL 验证扩展可创建CREATE EXTENSION vector;无报错。向量类型可用建表时vector(n)类型能正常声明插入和查询不报错。距离算子可执行-L2 距离、#内积、余弦距离至少跑通一个。这三步都过了扩展的安装和基础功能就是正常的。如果需要更全面的回归验证项目自带了一套覆盖 HNSW、IVFFlat、各种向量类型vector、halfvec、bit、sparsevec的端到端测试用例位于 test/sql/ 和 test/t/ 目录下可以用nmake /F Makefile.win installcheck触发。排查 pgvector 编译失败的四个核心问题实际编译中碰到的报错绝大多数集中在以下四类报错信息根因修复PGROOT is not set环境变量未在当前终端会话中设置在当前 x64 Native Tools 终端中重新执行set PGROOT...后再编译Cannot open include file: postgres.hPostgreSQL 未安装 Development Files或PGROOT路径指向了错误位置重装 PostgreSQL 时勾选开发组件用dir %PGROOT%\include\server\postgres.h核实路径error C2196: case value 4 already used使用了 32 位命令提示符导致架构不匹配改用x64Native Tools 终端先nmake /F Makefile.win clean清除旧产物再重新编译unresolved external symbol float_to_shortest_decimal_bufnPostgreSQL 17.0 至 17.2 的已知缺陷升级到 PostgreSQL 17.3 及以上版本后重新编译 补充一个链接阶段的常见问题如果出现LNK2019未解析符号错误大概率是%PGROOT%\lib\postgres.lib缺失。Makefile.win 中LIBDIR指向的目录必须真实包含该文件路径中有空格时 Makefile 已做了引号处理一般不需要手动改。编译优化与并行构建pgvector 的 Makefile.win 默认已启用/O2 /fp:fast优化标志和 MSVC 自动向量化。如果你的 CPU 支持 AVX2 指令集可以在文件顶部的OPTFLAGS行追加指令集参数来提升向量运算性能OPTFLAGS /arch:AVX2修改后重新执行nmake /F Makefile.win即可生效。如果 CPU 较老不支持 AVX2保持默认值或使用/arch:SSE2替代。 不建议盲目上最高指令集等级——/arch:AVX512之类的参数在部分 CPU 上会导致运行时Illegal instruction崩溃。关于并行编译MSVC 的nmake不支持 GNU make 的-j并行参数。pgvector 本身只有约二十个源文件单线程编译通常在两分钟内完成并行化的收益非常有限不必额外折腾。这套方案适合什么场景pgvector 把向量搜索直接嵌入 PostgreSQL 内部向量数据和业务数据共享同一套事务、JOIN、ACID 机制。这个架构特点决定了它的适用边界选型时值得想清楚。适合的场景向量规模在十万到千万级且向量查询需要频繁和业务表 JOIN 取其他字段团队已有 PostgreSQL 技术栈不想再引入一套向量数据库的部署和运维负担对事务一致性有要求比如向量插入、更新必须和业务数据在同一事务中提交或回滚不太适合的场景向量规模达到上亿、QPS 极高的纯检索场景专用向量数据库在吞吐和召回率调优上通常更有优势对向量索引构建速度有极致要求的场景pgvector 的 HNSW 索引构建时间会随数据量近似线性增长选型的核心判断标准如果你的向量查询大部分是从已有业务数据中找相似项而不是独立的高吞吐向量检索服务pgvector 是更简洁、运维成本更低的方案。延伸方向pgvector 项目迭代活跃CHANGELOG.md 记录了从 0.1.0 到 0.8.6 的完整版本演进。HNSW 与 IVFFlat 两种索引的取舍、halfvec和bit类型的量化压缩、索引参数调优等进阶内容在 README.md 的 Scaling 和 Quantization 章节中有详细说明。社区讨论和 issue 跟踪可以在 GitCode 仓库页面参与。关键要点回顾x64 Native Tools 终端是编译前提PGROOT 必须指向含开发文件的安装路径两条 nmake 命令完成构建与安装三种距离算子验证扩展功能架构位宽不匹配是最隐蔽的编译错误【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格

Teable 自托管快速上手:手把手在自己服务器上部署 AI 电子表格 【免费下载链接】teable ✨ AI Spreadsheet for Business 项目地址: https://gitcode.com/GitHub_Trending/te/teable Teable 是一个开源的数据协作平台,界面像电子表格,…

📅 2026/11/8 12:02:37
Wand-Enhancer 本地修补教程:3 步免费解锁 WeMod Pro 完整功能

Wand-Enhancer 本地修补教程:3 步免费解锁 WeMod Pro 完整功能

Wand-Enhancer 本地修补教程:3 步免费解锁 WeMod Pro 完整功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 午休时打开 WeMod 准备改…

📅 2026/11/9 11:30:20
Codewhale TUI 设置面板与 MCP 恢复通道:让每一行都指明“下一步命令“

Codewhale TUI 设置面板与 MCP 恢复通道:让每一行都指明“下一步命令“

Codewhale TUI 设置面板与 MCP 恢复通道:让每一行都指明"下一步命令" 【免费下载链接】Codewhale Open-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome. 项目地…

📅 2026/10/7 0:21:43
MORE NEWS

更多资讯

📰

定陶电工证怎么考千万别踩坑,别让培训费打水漂

定陶电工证怎么考千万别踩坑,别让培训费打水漂 怕考不过白交培训费?你不是一个人。最近我收到太多人私信问【定陶电工证怎么考】,但很多人最后都因为选择不当,要么花冤枉钱,要么考了也用不上。今天就从你最关心的【定陶电工证怎么考】说起,告诉你…

📰

迁西县在哪报名电工证 郑州报考避坑指南 高手经验告诉你怎么稳过实操考试

迁西县在哪报名电工证 郑州报考避坑指南 高手经验告诉你怎么稳过实操考试 实操考试心里没底怕挂科?这可能是很多正在准备电工证考试的学员心里最真实的想法。尤其是在郑州,报名流程复杂、考试要求严格,稍有不慎就可能浪费时间和金钱。别担心,本文结合【…

📰

本县考电工证多少钱保姆级教程:从零开始拿证上岗全攻略

本县考电工证多少钱保姆级教程:从零开始拿证上岗全攻略 你是不是正在为找工作发愁?别担心,今天我们就来聊聊 本县考电工证多少钱 ,以及怎么通过 保姆级教程 快速拿到电工证,顺利上岗。…

📰

中级电工证工地能用吗通过率揭秘 电工证持证人如何在工地站稳脚跟

中级电工证工地能用吗通过率揭秘 电工证持证人如何在工地站稳脚跟 找工作遇到门槛?急需特种作业证才能上岗?中级电工证工地能用吗?这个问题,对于很多刚入行的电工来说,是头等大事。很多人在考完证之后才发现,证书并不像想象中那么“万能”,特别是在跨…

📰

本县考电工证多少钱值不值得考

本县考电工证多少钱值不值得考 学历不高怕报不上名?别担心,电工证报名其实不看你学历,只要年满18岁,身体健康,基本都能报名。现在很多人觉得考电工证没用,但其实它是从事电工行业的门槛,没有它,连入门都不行。本县考电工证多少钱?值不值得考?我来…

📰

宝安区电工证换证官方回应:工地太忙根本没时间复习考试?看这篇就够了

宝安区电工证换证官方回应:工地太忙根本没时间复习考试?看这篇就够了 工地太忙根本没时间复习考试?这是很多电工朋友在宝安区办理电工证换证时最头疼的问题。特别是从事房建工程的朋友们,日均工作十几个小时,还要兼顾现场施工与设备检查,哪还有精力去准…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬