PGVector是一个开源的向量相似性搜索工具,支持将向量数据与其它类型的数据共同进行存储。同时支持以下功能:
单精度向量、半精度向量、位向量和稀疏向量。
曼哈顿距离(L1)、欧几里得距离(L2)、 内积距离(inner product)、余弦距离(cosine)、汉明距离(Hamming),Jaccard等主流距离度量。
精确最近邻搜索与模糊最近邻搜索。
HNSW、IVFFlat等主流的向量模糊相似性搜索索引。
各类不同的PostgreSQL客户端的语言。
使用此插件的同时,可以使用其它PostgreSQL的优良特性,例如:ACID特性,按时间点恢复,多表JOIN等。
版权说明
PolarDB PostgreSQL版(兼容Oracle)包含pgvector
扩展,本章节相关内容在pgvector的基础上进行阿里云向量数据库的相关修改。
版权协议:Copyright (c) 1996-2025, (The documentation for pgvector is under PostgreSQL Global Development Group)
单精度向量
每个单精度向量占用4 * 维度 + 8
字节存储空间。该向量的每个元素是一个单精度浮点数(类似PostgreSQL中的real
类型),且所有元素必须为有效且有限值(不能是NaN
、Infinity
或-Infinity
)。单精度向量最多可以有16,000个维度。
操作符
操作符 | 描述 | 版本要求 |
操作符 | 描述 | 版本要求 |
| 元素级加法。 | 无 |
| 元素级减法。 | 无 |
| 元素级乘法。 | >=0.5.0 |
| 连接。 | >=0.7.0 |
| 欧几里得距离(L2)。 | 无 |
| 负内积距离。 | 无 |
| 余弦距离。 | 无 |
| 曼哈顿距离(L1)。 | >=0.7.0 |
函数
函数 | 描述 | 版本要求 |
函数 | 描述 | 版本要求 |
| 将向量量化为二进制格式。 | >=0.7.0 |
| 计算向量之间的余弦距离。 | 无 |
| 计算向量之间的内积距离。 | 无 |
| 计算向量之间的曼哈顿距离(L1)。 | >=0.5.0 |
| 计算向量之间的欧几里得距离(L2)。 | 无 |
| 使用欧几里得范数进行归一化。 | >=0.7.0 |
| 从一个给定的向量中提取子向量。 | >=0.7.0 |
| 获取向量的维度数。 | 无 |
| 计算向量的欧几里得范数。 | 无 |
聚合函数 | 描述 | 版本要求 |
聚合函数 | 描述 | 版本要求 |
| 计算平均值。 | 无 |
| 求和。 | >=0.5.0 |
半精度向量
每个半精度向量占用2 * 维度 + 8
字节存储空间。该向量的每个元素是一个半精度浮点数,且所有元素必须为有效且有限值(不能是NaN
、Infinity
或-Infinity
)。半精度向量最多可以有16,000个维度。
操作符
运算符 | 描述 | 版本要求 |
运算符 | 描述 | 版本要求 |
| 元素级加法。 | >=0.7.0 |
| 元素级减法。 | >=0.7.0 |
| 元素级乘法。 | >=0.7.0 |
| 连接。 | >=0.7.0 |
| 欧几里得距离(L2)。 | >=0.7.0 |
| 负内积距离。 | >=0.7.0 |
| 余弦距离。 | >=0.7.0 |
| 曼哈顿距离(L1)。 | >=0.7.0 |
函数
函数 | 描述 | 版本要求 |
函数 | 描述 | 版本要求 |
| 将半精度向量量化为二进制格式。 | >=0.7.0 |
| 计算半精度向量之间的余弦距离。 | >=0.7.0 |
| 计算半精度向量之间的内积距离。 | >=0.7.0 |
| 计算半精度向量之间的曼哈顿距离(L1)。 | >=0.7.0 |
| 计算半精度向量之间的欧几里得距离(L2)。 | >=0.7.0 |
| 计算半精度向量的欧几里得范数。 | >=0.7.0 |
| 使用欧几里得范数进行归一化。 | >=0.7.0 |
| 从一个给定的向量中提取子向量。 | >=0.7.0 |
| 获取向量的维度数。 | >=0.7.0 |
聚合函数 | 描述 | 版本要求 |
聚合函数 | 描述 | 版本要求 |
| 计算平均值。 | >=0.7.0 |
| 求和。 | >=0.7.0 |
位向量
每个位向量占用dimensions / 8 + 8
字节存储空间。更多详情请参见Postgres 文档。
操作符
运算符 | 描述 | 版本要求 |
运算符 | 描述 | 版本要求 |
| 汉明距离。 | >=0.7.0 |
| Jaccard距离。 | >=0.7.0 |
函数
函数 | 描述 | 版本要求 |
函数 | 描述 | 版本要求 |
| 计算位向量之间的汉明距离。 | >=0.7.0 |
| 计算位向量之间的Jaccard距离。 | >=0.7.0 |
稀疏向量
每个稀疏向量占用8 * 非零元素数量 + 16
字节存储空间。该向量的每个元素是一个单精度浮点数,且所有元素必须为有效且有限值(不能是NaN
、Infinity
或-Infinity
)。稀疏向量最多可以有16,000个非零元素。
操作符
操作符 | 描述 | 版本要求 |
操作符 | 描述 | 版本要求 |
| 欧几里得距离(L2)。 | >=0.7.0 |
| 负内积距离。 | >=0.7.0 |
| 余弦距离。 | >=0.7.0 |
| 曼哈顿距离(L1)。 | >=0.7.0 |
函数
函数 | 描述 | 版本要求 |
函数 | 描述 | 版本要求 |
| 计算稀疏向量之间的余弦距离。 | >=0.7.0 |
| 计算稀疏向量之间的内积距离。 | >=0.7.0 |
| 计算稀疏向量之间的曼哈顿距离(L1)。 | >=0.7.0 |
| 计算稀疏向量之间的欧几里得距离(L2)。 | >=0.7.0 |
| 计算稀疏向量的欧几里得范数。 | >=0.7.0 |
| 使用欧几里得范数进行归一化。 | >=0.7.0 |
- 本页导读 (1)
- 版权说明
- 单精度向量
- 操作符
- 函数
- 半精度向量
- 操作符
- 函数
- 位向量
- 操作符
- 函数
- 稀疏向量
- 操作符
- 函数