Windows部署pgvector向量搜索扩展:三步装完,两句验证,一次生效
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
pgvector是PostgreSQL的开源向量搜索扩展,装好之后,embedding向量可以直接躺在普通表里,建个HNSW向量索引,一条SQL就能跑相似性查询。从拉源码到验证跑通,全程不超过一杯茶的时间。
它到底帮你省了什么
装完,你的Postgres立刻多出这些东西,不用再维护一套独立向量库:
| 类别 | 选项 | 备注 |
|---|---|---|
| 向量类型 | vector/halfvec/bit/sparsevec | 上限分别约2000 / 4000 / 64000维,稀疏向量专攻高维稀疏 |
| 距离算子 | <->L2、<#>内积(取负)、<=>余弦、<+>L1 | 还支持Hamming、Jaccard,全部可建索引加速 |
| 索引类型 | HNSW(图结构,查询快)、IVFFlat(构建快) | 多数场景默认选HNSW |
而且向量照样享受ACID事务、JOIN、时间点恢复,Postgres该有的它都有。
动手前先过一遍清单
| 项目 | 要求 | 漏了会怎样 |
|---|---|---|
| PostgreSQL | 14+(推荐16/18) | 编译要借它的头文件和库,没装好nmake当场报错 |
| Visual Studio | 2019+,勾选"C++ 桌面开发"工作负载 | 不勾编译直接倒在crtdefs.h上 |
| Windows SDK | 10.0.19041+ | 装VS时漏掉就得回去重装组件 |
| Git | 任意较新版本 | 源码都拉不下来,第一步就卡死 |
装的过程,其实就这几行
① 拉源码。打开终端执行:
cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector.git cd pgvector放临时目录就行,装完不用管它。
② 把PGROOT指到你的PostgreSQL安装目录。Makefile.win靠这个环境变量定位头文件、库文件和安装目标,没设它会直接喊PGROOT is not set。
set PGROOT=C:\Program Files\PostgreSQL\16 set PATH=%PGROOT%\bin;%PATH%③ 终端切到VS的"x64 Native Tools Command Prompt"(换别的shell会缺SDK依赖),开始编译:
nmake /F Makefile.win nmake /F Makefile.win install泡杯咖啡的功夫它基本编完了。第二条命令把vector.dll和SQL文件拷进PGROOT对应目录,部署闭环完成。
绿灯测试——两句话确认没白装
连上数据库,执行:
CREATE EXTENSION vector; SELECT vector_version();第二条返回0.8.6,绿灯亮了。想跑完整回归,命令行再补一行,它会把test/sql/下的全部用例过一遍,类型转换、索引构建、距离函数都覆盖:
nmake /F Makefile.win installcheck编译翻车急救包 ⚠️
终端突然变红别慌,九成问题在下面这张表里:
| 现象 | 原因 | 解法 |
|---|---|---|
Cannot open include file: 'postgres.h' | PGROOT没设或重开了终端 | 当前会话重敲set PGROOT=C:\Program Files\PostgreSQL\16 |
找不到crtdefs.h | 终端不对或VS缺SDK | 换x64 Native命令行;VS安装器里补装"C++ 生成工具" |
C2196case value already used | 没在VS原生环境编译 | 切对命令行后执行nmake /F Makefile.win clean重编 |
链接报unresolved external symbol | Postgres 17.0–17.2兼容问题 | 升级Postgres到17.3+再编 |
让它更快
maintenance_work_mem调大 → HNSW构建明显提速,8GB是好起点- 大表建HNSW开并行worker → 记得同步抬高
max_parallel_workers hnsw.ef_search调高 → 用速度换召回ivfflat.probes调高 → 同样换召回,初值可取sqrt(lists)
召回不达标时先确认索引选型——小表直接顺序扫描往往比硬上索引更稳。
向量搜索就在手边。下一步:建张表灌入embedding,用ORDER BY embedding <-> '[1,2,3]' LIMIT 5跑第一条查询试试手。
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考