pgvector 安装教程:在 Windows 上给 PostgreSQL 加上向量搜索能力

📅 发布时间:2026/9/6 21:42:23
pgvector 安装教程:在 Windows 上给 PostgreSQL 加上向量搜索能力
pgvector 安装教程在 Windows 上给 PostgreSQL 加上向量搜索能力【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector在 Windows 上给 PostgreSQL 装向量搜索能力最容易卡住的不是数据库本身而是源码编译这一步找不到头文件、nmake 报错、装完却CREATE EXTENSION失败。下面把整条链路拆成检查—编译—验证—排错四段照着走就能把 pgvector 跑起来。pgvector 是一个 PostgreSQL 扩展让你在现有数据库里直接存向量、建向量索引、做最近邻搜索不用另外搭一套向量数据库。它支持vector、halfvec、sparsevec、bit四种类型提供 HNSW 和 IVFFlat 两类近似索引距离度量覆盖 L2、内积、余弦、L1。安装前先核对这份环境清单这一步完成后你能确认编译环境没问题避免 90% 的找不到头文件 / 链接失败报错。PostgreSQL 13pgvector 当前版本兼容 13 到 18。打开命令行执行psql --version确认版本。Visual Studio 含 C 工作负载编译走 MSVC必须装C 桌面开发组件而不是只装基础 IDE。Git 命令行用于拉取源码。关键一点编译和安装都要在x64 Native Tools Command Prompt for VS里进行并且以管理员身份打开它。普通 cmd 没有 MSVC 的 PATH 和宏环境nmake会直接报不是内部或外部命令。三步完成 pgvector 源码编译安装这一步完成后vector.dll会被拷进 PostgreSQL 的lib目录扩展文件进入share/extension数据库就能识别它了。以管理员身份打开x64 Native Tools Command Prompt for VS。设置 PGROOT 指向你的 PostgreSQL 安装根目录注意是含bin、include、lib的那一层set PGROOTC:\Program Files\PostgreSQL\18拉取源码并进入目录cd %TEMP% git clone https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector编译并安装nmake /F Makefile.win nmake /F Makefile.win install成功的标志第二条命令跑完后$(PGROOT)\lib下出现vector.dll$(PGROOT)\share\extension下出现vector.control和一批vector--*.sql文件。Makefile.win 会检查 PGROOT未设置时直接报错退出所以第 2 步不能省。五分钟验证 pgvector 是否装好这一步完成后你能用一段最小 SQL 证明类型可用、索引可建、查询可跑把安装问题和使用问题彻底分开。用psql连进你要用的那个库扩展按库启用每个库都要单独执行一次CREATE EXTENSION vector;成功的标志无报错。若提示could not open extension control file说明上一步安装没成功或连错了库的实例。建一张 3 维测试表并插入数据CREATE TABLE test_items ( id bigserial PRIMARY KEY, embedding vector(3) ); INSERT INTO test_items (embedding) VALUES ([1,2,3]), ([4,5,6]);按 L2 距离做最近邻查询SELECT * FROM test_items ORDER BY embedding - [3,1,2] LIMIT 5;成功的标志能按距离升序返回结果。-是 L2 距离另外还有内积#、余弦、L1。两种向量索引怎么选这一步完成后你能按数据规模和写入频率选对索引类型避免建了索引却没被查询用上的浪费。维度HNSWIVFFlat适用场景默认首选查询快内存敏感、数据静态建索引代价较高图结构需先跑 k-means 聚簇写入/更新较友好更适合批量关键参数m、ef_constructionlists约 √N 起步建索引示例二选一CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists 100);两个实用调优点建 IVFFlat / 大表 HNSW 前调大maintenance_work_mem如SET maintenance_work_mem 2GB;能明显加速带WHERE过滤的近似查询可能少返回结果pgvector 0.8.0 起支持迭代式索引扫描会自动多扫索引直到凑够条数。一张表看懂 pgvector 常见报错报错现象可能原因处理办法PGROOT is not set没设 PGROOT 或设错用set指到含include/lib的根目录找不到postgres.h路径指向了数据目录指到安装根目录不是data子目录nmake不是内部命令没用 VS 工具命令行改用管理员身份的 x64 Native Tools Prompt链接失败 / 找不到postgres.lib没装 PostgreSQL 完整包重装时勾上开发库/组件CREATE EXTENSION报 control file 不存在上一步 install 未完成重跑nmake /F Makefile.win install编译期内存/权限报错非管理员运行以管理员身份打开命令行重试下一步建议先在你的真实表上把 HNSW 索引建起来用EXPLAIN (ANALYZE, BUFFERS)观察索引是否真的被命中。维度较高或数据量大时对比 HNSW 与 IVFFlat 的召回率和延迟再定参数。关注 CHANGELOG 跟进版本更新升级用ALTER EXTENSION vector UPDATE;。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考