十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

PostgreSQL pgvector Windows 安装方法:编译、验证与索引配置步骤

PostgreSQL pgvector Windows 安装方法:编译、验证与索引配置步骤 PostgreSQL pgvector Windows 安装方法编译、验证与索引配置步骤【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector如果你的 PostgreSQL 运行在 Windows 上需要向量检索能力可以直接从源码编译安装 pgvector 扩展。装完后vector类型就能在任意数据库里使用ORDER BY embedding - 目标向量这类近邻查询立刻可用。整个过程不需要第三方预编译包只依赖官方编译流程。Windows 下安装 pgvector 前置检查动手前先确认三件事PostgreSQL 版本pgvector 支持 13 及以上版本见 README.md 的 Installation 一节。打开psql执行SELECT version();确认。C 编译工具Visual Studio 2019 或更新版本且安装时勾选了 C 桌面开发工作负载。编译报错且找不到postgres.h时多半是这一步没装全。PGROOT 路径指向你的 PostgreSQL 安装目录。默认一般是C:\Program Files\PostgreSQL\17这类形式如果路径不同按实际位置填写。编译脚本Makefile.win会从这里读取include、lib、share目录。命令提示符必须用 Visual Studio 的 x64 Native Tools Command Prompt并以管理员身份运行否则nmake install拷贝文件到Program Files时会因权限失败。源码获取与 pgvector 编译安装进入项目目录后先设置环境变量、拉取源码set PGROOTC:\Program Files\PostgreSQL\17 cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector版本号请以仓库 CHANGELOG 中的最新发布为准上面的v0.8.6是本文核对时的版本。然后执行编译与安装两条命令分别生成vector.dll和把扩展文件拷贝进 PostgreSQL 目录nmake /F Makefile.win nmake /F Makefile.win installinstall成功后%PGROOT%\lib下会出现vector.dllshare\extension下会出现vector.control和各版本的升级 SQL 脚本。如果编译中途失败先用nmake /F Makefile.win clean清掉中间产物再重试。如何确认 pgvector 扩展已生效编译完成不代表能在库里用。在每个需要的数据库里执行一次扩展创建CREATE EXTENSION vector;随后建一张最小测试表并做一次向量查询能返回按距离排序的结果即验证通过CREATE TABLE test_vec (id int, e vector(3)); INSERT INTO test_vec VALUES (1, [1,2,3]), (2, [4,5,6]); SELECT * FROM test_vec ORDER BY e - [3,1,2] LIMIT 5;预期第一条结果是id 1。执行SELECT extversion FROM pg_extension WHERE extname vector;还可以看到当前加载的扩展版本号与仓库 vector.control 中的default_version对照即可。HNSW 还是 IVFFlat 怎么选两种索引都支持 L2、内积、余弦、L1、汉明、Jaccard 等距离度量差异在使用方式上HNSW——查询延迟低、召回稳定插入期间索引持续可用适合读多写少或写入平稳的场景。常用写法CREATE INDEX ON test_vec USING hnsw (e vector_l2_ops);IVFFlat——建索引时先用 k-means 聚类lists 越多分区越细索引体积小一些但对lists取值敏感且建索引需要重扫全表更适合大批量导入数据后一次性建索引的离线场景CREATE INDEX ON test_vec USING ivfflat (e vector_l2_ops) WITH (lists 100);选择原则拿不准就用 HNSW数据基本一次性灌入、对索引体积敏感、可以接受建索引期间的重建开销再考虑 IVFFlat。建索引消耗较多内存大表前可先调大maintenance_work_mem。pgvector 报错排查按现象定位提示 PGROOT is not set环境变量没设置或没生效。当前命令行会话里重新set PGROOT...后再执行nmake。找不到 postgres.h / 大量语法错误PGROOT 指错目录或 Visual Studio 没装 C 组件。先核对目录里确实有include\server子目录。nmake install 报拒绝访问没用管理员权限运行或目标目录只读。换用管理员身份打开的 Native Tools 提示符重试。CREATE EXTENSION vector 报 relation 不存在编译安装没执行或路径没对上检查share\extension里是否有vector.control。查询结果不符合预期确认排序用的是-L2、#内积还是余弦操作符三者对应不同索引操作符类。后续维护升级扩展只需在数据库里执行ALTER EXTENSION vector UPDATE;各版本间的升级脚本sql/目录下的vector--x.x.x--y.y.y.sql会随安装自动就位。日常可以关注两点用EXPLAIN (ANALYZE)观察近邻查询实际走没走索引数据量明显增长后重新评估 HNSW 的m、ef_construction或 IVFFlat 的lists参数。下一步建议在你真实的业务表上先用小批量数据建索引跑一遍召回率对比再决定最终参数。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表