pgvector 是什么、怎么安装和使用:在 PostgreSQL 里存向量、查最近邻、建索引

pgvector 是什么、怎么安装使用?按官方 README 讲清它给 PostgreSQL 加了什么、源码与 Docker 两种安装方式、四条 SQL 完成建表插入查询、六个距离运算符的含义、HNSW 与 IVFFlat 两种索引怎么选怎么调,以及 2000 维的索引上限怎么绕过。

NNathaniel bigo··原创首发·AI 辅助撰写
7 分钟读完
资料核对于 2026-10-11 · 依据官方文档与公开资料整理 免费账号 账号
本文根据 pgvector 官方仓库 README 整理,资料核对于 2026-10-11。文中命令和 SQL 取自官方 README,没有在本机运行验证。

适用于谁

  • 搜「pgvector 是什么」「pgvector 安装」「pgvector 教程」「pgvector docker」的人;
  • 业务数据已经在 PostgreSQL 里,做 RAG 或语义搜索时不想再多维护一个向量数据库的人;
  • 用上了 pgvector,但数据一多查询就变慢,不知道索引该怎么建的人。

结论先说

  1. pgvector 是 PostgreSQL 的一个开源扩展,给它加上向量相似度搜索,向量可以和其他业务数据存在同一个库、同一张表里。
  2. 支持 PostgreSQL 13 及以上。
  3. 用法就是 SQL:CREATE EXTENSION vector; 之后,多了一个 vector 列类型和几个距离运算符。
  4. 不建索引时是精确搜索,结果完全准确但数据多了会慢;建了近似索引会更快,代价是召回率略降。
  5. 索引首选 HNSW。官方的评价是它在速度和召回率之间的平衡更好,代价是建索引更慢、更占内存。
  6. vector 类型最多能给 2,000 维建索引。维度更高的嵌入要用半精度或二值量化。

一、它提供了什么

  • 精确和近似的最近邻搜索;
  • 四种向量类型:单精度 vector、半精度 halfvec、二值 bit、稀疏 sparsevec;
  • 六种距离:L2、内积、余弦、L1、汉明、杰卡德。

因为它就在 PostgreSQL 里,事务、备份、权限、关联查询这些能力照常可用。比如「只在当前用户有权限看的文档里做语义搜索」,就是一条带 WHERE 的普通 SQL。

二、安装

Linux 和 Mac(从源码编译)

sh
cd /tmp
git clone --branch v0.8.7 https://github.com/pgvector/pgvector.git
cd pgvector
make
make install # may need sudo

Docker

sh
docker pull pgvector/pgvector:pg18-trixie

镜像里是已经装好 pgvector 的 PostgreSQL,本地试用最省事。

Windows:官方的做法是在 Visual Studio 里安装 C++ 支持,以管理员身份打开「x64 Native Tools Command Prompt for VS」,设置 PGROOT 为 PostgreSQL 的安装路径,克隆同一个版本标签后用 nmake /F Makefile.win 编译并安装。完整命令见 README。

其他方式:README 还列了 Homebrew、PGXN、APT、Yum、conda-forge 等包管理器;许多托管的 PostgreSQL 服务也已经提供这个扩展,用云数据库的先查一下厂商文档,往往不需要自己安装。

三、四条 SQL 上手

sql
CREATE EXTENSION vector;
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
  1. 在当前数据库里启用扩展(每个要用它的数据库执行一次);
  2. 建一张带向量列的表,vector(3) 表示 3 维。实际使用时括号里是嵌入模型的输出维度;
  3. 插入向量,写法是方括号包住、逗号分隔的字符串;
  4. 按 L2 距离找出离 [3,1,2] 最近的 5 条。

实际的表通常还有原文、来源等列,向量列只是其中一列。

四、六个距离运算符

运算符含义
<->L2 距离(欧氏距离)
<#>负内积
<=>余弦距离
<+>L1 距离(曼哈顿距离)
<~>汉明距离(二值向量)
<%>杰卡德距离(二值向量)

两点说明:

  • <#> 返回的是负内积,所以同样是 ORDER BY ... LIMIT 取最小值,得到的是内积最大的;
  • 用哪种距离,看嵌入模型的文档建议。文本嵌入最常用的是余弦距离。建索引时选的运算符类要和查询时用的距离一致,否则索引用不上。

五、建索引:HNSW 还是 IVFFlat

