关于 pgvector
pgvector 是用于在 PostgreSQL 中存储向量并通过 SQL 搜索近邻的扩展,适合希望将向量查询与关系数据结合的开发者。它支持精确搜索,以及 HNSW、IVFFlat 等近似索引。
主要功能
- 01在 PostgreSQL 中存储向量类型
- 02精确与近似近邻搜索
- 03HNSW 和 IVFFlat 索引
- 04SQL 距离运算符
- 05客户端库参考资料
适用场景
- 01在关系记录旁查询嵌入向量
- 02权衡近似索引的速度与召回率
- 03通过 Python、Go、Node、Java 或 Swift 查询向量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ itechmeat/ llm-code --skill pgvector安装后在 Claude Code 中输入/pgvector确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/core.mdgo.mdindexing.mdinstallation.mdjava.mdnode.mdperformance-and-filtering.mdpython.mdswift.mdtroubleshooting.mdtypes-and-functions.md详细介绍
pgvector
用于在 PostgreSQL 中存储向量并通过 SQL 执行精确/近似最近邻搜索的扩展。
快速导航
- 安装:
references/installation.md - 核心概念和 SQL 配方:
references/core.md - 索引(HNSW / IVFFlat)和调优:
references/indexing.md - 过滤、迭代扫描和性能:
references/performance-and-filtering.md - 类型和函数参考(vector/halfvec/bit/sparsevec):
references/types-and-functions.md - 故障排查:
references/troubleshooting.md - 客户端库(优先级):
- Python:
references/python.md - Go:
references/go.md - Node(JS/TS):
references/node.md - Java:
references/java.md - Swift:
references/swift.md
- Python:
适用场景
- 需要在 Postgres 中进行向量相似性搜索(将向量与关系型数据一同存储)。
- 希望使用原生 SQL 的 ANN 索引(HNSW 或 IVFFlat),并能调节召回率/速度。
- 希望在多种应用语言中使用一致的模式来存储/查询嵌入向量。
快速入门(已安装)
前提条件:Postgres 服务器上已安装 pgvector。请参阅:references/installation.md。
在数据库中启用并运行第一个查询:
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;
选择距离运算符
- L2(欧几里得):使用
<-> - 内积:使用
<#>(注意:返回的是负内积) - 余弦距离:使用
<=> - L1:使用
<+> - 二进制向量:汉明距离
<~>/ Jaccard 距离<%>
索引经验法则
- 精确搜索:不使用 pgvector 索引;大型表可能使用并行扫描。
- ANN 搜索:
- 优先选择 HNSW,以获得更高的速度/召回率,但构建时间和内存开销更高。
- 需要更快构建/更低内存开销时,使用 IVFFlat。
- 每种计划使用的距离函数/运算符类都创建一个索引。
重要禁忌/注意事项
- 近似索引可能会改变结果(召回率与速度之间的权衡)。
- 通常需要使用
ORDER BY <distance-op> ... LIMIT ...才能使用索引。 <#>返回负内积;乘以-1可得到实际值。NULL向量不会被索引;对于余弦距离,零向量不会被索引。
链接
- 文档/代码仓库:https://github.com/pgvector/pgvector
- 客户端库:
- 发布版本/标签:https://github.com/pgvector/pgvector/tags
评论
支持 Markdown