news 2026/9/6 16:32:29

3 条 nmake 命令在 Windows 装好 pgvector:PostgreSQL 向量搜索扩展从编译到验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3 条 nmake 命令在 Windows 装好 pgvector:PostgreSQL 向量搜索扩展从编译到验证

3 条 nmake 命令在 Windows 装好 pgvector:PostgreSQL 向量搜索扩展从编译到验证

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

你已有一套在跑的 PostgreSQL,现在想不额外引入向量数据库就直接做语义搜索,pgvector 就是为此设计的:它把向量类型、距离函数和近似索引全部放进 Postgres 内部,一次 SQL 即可完成向量搜索。在 Windows 上完成编译安装并不复杂,只要编译器与开发文件就位,核心步骤只有 3 条命令。

pgvector 是什么、能干什么

  • 向量类型齐全vector(单精度,最高 2,000 维)、halfvec(半精度)、bit(二进制)、sparsevec(稀疏),可按场景选存储格式
  • 距离度量完整:L2 距离<->、内积<#>、余弦距离<=>、L1 距离<+>,二进制向量还有汉明与 Jaccard 距离
  • 精确 + 近似两套搜索:小表可全表扫描做精确最近邻,大表建 HNSW 或 IVFFlat 索引做高速近似搜索
  • 原生融入 SQL:向量列和普通列一样参与 JOIN、过滤、事务,任何带 Postgres 客户端的语言都能直接调用
  • 典型适用场景:语义检索、RAG 问答、相似内容推荐、以图搜图等

动手前的 Windows 准备清单

工具作用验证方法
x64 Native Tools Command Prompt for VS 2022提供 MSVC 编译器cl.exenmake运行cl能看到编译器版本号
PostgreSQL 13+(含 Development Files)提供头文件include\server与链接库postgres.libdir %PGROOT%\include\server\postgres.h能列出该文件
PGROOT 环境变量被 Makefile.win 用来定位 Postgres 的 bin、lib、share 目录echo %PGROOT%打印出安装路径

准备步骤按顺序执行:

  1. 安装 Visual Studio 2022,工作负载勾选"使用 C++ 的桌面开发"
  2. 安装 PostgreSQL,组件里务必勾选 Development Files
  3. 从开始菜单启动x64 Native Tools Command Prompt for VS 2022,安装阶段建议以管理员身份运行
  4. 拉取源码并进入目录:
cd %TEMP% git clone https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector

从零到装好:只需 3 条命令

set "PGROOT=C:\Program Files\PostgreSQL\18"

用途:告诉 nmake 你的 PostgreSQL 装在哪里。💡 版本号按你实际安装的目录修改,可用echo %PGROOT%确认。 预期输出:无输出,命令静默完成。

nmake /F Makefile.win

用途:编译 src 下全部 C 源码,产出扩展动态库。 预期输出:过程打印若干编译日志,当前目录生成vector.dll

nmake /F Makefile.win install

用途:把vector.dllvector.control及 SQL 脚本复制到 PostgreSQL 的 lib 与share\extension目录。 预期输出:一串copy成功日志,%PGROOT%\lib下出现vector.dll

用 2 段 SQL 验证向量搜索是否生效

第一段:建扩展、建表并插入数据(每个要用的数据库都需执行一次建扩展):

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]');

第二段:按 L2 距离排序查询最近邻:

SELECT id, embedding <-> '[3,1,2]' AS distance FROM items ORDER BY distance LIMIT 1;

返回的是距离值最小(即与查询向量[3,1,2]最接近)的那一行,说明向量搜索已生效;换成<=>即得到余弦距离排序。

卡住了?Windows 编译常见故障速查

报错现象最可能原因一行处理办法
PGROOT is not set新终端里 PGROOT 丢失或未设置重新执行set "PGROOT=..."再编译
Cannot open include file: 'postgres.h'PGROOT 指错或 Postgres 没装 Development Filesdir %PGROOT%\include\server\postgres.h核对路径
'cl' 不是内部或外部命令没有从 VS 命令提示符启动改用 x64 Native Tools Command Prompt 重进目录
error C2196: case value '4' already used用了 x86 命令行导致架构不匹配换 x64 提示符,先nmake /F Makefile.win clean再编译
unresolved external symbol float_to_shortest_decimal_bufnPostgres 17.0–17.2 与源码链接库不兼容升级 PostgreSQL 到 17.3 及以上版本
Access is denied无权限写入 Program Files 目录以管理员身份重开命令提示符执行 install

装好之后你能做什么

  • 能力一:为向量列建 HNSW 或 IVFFlat 索引,百万级以上数据也能走索引快速返回 Top-K,并可与 WHERE 条件混写做混合查询
  • 能力二:用halfvec半精度或二进制向量压缩内存,向量库越大收益越明显
  • 能力三:向量检索结果直接参与 SQL 的 JOIN、聚合与事务,不必在两套系统间搬数据

编译优化示例:Makefile.win 默认已带/O2 /fp:fast开启自动向量化,若 CPU 支持 AVX2,可在那一行的OPTFLAGS中追加/arch:AVX2,提升向量运算吞吐。

下一步建议

  1. 跑一遍仓库自带回归测试nmake /F Makefile.win installcheck,确认你的环境行为一致
  2. 阅读 README.md 的 HNSW/IVFFlat 章节,学会mef_constructionlists等参数调优

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

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

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

PyG 加载 QM9 数据集:从下载到跑通训练

PyG 加载 QM9 数据集&#xff1a;从下载到跑通训练 【免费下载链接】pytorch_geometric Graph Neural Network Library for PyTorch 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric 第一次用 PyTorch Geometric&#xff08;PyG&#xff0c;一个基…

作者头像 李华
网站建设 2026/9/6 16:27:24

自动测试系统与网络化仪器:从总线演进到系统落地全解析

简介&#xff1a;这份《自动测试系统与网络化仪器》PPT课件聚焦电子测量与自动测试领域&#xff0c;适合测控、仪器科学与技术专业学生及从事测试系统开发的工程师。内容系统梳理了ATS的组成架构&#xff0c;从控制器、程控仪器到总线接口、测试软件与被测对象&#xff0c;并着…

作者头像 李华
网站建设 2026/9/6 16:20:42

Starship 安装指南:5 分钟在全平台装好你的跨 Shell 提示符

Starship 安装指南&#xff1a;5 分钟在全平台装好你的跨 Shell 提示符 【免费下载链接】starship ☄&#x1f30c;️ The minimal, blazing-fast, and infinitely customizable prompt for any shell! 项目地址: https://gitcode.com/GitHub_Trending/st/starship Star…

作者头像 李华
网站建设 2026/9/6 16:20:23

华为业务变革框架与战略级项目管理实战指南

简介&#xff1a;这是一份华为业务变革管理框架&#xff08;BTMS&#xff09;V2.0与战略级项目管理的完整讲义&#xff0c;共111页PPT&#xff0c;适合企业变革管理者、PMO成员、战略规划人员及组织管理研究者学习参考。内容以BTMS框架为主线&#xff0c;系统梳理年度规划流程、…

作者头像 李华
网站建设 2026/9/6 16:18:00

ComfyUI 性能优化与显存配置:从 45 秒到 15 秒的实战指南

ComfyUI 性能优化与显存配置&#xff1a;从 45 秒到 15 秒的实战指南 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI ComfyU…

作者头像 李华