HNSW

sql
CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);
  • 官方评价:速度与召回率的平衡更好,但建索引更慢、占用内存更多;
  • 建索引时的两个参数:m(默认 16)和 ef_construction(默认 64),写法是 WITH (m = 16, ef_construction = 64);
  • 查询时的参数 hnsw.ef_search 默认 40,调大可以提高召回率,代价是变慢。

IVFFlat

sql
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
  • 官方评价:建索引更快、占内存更少,但查询性能较低;
  • 要在表里有了数据之后再建;
  • lists 的取值建议:100 万行以内用「行数 / 1000」,超过 100 万行用「行数的平方根」;
  • 查询时的 ivfflat.probes 从「lists 的平方根」起步,调大提高召回率、降低速度。

怎么选:

情况建议
数据量小(几千到几万行)可以先不建索引,精确搜索就够快,而且结果完全准确
一般情况HNSW
内存紧张,或者需要很快建完索引IVFFlat

示例里的 vector_l2_ops 对应 L2 距离。用余弦距离查询时,建索引要换成对应余弦的运算符类,名称见 README 的索引一节。

六、维度上限

类型最多可存储最多可建索引
vector16,000 维2,000 维
halfvec16,000 维4,000 维
bit64,000 维
sparsevec16,000 个非零元素1,000 个非零元素(HNSW)

嵌入模型的输出超过 2,000 维时,README 给的办法:

  • 用半精度向量或半精度索引,可以到 4,000 维;
  • 用二值量化,可以到 64,000 维;
  • 或者对子向量建索引、做降维。

有的嵌入模型支持指定较低的输出维度,在调用时直接取一个 2,000 以内的维度也是常见做法,以所用模型的文档为准。

七、混合搜索

README 说明 pgvector 可以和 PostgreSQL 自带的全文搜索配合使用,两路结果可以用 Reciprocal Rank Fusion(倒数排名融合)或交叉编码器合并。

用户的问题里有型号、编号、专有名词这类必须精确匹配的词时,只靠向量搜索容易漏,加上全文搜索会稳很多。

常见问题

Q:一张表能存多少向量?

README 的回答:非分区表默认最大 32 TB;分区表可以有成千上万个这样的分区。

Q:建了索引,结果变少或者和之前不一样?

近似索引本来就是用少量召回率换速度。调大 hnsw.ef_search 或 ivfflat.probes 可以提高召回率。

Q:CREATE EXTENSION vector 报错说找不到扩展?

说明扩展文件没有装到这个 PostgreSQL 实例上。自建的检查编译安装是否装到了正确的 PostgreSQL 版本;云数据库看厂商是否支持、是否要先在控制台开启。

Q:和专门的向量数据库怎么选?

已经在用 PostgreSQL、向量规模在单机能承受的范围内,pgvector 少一个系统、数据一致性也好处理。只是做原型看《ChromaDB 是什么》;规模很大看《Milvus Lite 使用教程》里对 Milvus 各形态的说明。

参考资料

  • pgvector/pgvector(官方仓库与 README):https://github.com/pgvector/pgvector

