news 2026/9/6 17:46:28

PostgreSQL pgvector Windows 安装实操:不另建向量库,跑通第一次向量搜索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL pgvector Windows 安装实操:不另建向量库,跑通第一次向量搜索

PostgreSQL pgvector Windows 安装实操:不另建向量库,跑通第一次向量搜索

【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector

pgvector 给 PostgreSQL 加上了向量相似性搜索,向量数据直接和业务表存在同一个库里。读完这篇,你能在 Windows 上完成 pgvector 的部署,并用 3 条 SQL 验证最近邻检索真的可用。

先选路:预编译包还是源码

决策规则很简单:新手和大多数生产场景,直接用预编译包,十分钟搞定;只有当你需要特定版本、或者要改源码时,才走源码编译这条路。

主流程:预编译包安装

  1. 以管理员身份打开命令提示符,先确认环境。
C:\> postgres --version

输出版本号在 13 及以上即可(本文以 PostgreSQL 16 为例)。顺手看一眼系统盘剩余空间,预留 1GB 以上。这步成功的标志:版本号和磁盘空间都满足要求。

  1. 把编译好的vector.dll拷进 PostgreSQL 的 lib 目录。
copy vector.dll "C:\Program Files\PostgreSQL\16\lib\"
  1. vector.control和全部vector--*.sql脚本拷进扩展目录。
copy vector.control "C:\Program Files\PostgreSQL\16\share\extension\" copy vector--*.sql "C:\Program Files\PostgreSQL\16\share\extension\"

注意 sql 脚本的落点是share\extension,不是share,放错目录后面会报找不到控制文件的错。文件就位后,扩展就具备创建条件了。

  1. 重启 PostgreSQL 服务。
net stop postgresql-x64-16 net start postgresql-x64-16

服务名里的版本号按你的安装调整,也可以在 services.msc 里找到对应服务右键重启。

  1. 连进数据库建扩展。
psql -U postgres
CREATE EXTENSION vector;

没有报错、命令返回CREATE EXTENSION,说明加载成功。

备选:源码编译

这条路线只在需要指定版本或二次开发时用。关键步骤与主流程的差异如下:

  1. 不用普通 cmd,用管理员身份打开 Visual Studio 的 x64 Native Tools Command Prompt,保证编译器和 C++ 工具链就位。
  2. 在命令行内设置 PostgreSQL 安装路径:
set "PGROOT=C:\Program Files\PostgreSQL\16"
  1. 拉取代码并编译安装:
cd %TEMP% git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector nmake /F Makefile.win nmake /F Makefile.win install

install目标会自动把vector.dllvector.control和 sql 脚本拷进对应目录,第 2、3 步的手动复制可以省掉,之后同样重启服务、建扩展。

验收:3 条 SQL 证明功能可用

建一张最小的向量表,写入两条测试数据,再按 L2 距离做一次最近邻查询:

CREATE TABLE product_embeddings ( id SERIAL PRIMARY KEY, embedding vector(3), label text ); INSERT INTO product_embeddings (embedding, label) VALUES ('[1, 2, 3]', 'keyboard'), ('[4, 5, 6]', 'mouse'); SELECT label, l2_distance(embedding, '[3, 1, 2]') AS distance FROM product_embeddings ORDER BY distance LIMIT 2;

预期输出:

label | distance ----------+---------- keyboard | 2.45 mouse | 5.74

keyboard 排第一,说明距离计算和排序都正常,pgvector 已可投入使用。

避坑:Windows 用户最常卡住的 3 处

报"could not open extension control file"vector.control没放进share\extension,多半落错了层级的share目录 → 按第 3 步的路径重新放置,再重启服务。

报"could not load library vector.dll"→ dll 与 PostgreSQL 架构不匹配,或没拷进lib目录 → 确认用的是 64 位编译产物且文件在C:\Program Files\PostgreSQL\16\lib

nmake 提示 PGROOT is not set→ 编译前没在命令行里设置环境变量 → 在 x64 Native Tools 提示符里先执行set "PGROOT=..."再跑 nmake。

装完后:索引与内存

数据量上来后,全表扫描的查询会慢。给向量列建 pgvector HNSW 索引:

CREATE INDEX ON product_embeddings USING hnsw (embedding vector_l2_ops);

几千行以上、且最近邻查询是高频操作时,HNSW 是首选索引类型;几百行的表直接裸查就行,不用建。内存方面,shared_bufferswork_mem按机器实际情况上调即可,具体取值建议参考 PostgreSQL 官方文档的调优章节。

到这里,文本 embedding 可以直接进业务库做相似检索,用户行为向量也能为个性化推荐供数,不用再单独搭一套向量数据库。后续版本升级时,仓库 sql/ 目录里带全套跨版本脚本,一条ALTER EXTENSION vector UPDATE;就能完成迁移,升级前先在测试库跑一遍验证。

【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 17:46:07

机械产品可靠性设计分析:从指标定义到加速寿命试验

简介:这份资源是一份源自北京航空航天大学工程系统工程系的机械产品可靠性设计分析PPT教学案例,聚焦某锁机构,适合机械/航天领域的可靠性工程师、高年级学生及从事装备研制的技术人员参考学习。资源共1个PPT演示文稿,大小约3.9MB&…

作者头像 李华
网站建设 2026/9/6 17:44:59

STC32G12K128计算e常数精确到小数点后9858位的汇编程序

STC32G12K128 单片机简介 STC32G12K128 是一款由宏晶科技 (STC) 生产的32位8051单片机,它的特点是: 32位 8051 架构,但速度比传统的8051约快 70倍。 1.9V 至 5V 工作电压,更适用于多种供电环境。 128K 字节 FLASH,用于存储用户代码。 4K字节内部 SRAM (edata),8K字节内部…

作者头像 李华
网站建设 2026/9/6 17:43:08

EdmondsKarp算法求最大流

EdmondsKarp算法是Ford-Fulkerson算法的特例,区别在于Ford-Fulkerson算法没有给出残存网络中增广路径的寻找方法,而EdmondsKarp算法使用广度优先搜索寻找增广路径 找到增广路径后沿其递增或递减流,得到更大的流,重复下去直到残存网…

作者头像 李华
网站建设 2026/9/6 17:34:18

trivy开源安全漏洞扫描器——筑梦之路

开源地址:https://github.com/aquasecurity/trivy.git 可扫描的对象 容器镜像文件系统Git存储库(远程)虚拟机镜像Kubernetes 在容器镜像安全方面使用广泛,其他使用相对较少。 能够发现的问题 正在使用的操作系统包和软件依赖项…

作者头像 李华