尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

pgvector Windows 编译安装完全指南:从零部署向量检索扩展并跑通 HNSW 索引

pgvector Windows 编译安装完全指南:从零部署向量检索扩展并跑通 HNSW 索引 pgvector Windows 编译安装完全指南从零部署向量检索扩展并跑通 HNSW 索引【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 把向量相似性搜索直接做进了 PostgreSQL——不用另搭向量数据库一张表、一个索引就能跑 Top-K 近邻检索。前提只有一句Windows 上已装好 PostgreSQL 14示例用 16和 Visual Studio 2022安装时勾选C 桌面开发组件。整体思路是先跑通再调优下面这 6 条命令结束前你就能看到第一次成功的相似度查询。 3 分钟跑通从 clone 源码到第一条相似度查询打开x64 Native Tools Command Prompt for VS 2022开始菜单里搜 Native Tools 就能找到依次执行git clone https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector set PGROOTC:\Program Files\PostgreSQL\16 nmake /F Makefile.win nmake /F Makefile.win install第 1 步拉取源码当前 tag 对应 0.8.6 版本线。第 2 步进入项目目录后续命令都依赖这里。第 3 步告诉 Makefile 你的 PostgreSQL 装在哪必须与psql --version的版本一致。第 4 步编译产物是同目录下的vector.dll十几秒到一分钟。第 5 步把 dll、vector.control和 SQL 脚本拷进 PostgreSQL 的安装目录。然后进数据库验证psql -U postgresCREATE EXTENSION vector; CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); INSERT INTO items (embedding) VALUES ([1,2,3]), ([3,1,2]), ([2,1,2]); SELECT id, embedding, embedding - [1,2,3] AS distance FROM items ORDER BY distance LIMIT 1;最后一条查询应该返回id1、distance 0的那行——恭喜向量检索已经在你的机器上转起来了。 这 5 条命令背后发生了什么PGROOT不是可选项Makefile.win 开头就有一行!error PGROOT is not set不设直接罢工。拿到它之后编译参数会自动拼上$(PGROOT)\include\server等头文件路径并追加/O2 /fp:fast开启 MSVC 自动向量化如果你的 PostgreSQL 是 19还会自动补/std:c11。install目标做的则是一次三件套拷贝vector.dll→PGROOT\libvector.control加全部sql\vector--*.sql升级脚本 →PGROOT\share\extension另有几个头文件进include\server\extension\vector供 PL/pgSQL 等场景引用。文件落位后CREATE EXTENSION才有东西可读。 能力速览四种类型、四种距离、两类索引数据类型存什么HNSW 索引维度上限vector单精度浮点通用首选2,000halfvec半精度浮点体积减半4,000bit0/1 二进制适合二分类 embedding64,000sparsevec稀疏向量只存非零项1,000 个非零项操作符语义-L2欧氏距离#负内积Postgres 索引只支持 ASC 扫描故取负余弦距离配合1 - 即余弦相似度L1曼哈顿距离索引类型适用场景hnsw多层图结构查询延迟稳定支持持续插入ivfflat聚类倒排构建快、占内存低适合静态数据✅ 验证与自检三个对照确认装对了对照 1版本号SELECT extversion FROM pg_extension WHERE extname vector;预期输出extversion ------------ 0.8.6对照 2索引真的能建CREATE INDEX ON items USING hnsw (embedding vector_l2_ops); EXPLAIN ANALYZE SELECT * FROM items ORDER BY embedding - [1,2,3] LIMIT 1;预期输出计划里出现Index Scan using ... hnsw小表可能回退为 Seq Scan属正常。对照 3官方回归测试全绿nmake /F Makefile.win installcheck预期输出结尾是All 15 tests passed.它跑的是 test/sql/ 下 15 个用例覆盖四种类型、两种索引和距离函数。 高频踩坑三条真实高发问题现象nmake刚启动就报PGROOT is not set。原因Makefile.win对PGROOT是硬校验没设就中断。解法set PGROOTC:\Program Files\PostgreSQL\16路径里的版本号换成你实际装的版本用psql --version核对一遍。现象编译报crtdefs.h之类的头文件找不到C1083 刷屏。原因你用的是普通 cmd而不是 VS 开发者命令提示符cl的编译环境包含 Windows SDK 路径根本没初始化。解法从开始菜单重新打开 x64 Native Tools Command Prompt先敲cl确认能输出版本信息再跑nmake。现象CREATE EXTENSION vector;报could not open extension control file。原因install没执行成功share\extension里没有vector.control——通常是编译那一步已经失败但没注意。解法确认源码目录生成了vector.dll重新nmake /F Makefile.win install然后重启 PostgreSQL 服务。⚡ 进阶调优三个最值钱的旋钮maintenance_work_mem建 HNSW 索引前临时调大如SET maintenance_work_mem 1GB;数据量大时构建速度明显提升。hnsw.ef_search查询时调大它换更高召回率默认 40适合对漏检敏感、对延迟没那么苛刻的场景。max_parallel_maintenance_workersHNSW 构建支持并行机器多核时调大如 4可把建索引时间压到几分之一。跑通之后自然的下一步是把真实 embedding 灌进表里、加上hnsw索引压测延迟或者翻一翻 test/sql/ 里的用例——那里面的查询写法基本就是你日常会用到的全部姿势。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表