Nathaniel 的更多内容

  1. 01

    ChatGPT 个人资料怎么改:头像、名字、用户名在哪设置,个人主页怎么公开和关闭

    想换 ChatGPT 的头像、改显示的名字,或者看到别人分享的 chatgpt.com/u/ 开头的主页链接?本文按官方帮助中心讲清个人资料页在哪打开、能改哪些信息、名字改了不生效怎么办,个人主页上会显示什么、怎么公开和收回,以及公司工作区里的不同规则。

    ChatGPT0
  2. 02

    ChatGPT Space 是什么、怎么用:页面(Pages)怎么创建和编辑、多人协作与分享权限

    ChatGPT 侧边栏多了个 Space,文件库却不见了?Space 是放页面、文件和成果的新地方,页面可以让 ChatGPT 起草、多人一起编辑。本文按官方帮助中心讲清谁能用、Space 和项目 / 文件库的关系、怎么创建和整理页面、分享后别人能看到什么,以及手机上的限制。

    ChatGPT0
  3. 03

    ChatGPT 录音模式(Record)怎么用:录会议自动出纪要,按钮不见了、没有声音怎么办

    ChatGPT 的录音功能(Record)可以在 Mac 上边录边转写,结束后自动生成会议纪要。本文按官方帮助中心讲清谁能用、怎么开始和结束、单次能录多久、录音会不会被保存和训练,以及 Record 按钮不见、权限报错、找不到纪要时的处理办法。

    ChatGPT0
  4. 04

    ChatGPT 购物研究怎么用:从选商品到拿到购买指南,结果准不准、和普通购物结果的区别

    ChatGPT 的购物研究(shopping research)能帮你比较商品、列出取舍,最后给一份个性化的购买指南。本文按官方帮助中心讲清现在从哪里启动、过程中怎么调整、指南里有什么、价格和库存为什么可能不准,以及虚拟试穿、收藏商品这些相关功能。

    ChatGPT0
  5. 05

    ChatGPT 群聊功能还能用吗:2026 年 7 月起停止新建,旧群聊怎么办、用什么替代

    想找 ChatGPT 的群聊(群组对话)入口却找不到?这个功能是 2025 年底的一次试点,官方已从 2026 年 7 月 9 日起停止新建和加入。本文按官方帮助中心讲清时间线、已有群聊会怎样、历史记录还在不在,以及现在多人协作可以改用的三种官方功能。

    ChatGPT0
  6. 06

    ChatGPT 深色模式怎么开:夜间模式、主题颜色、对比度与字体大小在哪设置

    想把 ChatGPT 换成深色(夜间)模式、改掉蓝色的消息气泡,或者把字调大?本文按官方帮助中心讲清网页、Windows、iPhone、安卓各自的入口,外观、对比度、强调色、文字大小四个设置分别管什么、哪些会跨设备同步,以及「为什么突然变蓝了」等常见问题。

    ChatGPT0

同产品的其他教程

  1. 01

    AI 幻觉是什么、怎么解决:用 AI 搜索时核实信息的七步检查法

    AI 幻觉是什么意思、怎么减少?讲清 AI 为什么会一本正经地说错,哪些内容最容易出错,并给出用 ChatGPT、Claude、Gemini、Grok 搜索时可照做的七步核查法:开联网、要来源、点开原文、看日期、找第二来源、反问、重要的事问人。

    ChatGPT其他 AI 工具0
  2. 02

    MarkItDown 怎么用:把 PDF、Word、Excel、PPT 转成 Markdown(安装、命令行与 Python)

    微软的 MarkItDown 是什么、怎么安装使用?按官方 README 讲清它支持的文件格式、为什么转成 Markdown、pip 安装与可选依赖、三种命令行写法、Python 调用、让大模型给图片写描述、插件与 OCR、MCP 服务器,以及处理不可信文件时的安全提示。

    其他 AI 工具0
  3. 03

    Seedance 2.0 怎么用:在即梦里用多模态参考生成视频(含提示词写法要点)

    Seedance 2.0 怎么用?本文讲清它在即梦里的入口和几个版本的区别,「全能参考」怎么同时放图片、视频、音频,编辑和延长视频怎么做,提示词怎么引用素材,以及 2.5 新增了什么、怎么收费去哪看。

    其他 AI 工具0
  4. 04

    即梦对口型与数字人怎么用:一张图 + 文字或音频生成说话视频(含动作模仿)

    即梦对口型在哪、数字人怎么做?本文讲清「数字人」入口、角色图要求、输入文字配音或上传音频的两种方式、给已有视频重新对口型的限制、动作模仿怎么用,以及对口型失败的常见原因和真人肖像授权要求。

    其他 AI 工具0
  5. 05

    Cline 怎么用:安装、配置 API 与自定义模型、Plan / Act 模式、规则与 MCP 配置

    Cline 配置教程:在 VS Code / JetBrains 安装扩展、三种接入方式(Cline Provider、ClinePass、自带 Key)、用 OpenAI 兼容接口配置 DeepSeek 等自定义模型、Plan 与 Act 模式、.clinerules 规则、自动批准与 MCP 设置,按官方文档整理。

    其他 AI 工具0
  6. 06

    Dify 知识库搭建教程:上传文件、分段设置(通用与父子模式)、索引方式与检索设置

    Dify 知识库怎么搭建、分段怎么设?本文按 Dify 官方文档讲清创建知识库的四步、上传限制、通用模式与父子模式的区别、分隔符和分段最大长度怎么填、高质量与经济两种索引、向量 / 全文 / 混合检索与 TopK、Score 阈值的含义。

    其他 AI 工具0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~