news 2026/9/5 15:28:10

从克隆到跑通:pgvector 向量检索扩展安装教程(约 10 分钟)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从克隆到跑通:pgvector 向量检索扩展安装教程(约 10 分钟)

从克隆到跑通:pgvector 向量检索扩展安装教程(约 10 分钟)

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

pgvector 是 PostgreSQL 的开源向量检索扩展,装好之后 embedding 可以直接躺在普通表里,建个 HNSW 索引、一条ORDER BY就能查相似项,不用再单独养一套向量数据库。这篇文章带你从零走完整个流程:编译安装、启用扩展、建表灌数据、跑通第一条向量查询。全程 4 条编译命令 + 3 条 SQL,跟着敲就行。

开工前核对这 4 项

项目要求为什么容易漏
PostgreSQL13 及以上(推荐 16 / 17)装好软件还不够,编译时要用到它的头文件
开发头文件Linux/macOS 装postgresql-server-dev-<版本>(Ubuntu/Debian 包名)只装了服务端没装 dev 包时,make会报找不到pg_config
编译器Linux/macOS 用 gcc 或 clang;Windows 用 VS 2019+ 并勾选"C++ 桌面开发"Windows 少了 SDK 组件会在编译中途才报错
git 和 psql 客户端任意较新版拉源码、连库各用一次

不想本地编译的话,仓库自带docker目标,Makefile 里make docker可以直接构建镜像,本文只讲源码编译这条路。

Linux / macOS:4 条命令编译安装 pgvector

1. 把源码拉到临时目录

cd /tmp git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector

固定拉 v0.8.6 这个版本,装完源码删掉也不影响。跑完应看到/tmp/pgvector目录出现,里面有src/sql/Makefile

2. make 编译

make

这一步按 Makefile 把 src/ 下的 18 个 C 文件编成vector.so。跑完应生成vector.so,终端没有Error字样即成功。

3. make install 装进 PostgreSQL

make install

这一步把vector.so、vector.control 和 sql/ 下的版本脚本拷进 PostgreSQL 的libshare/extension目录,普通用户装系统目录时会提示权限不足,加sudo make install即可。跑完后share/extension/下应能看到vector--0.8.6.sql

4. Windows:把 make 换成 nmake

set "PGROOT=C:\Program Files\PostgreSQL\16" cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector nmake /F Makefile.win nmake /F Makefile.win install

Makefile.win 靠PGROOT定位头文件和安装目标,所以第一条命令必须在同一个会话里先执行,且要在 VS 的"x64 Native Tools Command Prompt"里敲。最后一条命令跑完,%PGROOT%\lib下应出现vector.dll

启用 vector 扩展:2 条 SQL 验证

用 psql 连上你要用的数据库(注意:每个数据库都要单独启用一次):

CREATE EXTENSION vector; SELECT vector_version();

第二条应返回0.8.6,看到版本号说明扩展已加载,部署闭环完成。✅

建表、灌数据、跑第一条向量查询

下面 3 条 SQL 是最小验证:建一张 3 维向量表、插两条数据、按 L2 距离查最近邻:

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 5;

第三条查询的<->是 L2 距离算子。预期返回 2 行,[1,2,3]排在第一、距离约 1.73,因为它离查询向量[3,1,2]更近。

数据量大时给索引加速,加一行:

CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);

建完这条索引,上面的查询就会走 HNSW 图索引(实现在 src/hnsw.c),小表则顺序扫描更快,先跑通再调优。

pgvector 装不动时,对照这张表找原因

⚠️ 编译阶段飘红基本逃不出下面 4 种,先对号入座:

现象原因解法
pg_config: command not found缺 PostgreSQL 服务端开发包装上与服务端同版本的postgresql-server-dev-<版本>后重跑make
make install提示权限不足目标目录属于系统sudo make install
PGROOT is not set(Windows)变量没设或重开了终端后失效当前会话重新执行set "PGROOT=...",再nmake /F Makefile.win clean从头编
找不到crtdefs.h、大量 C2xxx 错误(Windows)用错终端,不在 VS 原生环境里换成"x64 Native Tools Command Prompt",nmake /F Makefile.win clean后重编

想更放心?跑一轮官方回归测试

make installcheck

这一步把 test/sql/ 下 14 个用例全部过一遍,覆盖类型转换、距离函数和 HNSW/IVFFlat 索引构建(Windows 下对应nmake /F Makefile.win installcheck)。结尾输出All N tests passed.即为全绿。

从克隆源码到第一条相似性查询,你已经把 pgvector 完整跑通了。下一步建议:把真实 embedding 灌进表里,建 HNSW 索引后把ef_search调高一点,用EXPLAIN确认查询走了索引。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 15:25:21

人工智能创造力的几点思考

当代人工智能还不真具备创造力&#xff0c;创造力不能简单的说是能生成新东西&#xff0c;创造力也不止是颠覆&#xff0c;改进。认为有效创造力即是升维中一点收敛各个研究方向的线性预测&#xff0c;真正的创造力是&#xff08;break&#xff09;&#xff0c;可能需要新的方法…

作者头像 李华
网站建设 2026/9/5 15:21:59

Vibe Coding 保姆级教程:从零搭建开发环境到实战避坑指南

这类工具最值得先看的不是功能列表&#xff0c;而是能不能在普通环境里稳定跑起来&#xff0c;以及它到底能帮你解决什么具体问题。Vibe Coding 这个名字听起来很新潮&#xff0c;但本质上它是一个旨在提升编程学习或开发体验的工具或方法&#xff0c;可能集成了代码提示、环境…

作者头像 李华
网站建设 2026/9/5 15:17:34

解释一下网络时间协议(NTP)及其作用。

网络时间协议&#xff0c;简称NTP&#xff0c;它的作用就像一个“时间指挥官”&#xff0c;确保大家的时间都是一样的。你知道吗&#xff0c;当我们用手机、电脑或者其他电子设备时&#xff0c;它们的时间需要保持一致&#xff0c;这样我们才能准确知道现在是什么时候。NTP就像…

作者头像 李华