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 安装方式 |
| PostgreSQL | 13 及以上,推荐 16;postgres -V能输出版本号 | 用 EDB 官方安装包安装对应版本 |
| psql 客户端 | 开始菜单能找到 "PostgreSQL 16 - psql" 且能打开 | 安装 PostgreSQL 时勾选完整组件 |
| C++ 编译工具链 | 仅源码编译分支需要:Visual Studio 含 C++ 工作负载 | 在 Visual Studio Installer 中勾选"使用 C++ 的桌面开发" |
前两项不满足时,后面所有步骤都会卡住;第四项只在走可选分支时才需要。
📦 最短安装路径
主推 pgvector 预编译版本:不需要任何编译动作,把两类文件放到正确目录即可。
- 下载预编译包。到 pgvector 项目的 Releases 页面,选与你的 PostgreSQL 大版本匹配的 Windows 构建(当前版本 0.8.6),解压后应得到三类文件:
vector.dll、vector.control、一组vector--0.x.x.sql。 - 放置动态库。把
vector.dll复制到C:\Program Files\PostgreSQL\16\lib\(16 换成你的大版本号,需要管理员权限)。 - 放置扩展描述与脚本。把
vector.control和全部vector--*.sql复制到C:\Program Files\PostgreSQL\16\share\extension\。vector.control的内容见 vector.control,它声明了扩展版本。 - 重启数据库服务。打开"服务"管理器,右键 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.win和nmake /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 EXTENSION报extension "vector" is not available | vector.control没进share\extension,或拷文件后未重启服务 | 逐个检查两个目标目录是否都有对应文件,确认后重启 PostgreSQL 服务再执行 |
执行时报could not load library ... vector.dll | vector.dll不在lib目录,或版本错位(如 16 的 dll 拷进了 15) | 把vector.dll放进你实际启动的那个 PostgreSQL 版本的lib目录,重启服务 |
源码分支nmake报PGROOT 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),仅供参考