资讯动态

5 分钟跑通 pgvector:从安装到第一条向量相似度查询

发布时间:2026/9/18 14:03:00 来源:尧图企业网站定制
5 分钟跑通 pgvector从安装到第一条向量相似度查询【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector用户搜“红色裙子”却搜不到“酒红色连衣裙”关键词检索到头了向量搜索接得上。pgvector 是给 Postgres 增加向量相似度搜索的开源扩展。读完这篇你把它装上并能跑出自己的第一条最近邻查询。先花 30 秒判断要不要用先看三个条件已用或准备用 Postgres想顺带存向量查询是“给个向量找最相似的 top n”能接受近似搜索不想再引入一个独立的向量数据库最低要求一行一条Postgres 13 及以上Docker最快路径或 C 编译器gcc make手动编译Windows 需要 Visual Studio 的 C 生成工具安装 pgvector 最短路径 最快路径用官方 pgvector 镜像直接跑 Postgres扩展已经编好不用自己编译。docker run -d --name pgv -e POSTGRES_PASSWORDpostgres -p 5432:5432 pgvector/pgvector:pg17然后在数据库里启用扩展。每个要用它的库都要执行一次。docker exec -it pgv psql -U postgres -c CREATE EXTENSION vector;没有报错就是装好了。想确认版本执行SELECT extversion FROM pg_extension WHERE extname vector;。已有自己的 Postgres、不想换那就克隆源码编译。git clone --branch v0.8.6 https://gitcode.com/GitHub_Trending/pg/pgvector cd pgvector make make installWindows 上打开 x64 Native Tools Command Prompt把PGROOT指向 Postgres 安装目录make换成nmake /F Makefile.win。拿你自己的数据跑向量相似度查询搭一个小场景一张商品表每个商品带一个名字向量你想用“酒红色连衣裙”的向量找最像的商品。演示用 3 维小向量真实嵌入模型输出 768~1536 维换掉数字写法一样。建表embedding列是固定 3 维的向量列。CREATE TABLE products ( id bigserial PRIMARY KEY, name text, embedding vector(3) );插几条数据向量随手选的让“连衣裙”和“衬衫”方向明显分开。INSERT INTO products (name, embedding) VALUES (红色连衣裙, [0.10, 0.90, 0.20]), (酒红色连衣裙, [0.15, 0.85, 0.25]), (白色衬衫, [0.90, 0.10, 0.10]), (牛仔裤, [0.85, 0.20, 0.15]);查询用余弦距离算子值越小越相似所以直接 ORDER BY再用 1 减距离得到相似度。SELECT name, 1 - (embedding [0.13, 0.87, 0.23]) AS similarity FROM products ORDER BY embedding [0.13, 0.87, 0.23] LIMIT 3;跑对了长这样name | similarity ------------------------- 酒红色连衣裙 | 0.99927 红色连衣裙 | 0.99858 牛仔裤 | 0.39598查询向量靠近“红色裙子”排在前面的正是两件连衣裙这就是向量搜索要的效果。数据多了精确搜索要扫全表会变慢加一个 HNSW 索引。CREATE INDEX ON products USING hnsw (embedding vector_cosine_ops);注意HNSW 是近似搜索。建完索引后查询结果可能和之前略有差异这是正常的不是 bug。踩了才记得住的坑⚠️ 这些问题在 README 的 Troubleshooting 一节都有对应说明。现象原因解法CREATE EXTENSION报extension vector is not available这个 Postgres 服务器没装扩展换用 pgvector 镜像或在目标服务器上make install后重启服务编译报postgres.h: No such file or directory缺 Postgres 开发头文件sudo apt install postgresql-server-dev-16数字跟你的版本走EXPLAIN显示Seq Scan没走索引ORDER BY不是距离算子本身或缺LIMIT写成ORDER BY embedding ... LIMIT n建了 HNSW 索引后返回行数变少默认hnsw.ef_search 40限制了候选数SET hnsw.ef_search 100;Windows 编译报case value 4 already used用错了架构的命令行打开 x64 Native Tools Command Prompt 重新编译数据量上去了再调这些hnsw.ef_search默认 40。召回率低时调到 100~200越大越准但越慢建索引时机先把初始数据灌完再建构建时SET maintenance_work_mem 8GB;图放进内存里构建会快很多别大到耗尽服务器内存现在你手里有一个能存向量、能用查最近邻、能用 HNSW 加速的 Postgres。下一步翻 README.md 看全部距离算子和调优参数跑一遍 test/sql/ 里的现成 SQL看看扩展自己的测试用例怎么写。怀疑遇到 bug 时先查 CHANGELOG.md 确认是否已修复。【免费下载链接】pgvectorOpen-source vector similarity search for Postgres项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价