pgvector Docker 镜像拉不到?搞懂标签规则后一劳永逸
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
拉 pgvector Docker 镜像,latest 标签报 not found?pgvector 是 PostgreSQL 向量扩展,它的镜像标签跟着 PostgreSQL 主版本走。这篇把原因讲清楚,并告诉你怎么选对标签。
你大概率会看到什么:pgvector 没有 latest
docker pull pgvector/pgvector直接报错:not found 或 no matching manifest。手动加上 latest 标签也一样拉不到。不是你名字打错了,这个镜像就是没有 latest。
背后逻辑:镜像版本对应为什么长这样
pgvector 镜像就是在官方 postgres 镜像里把向量扩展编译了进去。扩展用 C 语言对接 PG 内部接口,ABI 兼容只在同一主版本内保证,PG 主版本一换,扩展可能要重新编译。所以镜像标签直接绑定 PG 主版本:pg16 只配 PG 16,也不提供 latest,免得装出不兼容的组合。就像手机壳,先确定机型才谈得上合不合身。
按你的场景对号入座
我本地已经跑着 PostgreSQL
跑一下psql --version(或在库里执行SELECT version();),看本地 PG 主版本。比如是 16,就拉对应标签:
docker pull pgvector/pgvector:pg16其余版本同理:PG 15 用 pg15,PG 17 用 pg17,规则都是 pg 加主版本号。
我要从零拉起一套带向量的 PG
从零开始的话,compose 里直接写死镜像,主版本按需替换:
services: postgres: image: pgvector/pgvector:pg16 # 按需替换主版本号 environment: POSTGRES_PASSWORD: example volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:docker compose up -d起来之后,用法和官方 postgres 镜像完全一样。
确认它真的能用了
启动后跑两条命令验证:先建扩展,再跑一条向量类型查询:
docker exec -it mypg psql -U postgres -c "CREATE EXTENSION vector;" docker exec -it mypg psql -U postgres -c "SELECT '[1,2,3]'::vector;"第二条能返回向量值就 OK。如果 CREATE EXTENSION 报 module not available,基本就是镜像和 PG 版本没对上,回到标签处检查。
容易踩的坑
- 标签写成了 pgvector:latest
- PG 16 用了 pg15 镜像,扩展创建失败
- 拉了镜像忘了执行 CREATE EXTENSION
- 开发、生产 PG 主版本不一致,行为对不上
拉镜像的规则其实就一条:查 PG 主版本,拼在 pg 后面。写法多了点动作,换来的是每个环境版本都对得上,排查问题也省心力。
【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考