SQL参考

更新时间:2025-04-22 07:14:22

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类型),且所有元素必须为有效且有限值(不能是NaNInfinity-Infinity)。单精度向量最多可以有16,000个维度。

操作符

操作符

描述

版本要求

操作符

描述

版本要求

+

元素级加法。

-

元素级减法。

*

元素级乘法。

>=0.5.0

||

连接。

>=0.7.0

<->

欧几里得距离(L2)。

<#>

负内积距离。

<=>

余弦距离。

<+>

曼哈顿距离(L1)。

>=0.7.0

函数

函数

描述

版本要求

函数

描述

版本要求

binary_quantize(vector) → bit

将向量量化为二进制格式。

>=0.7.0

cosine_distance(vector, vector) → double precision

计算向量之间的余弦距离。

inner_product(vector, vector) → double precision

计算向量之间的内积距离。

l1_distance(vector, vector) → double precision

计算向量之间的曼哈顿距离(L1)。

>=0.5.0

l2_distance(vector, vector) → double precision

计算向量之间的欧几里得距离(L2)。

l2_normalize(vector) → vector

使用欧几里得范数进行归一化。

>=0.7.0

subvector(vector, integer, integer) → vector

从一个给定的向量中提取子向量。

>=0.7.0

vector_dims(vector) → integer

获取向量的维度数。

vector_norm(vector) → double precision

计算向量的欧几里得范数。

聚合函数

描述

版本要求

聚合函数

描述

版本要求

avg(vector) → vector

计算平均值。

sum(vector) → vector

求和。

>=0.5.0

半精度向量

每个半精度向量占用2 * 维度 + 8字节存储空间。该向量的每个元素是一个半精度浮点数,且所有元素必须为有效且有限值(不能是NaNInfinity-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

函数

函数

描述

版本要求

函数

描述

版本要求

binary_quantize(halfvec) → bit

将半精度向量量化为二进制格式。

>=0.7.0

cosine_distance(halfvec, halfvec) → double precision

计算半精度向量之间的余弦距离。

>=0.7.0

inner_product(halfvec, halfvec) → double precision

计算半精度向量之间的内积距离。

>=0.7.0

l1_distance(halfvec, halfvec) → double precision

计算半精度向量之间的曼哈顿距离(L1)。

>=0.7.0

l2_distance(halfvec, halfvec) → double precision

计算半精度向量之间的欧几里得距离(L2)。

>=0.7.0

l2_norm(halfvec) → double precision

计算半精度向量的欧几里得范数。

>=0.7.0

l2_normalize(halfvec) → halfvec

使用欧几里得范数进行归一化。

>=0.7.0

subvector(halfvec, integer, integer) → halfvec

从一个给定的向量中提取子向量。

>=0.7.0

vector_dims(halfvec) → integer

获取向量的维度数。

>=0.7.0

聚合函数

描述

版本要求

聚合函数

描述

版本要求

avg(halfvec) → halfvec

计算平均值。

>=0.7.0

sum(halfvec) → halfvec

求和。

>=0.7.0

位向量

每个位向量占用dimensions / 8 + 8字节存储空间。更多详情请参见Postgres 文档

操作符

运算符

描述

版本要求

运算符

描述

版本要求

<~>

汉明距离。

>=0.7.0

<%>

Jaccard距离。

>=0.7.0

函数

函数

描述

版本要求

函数

描述

版本要求

hamming_distance(bit, bit) → double precision

计算位向量之间的汉明距离。

>=0.7.0

jaccard_distance(bit, bit) → double precision

计算位向量之间的Jaccard距离。

>=0.7.0

稀疏向量

每个稀疏向量占用8 * 非零元素数量 + 16字节存储空间。该向量的每个元素是一个单精度浮点数,且所有元素必须为有效且有限值(不能是NaNInfinity-Infinity)。稀疏向量最多可以有16,000个非零元素。

操作符

操作符

描述

版本要求

操作符

描述

版本要求

<->

欧几里得距离(L2)。

>=0.7.0

<#>

负内积距离。

>=0.7.0

<=>

余弦距离。

>=0.7.0

<+>

曼哈顿距离(L1)。

>=0.7.0

函数

函数

描述

版本要求

函数

描述

版本要求

cosine_distance(sparsevec, sparsevec) → double precision

计算稀疏向量之间的余弦距离。

>=0.7.0

inner_product(sparsevec, sparsevec) → double precision

计算稀疏向量之间的内积距离。

>=0.7.0

l1_distance(sparsevec, sparsevec) → double precision

计算稀疏向量之间的曼哈顿距离(L1)。

>=0.7.0

l2_distance(sparsevec, sparsevec) → double precision

计算稀疏向量之间的欧几里得距离(L2)。

>=0.7.0

l2_norm(sparsevec) → double precision

计算稀疏向量的欧几里得范数。

>=0.7.0

l2_normalize(sparsevec) → sparsevec

使用欧几里得范数进行归一化。

>=0.7.0

  • 本页导读 (1)
  • 版权说明
  • 单精度向量
  • 操作符
  • 函数
  • 半精度向量
  • 操作符
  • 函数
  • 位向量
  • 操作符
  • 函数
  • 稀疏向量
  • 操作符
  • 函数
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等