ARTICLE DETAIL

资讯详情

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

Windows 安装 pgvector 0.8.6 完整流程:从编译到向量检索只需 3 步

Windows 安装 pgvector 0.8.6 完整流程:从编译到向量检索只需 3 步 Windows 安装 pgvector 0.8.6 完整流程从编译到向量检索只需 3 步【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvectorpgvector 是一个开源的向量相似度搜索扩展装上它之后你不需要单独的向量数据库直接就能在 PostgreSQL 里存储向量、按距离检索。本文带你完成 pgvector 0.8.6 的 PostgreSQL Windows 安装从编译环境到可执行检索全程约 10 分钟照做即可。前置准备确认版本与工具链安装前把下面这张表过一遍。版本不匹配是 Windows 下最常见的失败原因。组件要求说明PostgreSQL13 及以上64 位建议直接装 180.8.1 起官方开始支持 Postgres 18Visual Studio 2019/2022含 C 桌面工作负载安装器里勾选使用 C 的桌面开发组件Git任意近期版本用于拉取 pgvector 源码pgvectorv0.8.6 标签即本文示例版本最容易踩的兼容坑PostgreSQL 必须是 64 位版本而编译命令必须使用 x64 工具命令提示符。32 位的 PostgreSQL 配上 64 位编译器会在链接阶段直接报错。编译环境怎么打开x64 Native Tools 提示符在 Windows 开始菜单搜索x64 Native Tools Command Prompt for VS 2022选择以管理员身份运行。这一步的意义有两点它把 Visual Studio 的 C 编译器和nmake工具加载进当前会话管理员权限则避免后续写Program Files目录时被拒绝。成功的标志是提示符开头显示x64 Native Tools Command Prompt字样。六步完成安装设置 PGROOT 到 nmake install下面六条命令在同一个窗口依次执行。设置 PostgreSQL 根目录。Makefile.win靠这个变量找postgres.h等头文件和链接库路径改成你实际安装的版本目录默认是C:\Program Files\PostgreSQL\18。rem 把 18 换成你实际安装的 PostgreSQL 版本目录 set PGROOTC:\Program Files\PostgreSQL\18成功标志后续编译不再报找不到头文件。拉取指定版本的源码固定版本保证可复现。cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector成功标志克隆完成后当前目录为pgvector里面有Makefile.win。编译。nmake会把src下的 C 源文件编译成目标文件链接出vector.dll编译参数自带/O2 /fp:fast自动向量化。nmake /F Makefile.win成功标志末尾打印类似... vector.obj ... - vector.dll的链接结果没有任何error。安装到 PostgreSQL 目录。nmake /F Makefile.win install成功标志%PGROOT%\lib下多出一个vector.dll%PGROOT%\share\extension下多了vector.control和vector--0.8.6.sql。用 psql 连上数据库启用扩展CREATE EXTENSION vector;成功标志返回CREATE EXTENSION且SELECT extversion FROM pg_extension WHERE extname vector;查到 0.8.6。到此完成。扩展默认装到postgres库之外的每个库都需要单独执行一次CREATE EXTENSION记住这一点能省不少排查时间。验收一条 SQL 证明安装成功下面这段最小脚本建表→插两条向量→按距离检索跑通即代表安装成功。CREATE TABLE demo_items ( id bigserial PRIMARY KEY, embedding vector(3) ); INSERT INTO demo_items (embedding) VALUES ([1,2,3]), ([4,5,6]); SELECT id, embedding FROM demo_items ORDER BY embedding - [3,1,2] -- - 为 L2 距离 LIMIT 5;预期输出两行且[1,2,3]排在第一行——因为它离查询向量更近。接着看一个真实场景语义搜索。把一段文本的嵌入向量存进表检索时同样用距离排序CREATE TABLE docs ( id bigserial PRIMARY KEY, content text, embedding vector(4) ); INSERT INTO docs (content, embedding) VALUES (产品使用手册, [0.9, 0.1, 0.0, 0.1]), (退货政策说明, [0.1, 0.8, 0.1, 0.0]); SELECT content, 1 - (embedding [0.85, 0.2, 0.05, 0.1]) AS similarity FROM docs ORDER BY embedding [0.85, 0.2, 0.05, 0.1] -- 余弦距离越小越相似 LIMIT 1;输出应为产品使用手册similarity 接近 1。-是 L2 距离是余弦距离#是内积按业务语义选择即可。进阶HNSW 还是 IVFFlat怎么选数据量上万后顺序扫描就不够用了需要建近似索引。pgvector 提供两种维度HNSWIVFFlat查询表现召回与速度平衡好同召回下更慢构建成本慢、占内存多快、占内存少写入代价插入略慢插入较快适合场景在线查询为主冷数据、内存紧张关键参数m默认 16lists起点可取行数 / 1000两种索引的创建方式CREATE INDEX ON demo_items USING hnsw (embedding vector_l2_ops); CREATE INDEX ON demo_items USING ivfflat (embedding vector_l2_ops) WITH (lists 100);调优参数只需要记两个hnsw.ef_search默认 40建好 HNSW 后SET hnsw.ef_search 100;可提高召回代价是变慢查询里加过滤条件时建议同时开启迭代扫描否则结果可能不足LIMIT条。maintenance_work_mem构建大索引前调大例如SET maintenance_work_mem 2GB;。图能装进内存时 HNSW 构建显著更快装不下时 PostgreSQL 会打印 NOTICE 提醒你加大。高频排错 FAQ1. 编译报Cannot open include file: postgres.h现象nmake 一启动就报找不到头文件。原因PGROOT没设置或指向了错误版本的 PostgreSQL 目录。修复按实际路径重设PGROOT后再执行nmake /F Makefile.win。2. 报error C2196: case value 4 already used现象编译中途报 C2196。原因32 位与 64 位架构不匹配例如用了普通命令提示符或 x86 工具。修复改用 x64 Native Tools Command Prompt先执行nmake /F Makefile.win clean再重新编译安装。3. 安装报Access is denied现象编译通过install 阶段复制文件失败。原因当前窗口没有管理员权限无法写入 PostgreSQL 安装目录。修复以管理员身份重开 x64 Native Tools Command Prompt重新执行 install。4. Postgres 17.0–17.2 链接报unresolved external symbol float_to_shortest_decimal_bufn现象编译全部通过最终链接失败。原因该符号在 17.0–17.2 的postgres.lib中缺失属于已知问题。修复把 PostgreSQL 升级到 17.3 或更高版本再编译。版本升级也简单装好新版文件后执行ALTER EXTENSION vector UPDATE;0.8.1 到 0.8.6 的迁移脚本仓库里都已内置sql目录下的升级脚本可参考。结语到这里pgvector 在你的 Windows 环境中已具备完整的向量存储与检索能力后续工作主要是围绕业务调索引参数。更多细节——量化、迭代扫描、稀疏向量——可直接查阅项目仓库内的 README 与 src/ 源码动手比看文档更快。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表