ARTICLE DETAIL

资讯详情

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

Windows 快速部署 pgvector 完整指南:nmake 编译到一键验收,新手也能一次成功

Windows 快速部署 pgvector 完整指南:nmake 编译到一键验收,新手也能一次成功 Windows 快速部署 pgvector 完整指南nmake 编译到一键验收新手也能一次成功【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector在 Windows 上给 PostgreSQL 装上 pgvector 之后你的向量数据和关系型数据就能待在同一个库、同一张表里一条 SQL 就能查出最相似的前 5 条还顺便享受上了 ACID 事务和 JOIN 这些老朋友。这篇教程陪你把整套流程走一遍配环境、编译、安装、验收最后再附一张排障表卡壳时翻出来对号入座即可。全局速览先把地图摊开动手之前先花 10 秒看清楚整个流程长什么样——一共 6 站每站都有明确的产出心里有底就不慌站你要做的事产出1️⃣ 装前检查确认 PG、VS、SDK、Git 都在位一张打勾的清单2️⃣ 拉代码clone v0.8.6 源码到临时目录一份本地源码3️⃣ 配环境设好PGROOT指向安装目录编译脚本认得 PG4️⃣ 编译nmake /F Makefile.win一个vector.dll5️⃣ 安装nmake /F Makefile.win installdll、control、sql 各归其位6️⃣ 验收连库 → 建扩展 → 查版本0.8.6的版本号所有 Windows 专属的编译逻辑都写在 Makefile.win 里后面每一步都可以拿它当说明书翻。装前清单这四样备齐了再动工把下面这几项过一遍缺哪项补哪项能省掉后面大半的排查时间PostgreSQL 1316、17、18 都很稳17 记得用 17.3 及以上原因见排障手册Visual Studio 2019 或更新版本关键是安装时勾上C 桌面开发工作负载Windows 10/11 SDK随 VS 一起装上即可Git 客户端用来拉源码 一个常见的坑VS 里光装了 IDE 没装 C 组件编译时会报莫名其妙的头文件错误。确认一下工作负载里有没有 C。拉代码 配环境一个动作块搞定源码获取和环境变量其实是一件事PGROOT不指对代码拉回来也没法编。建议直接放临时目录编译不污染工程区set PGROOTC:\Program Files\PostgreSQL\18 cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector三个细节值得留意PGROOT后面要换成你机器上实际的版本号目录13~18 任选其一目录名就是版本号Makefile.win 会从这个变量里推导include、lib、share三个路径指错了第一步编译就会失败分支锁定v0.8.6和仓库当前 vector.control 里的default_version一致避免装上去之后版本对不上。编译三件事命令行、编译、安装打开对的命令行从开始菜单找到x64 Native Tools Command Prompt for VS版本随你的 VS 走右键以管理员身份运行。这一步决定了后面用哪个编译器、什么架构选错窗口是 Windows 编译失败的头号原因。跑编译nmake /F Makefile.win背后发生的事不复杂把 src/ 下 19 个.c文件hnsw、ivfflat、vector 等逐一编译成目标文件再链接成vector.dll。编译选项里带了/O2 /fp:fast会自动向量化属于白嫖性能不用你操心。看到最后一行vector.dll生成即算成功。跑安装nmake /F Makefile.win install这一步把三样东西拷到 PostgreSQL 家目录里vector.dll进lib、.control和vector--*.sql进share\extension、头文件进include\server\extension\vector。装完可以用 sql/ 目录里的升级脚本确认一下版本链路是否完整。验收三连三行命令确认装好了装完不等于装对下面这个勾选清单逐项过连上库psql -U postgres能进交互式命令行即可建扩展CREATE EXTENSION vector;不报错每个要用到它的库都要执行一次查版本SELECT vector_version();输出0.8.6就算通关 ✅想更彻底一点还可以跑仓库自带的回归测试套件会执行 test/sql/ 下的向量类型、HNSW、IVFFlat 等全套用例nmake /F Makefile.win installcheck能力速览装好之后它能干什么四种向量类型各有各的适用身材类型特点维度上限索引场景vector单精度浮点最常用2,000halfvec半精度省一半空间4,000bit二值向量适合量化场景64,000sparsevec稀疏向量只存非零位1,000 个非零元素距离函数按比什么分组比距离远近-是 L2欧氏距离默认首选是 L1曼哈顿距离比方向角度是余弦距离语义检索场景的主力比投影关系#是内积——注意它返回的是负内积因为 Postgres 只支持ASC方向的索引扫描取个负号好排序比比特bit类型还有汉明距离和 Jaccard 距离两个操作符两种索引按数据量和诉求二选一HNSW多层图结构查询质量优秀、建好后维护省心数据量中等以上闭眼选它IVFFlat倒排 k-means 聚类建得飞快适合对构建时长敏感的批量导入场景排障手册现象 → 原因 → 解法遇到报错别慌按先看现象、再对原因、最后动手的顺序查现象原因解法Cannot open include file: postgres.hPGROOT没设或指错了目录重新核对PGROOT指向真实的 PostgreSQL 安装目录含include、lib子目录的那个error C2196: case value 4 already used用了普通 cmd 或架构不对的命令行窗口关掉它改用x64 Native Tools窗口再执行nmake /F Makefile.win clean清干净后重新编译unresolved external symbol float_to_shortest_decimal_bufnPostgreSQL 17.0~17.2 的已知符号缺失升级到 17.3 及以上或换 16/18 的PGROOTAccess is denied往程序目录拷文件没权限用管理员身份重开命令行重新跑安装那一步 排障总原则先确认命令行窗口对不对占一半的坑再确认PGROOT对不对占另一半的坑90% 的问题出在这两处。提速锦囊怎么跑得更快建索引阶段先灌数据后建索引空表建 HNSW 再一条条插入图会反复重构白干不少活把maintenance_work_mem调大当图能整个装进内存时构建速度会有质变建完记得调回数据量大时HNSW 支持并行构建多核机器基本不用等查询阶段HNSW 调hnsw.ef_search默认 40值越大召回越高、速度越慢。召回不够就往上加追求低延迟就往下压IVFFlat 调ivfflat.probes默认 1一个不错的起点是sqrt(lists)比如建了 100 个聚类就设成 10带过滤条件的查询0.8.0 起支持迭代式扫描可以开iterative_scan relaxed_order让索引自动多扫一点直到凑够结果避免先查后滤导致返回条数不足SET hnsw.ef_search 100; -- 只影响本会话重启就恢复默认收尾版本与下一步当前仓库版本为0.8.6支持到 Postgres 18 的构建链路0.8.7 已在开发中后续升级直接走 sql/ 下的版本升级脚本链即可。下一步建议建一张带vector(3)列的小表用-查一次最近邻再给它建一个 HNSW 索引——三件事做完pgvector 就算真正在你手里跑起来了 【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表