pgvector 安装教程:给 Postgres 三步装上向量检索
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
pgvector 是 Postgres 的开源向量检索扩展:embedding 直接存进普通表,一条 SQL 查最近邻,不用另养一套向量库。适合刚接触向量搜索的开发者,照这篇走完,从拉源码到建表、插入、查到第一条最近邻结果,约 10 分钟。
先搞清它能干什么
- 四种向量类型:vector(单精度)、halfvec(半精度,省一半空间)、bit(二进制)、sparsevec(稀疏,只存非零项)
- 距离算子齐活:
<->欧氏、<#>内积、<=>余弦、<+>L1,都能建索引 - 默认精确检索,召回 100%;建了 HNSW 或 IVFFlat 索引就是近似检索,拿一点召回换速度
- 向量列能直接 JOIN、参与事务,任何带 Postgres 客户端的语言都可用
- 边界提醒:HNSW 对 vector 限 2000 维,再高得换 halfvec 或量化
动手前核对这几样
| 项目 | 要求 | 为什么需要 |
|---|---|---|
| PostgreSQL | 13+,推荐 16/17 | 编译时要链接它的头文件和库 |
| 构建工具 | GCC/Clang + make,或 VS2019+ 勾选 C++ 桌面开发 | Makefile 靠它调编译器 |
| Git | 较新版本 | 拉源码 |
| 管理员权限 | sudo 或管理员终端 | make install要写入 PG 安装目录 |
跟着做
① 把源码拉到临时目录,装完随时能删。
cd /tmp git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector源码就位,下面交给 make。
② 一条命令编译,再装进 Postgres 的目录:
make make install # 无写权限时前面加 sudoWindows 走另一条路:在 VS 的 x64 Native 命令行里,先设好PGROOT指向 Postgres 安装目录(如C:\Program Files\PostgreSQL\16),再依次执行nmake /F Makefile.win和nmake /F Makefile.win install,细节见 Makefile.win。
③ 连上目标库,把扩展打开。每个要用的库都执行一次:
CREATE EXTENSION vector;怎么确认没问题
先查版本,应返回一行0.8.6:
SELECT extversion FROM pg_extension WHERE extname = 'vector';再建张最小表跑一查,第一行应该是离[3,1,2]更近的[1,2,3]:
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'); SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 1;若建扩展时报could not open shared object file,先查make install是否真正落盘:看权限,或核对PGROOT指的版本对不对。想跑全量回归:make installcheck,它会把 test/sql/ 下的所有用例过一遍。
卡住了先查这里 🔧
- make 报
pg_config not found→ 没装 PG 开发头文件 → Debian 系装postgresql-server-dev-17,Mac 先xcode-select --install make install报 Permission denied → 对安装目录没写权限 → 加sudo重跑- CREATE EXTENSION 找不到
vector库 → .so 没进 lib 目录 → 重跑make install,确认没被跳过
下一步
到这里,Postgres 已经会算向量了。下一步:建个 HNSW 索引,把真实 embedding 灌进去,跑第一条相似查询。
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考