Windows 15 分钟实战pgvector 源码编译安装让 PostgreSQL 拥有向量检索能力【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 把向量直接存进普通的 PostgreSQL 表一条 SQL 就能做相似度查询省掉一套独立向量库。下面是完整流程。环境版本备注系统Windows 10 / 1164 位即可数据库PostgreSQL 16需 1317 系必须 17.3 及以上工具链与扩展Visual Studio 2022、pgvector v0.8.6从克隆到首次查询全程约 15 分钟环境自检四项依赖是否齐活动手前先过一遍清单缺什么补什么组件版本要求说明PostgreSQL13本例用 16编译要靠它的头文件与链接库17.0~17.2 存在链接符号问题用 17 系请选 17.3 及以上Visual Studio2022勾选「C 桌面开发」工作负载构建用的 nmake 底层依赖 MSVC 编译器装的时候记得勾选这个工作负载Windows SDK随 VS 安装即可一般随 VS 工具链自动带上缺了会在编译时找不到 C 运行时头文件Git任意较新版本负责拉取扩展源码三步装好 pgvector第一步克隆源码指向 PGROOT先打开 x64 Native Tools Command Prompt for VS 2022 并以管理员身份运行。这么做有两个原因编译器必须以 x64 模式工作才能匹配目标架构而且 install 阶段要往C:\Program Files写文件没有管理员权限会被拒绝。然后把环境变量指向 PostgreSQL 安装根目录构建脚本才知道去哪里找头文件、链接库产物该放到哪set PGROOTC:\Program Files\PostgreSQL\16 cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector pgvector cd pgvector dir Makefile.win目录里能看到 Makefile.win、vector.control 和 sql/ 目录这三样克隆就算到位了。第二步编译、落盘与回归测试三条 nmake 命令依次完成编译、落盘、验证nmake /F Makefile.win nmake /F Makefile.win install nmake /F Makefile.win installcheck第一条编译 src/ 下全部 C 源码链接出扩展动态库vector.dll结束时能看到它生成、全程无 error 输出即可。第二条负责落盘动态库复制进 PGROOT 的 lib 目录.control 文件和 SQL 脚本放进 share/extension 目录。第三条跑内置回归把 test/sql/ 里类型、距离、索引相关的用例执行一遍全部通过时输出以All N tests passed收尾。架构拿不准或者想重新干净地编译先执行nmake /F Makefile.win clean清掉旧产物再构建。第三步用 4 条 SQL 验收 用 psql 依次执行下面的语句把启用扩展、查版本、建表、灌数据、最近邻查询串成一条完整链路CREATE EXTENSION vector; SELECT vector_version(); 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;vector_version()返回0.8.6说明扩展已可用最近邻查询返回 2 行且[1,2,3]排在[4,5,6]前面此时就可以认定 pgvector 安装成功且能正常查询。报错速查表Windows 上编译出问题多半逃不出下面四种对号入座即可报错原文触发原因修复动作Cannot open include file: postgres.hPGROOT 没指到正确的安装根目录确认该目录下有include\server子目录再在当前会话重新指向并重编error C2196: case value 4 already used在 x64 命令行之外编译二进制架构不匹配换回 x64 Native Tools Command Prompt先执行nmake /F Makefile.win clean再重新编译unresolved external symbol float_to_shortest_decimal_bufn服务端版本落在 PostgreSQL 17.0~17.2 区间升级到 17.3 及以上或改用其他版本Access is denied落盘目标 lib 目录位于C:\Program Files普通权限写不进去以管理员权限重开 VS 原生命令行再执行 install装完之后 4 种向量类型、4 个上限vector最多 2000 维halfvec最多 4000 维bit最多 64000 维sparsevec最多 1000 个非零元素。距离算子各管一摊-L2、#负内积、余弦、L1bit类型另有~和%两个算子。近似索引二选一HNSW 查询更快CREATE INDEX ON items USING hnsw (embedding vector_l2_ops)IVFFlat 构建更快创建时可带参数如WITH (lists 100)。hnsw.ef_search、ivfflat.probes、迭代扫描等进阶调优见仓库自带的 README.md。装完之后路径也是现成的把items里的 3 维示例数据换成你自己的 embedding建一个 HNSW 索引用ORDER BY embedding - [...] LIMIT 5跑出第一条真实的向量相似度查询。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
