
pgvector Windows一步到位安装一条SQL跑通向量搜索【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorEmbeddings已经躺在PostgreSQL里却还要单独维护一套向量库编译安装pgvector向量扩展普通表建上HNSW索引一条SQL完成向量检索。环境准备pgvector Windows编译前要备齐的4项PostgreSQL — 14推荐16 — 编译要用它的头文件和postgres.lib安装产物也落在这台服务上Visual Studio — 2019安装时勾选“C 桌面开发”工作负载 — nmake 靠它自带的 MSVC 编译器干活Windows SDK — 10.0.19041随 VS 工具链安装 — C 运行时头文件crtdefs.h来自这里漏了会直接报错Git — 任意较新版本 — 拉取 pgvector 源码任何一项缺失后面编译都会中途卡住且不好判断原因动手前逐项核对一遍更省事。编译安装三步把vector.dll装进PG目录拉源码并配置PGROOT源码放在临时目录即可装完不用管它。Makefile.win靠PGROOT环境变量定位 include、lib 目录和安装目标编译前必须先设好否则 nmake 会当场停下。cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector set PGROOTC:\Program Files\PostgreSQL\16 set PATH%PGROOT%\bin;%PATH%前三行拉取 v0.8.6 标签的源码并进入目录后两行把 PGROOT 指到 PostgreSQL 安装目录顺手把 bin 加进 PATH后面跑回归测试要用。变量就位后终端要换一下。在VS原生命令行编译并安装nmake 只能在 VS 附带的 “x64 Native Tools Command Prompt” 里用只有这个 shell 加载了 C 编译器和 SDK 环境换成普通 cmd 基本会缺头文件。nmake /F Makefile.win nmake /F Makefile.win install第一条把src/下所有 C 文件编成vector.dll第二条把产物拷进%PGROOT%\lib、把sql/下的 SQL 文件和vector.control拷进%PGROOT%\share\extension安装就算完成。泡杯咖啡的功夫基本编完。核对安装产物拷完后确认这两个关键文件在位都在就说明编译安装流程结束dir %PGROOT%\lib\vector.dll dir %PGROOT%\share\extension\vector.control接下来是在数据库里启用扩展。PostgreSQL向量扩展安装验证两条SQL确认版本连上任意数据库执行CREATE EXTENSION vector; SELECT vector_version();第二条应返回0.8.6。如果输出对不上或提示 extension not available跳到下一节排查。想跑一遍完整回归终端再补一条命令nmake /F Makefile.win installcheck它会依次执行test/sql下的 15 个用例覆盖向量类型、类型转换、HNSW/IVFFlat 索引构建和全部距离算子。常见编译报错排查 ⚠️终端飘红不用慌九成是下面几种情况。fatal error C1083: Cannot open include file: crtdefs.h根因不在 VS 原生命令行里编译或 VS 缺 C 生成工具/SDK 组件。解法换到 “x64 Native Tools Command Prompt” 重新执行仍报错就用 Visual Studio Installer 修复 “C 生成工具” 工作负载并补上 Windows SDK。!error PGROOT is not set根因环境变量没设或新开了终端窗口——cmd 里的变量不跨窗口。解法在当前窗口重新设置再编译set PGROOTC:\Program Files\PostgreSQL\16C2196: case value already used根因上次编译失败留下的.obj干扰了本次编译。解法先清理再重编nmake /F Makefile.win clean nmake /F Makefile.win找不到postgres.h或postgres.lib根因PGROOT 层级指错了应直接指到含include\server和lib的版本号目录如C:\Program Files\PostgreSQL\16而不是它的上级。解法修正路径后重跑可用dir %PGROOT%\include\server验证目录结构。pgvector核心能力速览4种向量、4个距离算子、2类索引pgvector 自带 4 种向量类型覆盖大多数 embedding 场景vector单精度、最高 2,000 维可索引通用首选halfvec半精度、省一半内存、最高 4,000 维bit二值向量、最高 64,000 维支持 Hamming 和 Jaccard 距离sparsevec只存非零元素面向高维稀疏 embedding。距离算子共 4 个-L2欧氏距离最通用余弦距离适合文本相似度这类向量已归一化的场景#是负内积Postgres 的算子索引扫描只支持升序所以取负号是 L1 距离。每个算子都能建索引加速建索引时选用对应的算子类即可。索引分两类HNSW 是多层图结构查询更快空表也能建多数场景的默认选择IVFFlat 构建更快、占内存更少但建索引前要有足够数据还要调 lists 数量。整个流程四句 SQL 就能走通CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([4,5,6]); CREATE INDEX ON items USING hnsw (embedding vector_l2_ops); SELECT * FROM items ORDER BY embedding - [3,1,2] LIMIT 5;实用调优建议数据灌完再建索引IVFFlat 需要样本数据训练中心点空表上建出来的索引质量差。建索引前先SET maintenance_work_mem 8GB;让 HNSW 图装进内存构建速度差别明显。大表用SET max_parallel_maintenance_workers 7;提高并行 worker 数。查询时调hnsw.ef_search或ivfflat.probes换召回小表召回不达标时直接顺序扫描往往更稳。收尾pgvector 在 Windows 上的部署没有玄学拉源码、编一遍、启用扩展全程十几分钟。下一步建议建一张业务表把 embedding 灌进去用ORDER BY embedding - [1,2,3] LIMIT 5跑第一条查询试试手。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考