ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

pgvector Windows 安装完整指南:3 条命令在 PostgreSQL 中启用向量搜索

pgvector Windows 安装完整指南:3 条命令在 PostgreSQL 中启用向量搜索 pgvector Windows 安装完整指南3 条命令在 PostgreSQL 中启用向量搜索【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 是一个为 PostgreSQL 增加向量相似性搜索能力的开源扩展装好之后你可以直接用 SQL 完成最近邻查询、余弦相似度排序不用额外部署向量数据库。下面以 Windows 为例讲清楚三种安装路线怎么选、怎么编译、装完怎么验证以及编译期最常踩的几个坑。先做决策三条安装路线怎么选动手前花 30 秒对号入座能少走很多弯路路线适合谁特点源码编译nmake需要指定版本、想改 C 代码的人最灵活本文章主线Docker 官方镜像用 Docker Desktop 开发的人零编译镜像内已预装扩展conda-forge环境本身用 conda 管理conda install一条命令如果你本机已有 PostgreSQL 服务、想让扩展随服务直接生效就走源码编译。主路径用 nmake 在 Windows 上编译 pgvector两个前置条件Visual Studio 的 C 工作负载必须安装使用 C 的桌面开发组件nmake和 MSVC 编译器来自这里。PostgreSQL 13以 16 为例记住它的安装根目录后面要告诉编译器。设置 PGROOT 并取回源码打开x64 Native Tools Command Prompt for VS必须是 x64 版后面会解释为什么逐行执行set PGROOTC:\Program Files\PostgreSQL\16→ 把编译器指向你的 Postgres 根目录不设置它 nmake 会直接报PGROOT is not set并终止检查逻辑在 Makefile.win 第 24–26 行。git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector→ 锁定 v0.8.6当前稳定版避免最新版悄悄变动。一行编译、一行安装nmake /F Makefile.win nmake /F Makefile.win install→ 第一条把src\下所有 C 文件编译链接成vector.dll第二条把 DLL 复制到%PGROOT%\lib、把vector.control和sql\vector--*.sql复制到%PGROOT%\share\extension。看到copy输出无报错即完成。注意Windows 上不要用标准make仓库里的 Unix 版 Makefile 会执行uname等命令报CreateProcess(NULL, uname -s, ...) failed就是这个原因。用 3 条 SQL 验证安装启动 Postgres 服务后进入psql在每个要用的数据库里执行一遍CREATE EXTENSION vector;→ 注册扩展成功后输出CREATE EXTENSION。SELECT extname, extversion FROM pg_extension WHERE extname vector;→ 应返回一行vector | 0.8.6版本号与 vector.control 中default_version一致。SELECT [1,2,3]::vector;→ 返回[1,2,3]说明vector类型已可用。三条都通过安装就算成功。5 分钟体验向量相似性搜索CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([4,5,6]);→ 建表时vector(3)指定 3 维向量用[x,y,z]字面量写入。SELECT * FROM items ORDER BY embedding - [3,1,2] LIMIT 5;→-按 L2 距离升序取最近 5 条[1,2,3]应排在第一。四种距离算子怎么选算子距离典型场景-L2通用最近邻余弦文本嵌入、语义检索#内积返回负值因为索引扫描只支持 ASC相关性打分L1特定分布数据数据量上来后加索引两种访问方法对比索引特点建议HNSW无需预训练、召回率高、内存占用大多数场景默认选它IVFFlat需指定lists参数先跑 K-means 聚类、内存小静态大批量数据CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);→ 注意算子类要和查询算子匹配上面建的是 L2查内积或余弦要另建vector_ip_ops/vector_cosine_ops。pgvector 编译报错速查按现象 → 原因 → 解决排查现象可能原因解决PGROOT is not setnmake 启动即停未定义 PGROOT先set PGROOT...再编译Cannot open include file: postgres.hPGROOT 指错目录或装了多个版本指向了没带开发头文件的那个核对pg_config --includedir-server改对 PGROOTerror C2196: case value 4 already used在 x86 或普通命令行里编译架构不匹配换x64 Native Tools Command Prompt执行nmake /F Makefile.win clean后重新编译unresolved external symbol float_to_shortest_decimal_bufnPostgres 17.0–17.2 的已知符号缺失升级 Postgres 到 17.3 及以上Access is deniedinstall 阶段无写C:\Program Files的权限用管理员身份重开命令行再执行 installCreateProcess(NULL, uname -s, ...) failed误用了 Unix 版 Makefile改用nmake /F Makefile.win版本配套与进阶动作当前稳定版0.8.62026-07-29 发布修复了 IVFFlat 在 32 位系统的缓冲区溢出等问题0.8.7 尚在开发中变更记录见 CHANGELOG.md。0.8.0 起新增了迭代式索引扫描和sparsevec数组转换向量特别多时可尝试binary_quantize量化压缩相关实现分别在 src/hnsw.c 和 src/bitutils.c。想确认自己装的环境是否完全健康可以跑一遍回归测试nmake /F Makefile.win installcheck→ 执行 test/sql/ 下全部用例覆盖 hnsw、ivfflat、各向量类型全部ok即环境无误。下一步建议① 给你的向量表建 HNSW 索引后用EXPLAIN ANALYZE对比有无索引的耗时差异② 用ALTER TABLE ... ALTER COLUMN embedding SET DATA TYPE vector(768)把 demo 升到真实嵌入维度跑一次余弦距离检索。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表