Windows 3 步装好 pgvector:PostgreSQL 向量扩展完整指南
2026/9/5 15:53:04 网站建设 项目流程

Windows 3 步装好 pgvector:PostgreSQL 向量扩展完整指南

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

本文带你完成 pgvector(PostgreSQL 向量扩展)在 Windows 上的完整安装:装完后,你都能在数据库表里存向量(表示文本内容的数值数组),并用一条 SQL 做出向量相似性搜索。适合会基础 SQL、没装过数据库扩展的读者,全程约 30 分钟。

📌 开篇速览

  • 能完成:在 Windows 的 PostgreSQL 上装好 pgvector,并跑通第一次按距离排序的向量搜索
  • 适合谁:会写基本 SQL,但没装过数据库扩展(给数据库加装新能力的小组件)
  • 耗时:含自检与验证约 30 分钟,纯安装环节约 10 分钟
  • 路线:只走预编译版本这一条最短路径;源码编译压缩成本节末尾的一个可选分支

✅ 动手前自检清单

按下表逐项自查,不满足就先做完"处理"列再做安装:

检查项通过标准不满足怎么办
系统Windows 10/11 64 位改用 WSL 2 走 Linux 安装方式
PostgreSQL13 及以上,推荐 16;postgres -V能输出版本号用 EDB 官方安装包安装对应版本
psql 客户端开始菜单能找到 "PostgreSQL 16 - psql" 且能打开安装 PostgreSQL 时勾选完整组件
C++ 编译工具链仅源码编译分支需要:Visual Studio 含 C++ 工作负载在 Visual Studio Installer 中勾选"使用 C++ 的桌面开发"

前两项不满足时,后面所有步骤都会卡住;第四项只在走可选分支时才需要。

📦 最短安装路径

主推 pgvector 预编译版本:不需要任何编译动作,把两类文件放到正确目录即可。

  1. 下载预编译包。到 pgvector 项目的 Releases 页面,选与你的 PostgreSQL 大版本匹配的 Windows 构建(当前版本 0.8.6),解压后应得到三类文件:vector.dllvector.control、一组vector--0.x.x.sql
  2. 放置动态库。vector.dll复制到C:\Program Files\PostgreSQL\16\lib\(16 换成你的大版本号,需要管理员权限)。
  3. 放置扩展描述与脚本。vector.control和全部vector--*.sql复制到C:\Program Files\PostgreSQL\16\share\extension\vector.control的内容见 vector.control,它声明了扩展版本。
  4. 重启数据库服务。打开"服务"管理器,右键 PostgreSQL 服务选"重新启动"。扩展由后端进程加载,漏掉这一步是下一节报错的头号原因。

可选分支(pgvector 源码编译):需要最新提交时才走这条。克隆仓库https://gitcode.com/GitHub_Trending/pg/pgvector,打开 "x64 Native Tools Command Prompt for VS",执行set "PGROOT=C:\Program Files\PostgreSQL\16"进入源码目录后运行nmake /F Makefile.winnmake /F Makefile.win install。构建脚本会自动把产物拷进上面两个目录,细节见 Makefile.win 与 README.md 的 Windows 章节。

🔍 一条命令验证

打开 psql 连上任意数据库,执行:

CREATE EXTENSION vector; SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';

预期结果:第一行无报错;第二行返回一行,如vector | 0.8.6。看到这一行即代表安装成功,版本与 vector.control 中声明的一致。

🔎 第一次向量搜索

下面三条语句可在同一 psql 会话中直接执行。

建表:

CREATE TABLE notes ( id bigserial PRIMARY KEY, note_vec vector(4) );

它创建一张notes表,并声明一个vector(4)列,即每行存恰好 4 个分量的向量。预期结果:返回CREATE TABLE

写入数据:

INSERT INTO notes (note_vec) VALUES ('[0.1, 0.9, 0.2, 0.4]'), ('[0.8, 0.3, 0.6, 0.1]'), ('[0.5, 0.5, 0.5, 0.2]');

它写入 3 条向量,字符串用方括号数组字面量表示,这就是向量类型的输入形式。预期结果:返回INSERT 0 3

按距离搜索:

SELECT id, note_vec FROM notes ORDER BY note_vec <-> '[0.2, 0.8, 0.3, 0.1]' LIMIT 2;

<->是 L2(欧氏)距离操作符:计算查询向量与每行的距离后升序排序取前 2 名。预期结果:第一行id = 1,第二行id = 3

🩺 故障自诊表

症状最可能原因处理
CREATE EXTENSIONextension "vector" is not availablevector.control没进share\extension,或拷文件后未重启服务逐个检查两个目标目录是否都有对应文件,确认后重启 PostgreSQL 服务再执行
执行时报could not load library ... vector.dllvector.dll不在lib目录,或版本错位(如 16 的 dll 拷进了 15)vector.dll放进你实际启动的那个 PostgreSQL 版本的lib目录,重启服务
源码分支nmakePGROOT is not set编译窗口未设置PGROOT变量先执行set "PGROOT=C:\Program Files\PostgreSQL\16",再重新运行nmake /F Makefile.win

三条之外的报错,优先对照 README.md 的 installation notes 章节排查。

🧭 装完去哪

  • 索引:数据量过万行时,给向量列建 HNSW 索引(近似最近邻的分层图索引),避免全表逐行算距离。
  • 距离度量:除 L2 外还支持<#>(内积)与<=>(余弦距离),选与你的嵌入模型匹配的度量再建索引。
  • 落地:把这张小表换成你的真实语料,先跑通一条端到端的语义搜索链路,再谈参数调优。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询