Neon 向量检索怎么配:pgvector 扩展与相似度查询实操

Neon 是兼容 PostgreSQL 的云数据库,向量检索能力来自 pgvector 扩展,不需要额外安装独立向量数据库。
只要在 Neon 控制台启用 pgvector,就能用标准 SQL 建表、写向量并做相似度排序。

先确认版本与连接方式

Neon 默认提供较新的 PostgreSQL 版本,pgvector 扩展在支持范围内可直接启用。
你需要准备:

  • 一个 Neon 项目,以及可用的数据库连接串(在控制台 Connect 按钮处获取)。
  • 本地安装 psql 客户端,或使用 Neon SQL Editor。
  • 一个用来测试的向量,比如三维数组 [0.1, 0.2, 0.3]。

连接数据库:

psql "postgresql://用户名:密码@主机/数据库名?sslmode=require"

如果不想装客户端,直接用 Neon 控制台的 SQL Editor 执行后续命令也可以。

启用 pgvector 并建表

在目标数据库执行:

CREATE EXTENSION IF NOT EXISTS vector;

验证扩展是否安装成功:

SELECT extname, extversion FROM pg_extension WHERE extname = 'vector';

返回一行记录说明扩展已启用。
接着创建带向量列的表:

CREATE TABLE items (
  id bigserial PRIMARY KEY,
  content text NOT NULL,
  embedding vector(3) NOT NULL
);

vector(3) 表示三维向量,实际使用时按你的嵌入模型输出维度修改,比如 OpenAI text-embedding-3-small 是 1536 维。
维度必须和写入数据一致,否则会报错。

写入向量并执行相似度查询

插入几条测试数据:

INSERT INTO items (content, embedding) VALUES
  ('苹果', '[0.9, 0.1, 0.0]'),
  ('香蕉', '[0.1, 0.9, 0.0]'),
  ('橙子', '[0.8, 0.2, 0.1]');

用余弦距离查询与 [0.85, 0.15, 0.05] 最接近的记录:

SELECT id, content, embedding <=> '[0.85, 0.15, 0.05]' AS distance
FROM items
ORDER BY embedding <=> '[0.85, 0.15, 0.05]'
LIMIT 5;

<=> 是余弦距离运算符,值越小表示越相似。
如果要按相似度从高到低排序,可以写成 ORDER BY embedding <=> '[...]',距离升序即相似度降序。

数据量较大时建议加索引:

CREATE INDEX ON items USING hnsw (embedding vector_cosine_ops);

HNSW 索引适合近似最近邻查询,创建后查询会走索引。
注意索引创建会消耗一定时间和资源,建议在低峰期操作。

容易踩坑的几个地方

  • 维度不一致:建表时写 vector(3),插入 4 维数据会直接报错。修改维度需要重建列或新表。
  • 扩展未启用:执行 CREATE EXTENSION 前要确认当前数据库正确,Neon 每个数据库需要单独启用。
  • 连接串缺少 SSL:Neon 要求 SSL 连接,psql 连接串记得加 ?sslmode=require。
  • 索引运算符不匹配:使用余弦距离查询时,索引要选 vector_cosine_ops;用欧氏距离则选 vector_l2_ops,否则索引可能不生效。

怎么验证配置真正生效

执行 EXPLAIN 查看查询计划:

EXPLAIN SELECT * FROM items ORDER BY embedding <=> '[0.85, 0.15, 0.05]' LIMIT 5;

如果输出中出现 Index Scan using items_embedding_idx,说明 HNSW 索引被使用。
没有走索引时,先检查索引是否存在、运算符是否匹配,以及表数据量是否过小(数据量很小时优化器可能选择全表扫描,这属于正常现象)。

最后再用一条已知最近邻的查询核对结果顺序,确认距离计算和排序符合预期。

常见疑问

Neon 免费套餐能用 pgvector 吗?

pgvector 属于 PostgreSQL 扩展,Neon 各套餐对扩展的支持以控制台实际可启用项为准。
启用时如果报权限错误,检查当前角色是否有 CREATE EXTENSION 权限。

向量维度必须固定吗?

同一列内必须固定,因为 vector(n) 定义了维度。
不同表可以用不同维度。

HNSW 和 IVFFlat 怎么选?

HNSW 查询速度快、召回率高,但建索引慢、占内存;
IVFFlat 建索引快,适合数据量大且能接受一定召回损失的场景。
新手可以先从 HNSW 开始。

分享到:
上一篇
Supabase 向量检索配置:pgvector 表结构与 RPC 查询
下一篇
PlanetScale 向量检索怎么配置:从建表到相似度查询
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意