全部產品
Search
文件中心

PolarDB:SQL參考

更新時間:Apr 29, 2025

PGVector是一個開源的向量相似性搜尋工具,支援將向量資料與其它類型的資料共同進行儲存。同時支援以下功能:

  • 單精確度向量、半精度向量、位向量和稀疏向量。

  • 曼哈頓距離(L1)、歐幾裡得距離(L2)、 內積距離(inner product)、餘弦距離(cosine)、漢明距離(Hamming),Jaccard等主流距離度量。

  • 精確最近鄰搜尋與模糊最近鄰搜尋。

  • HNSW、IVFFlat等主流的向量模糊相似性搜尋索引。

  • 各類不同的PostgreSQL用戶端的語言。

使用此外掛程式的同時,可以使用其它PostgreSQL的優良特性,例如:ACID特性,按時間點恢複,多表JOIN等。

著作權說明

PolarDB PostgreSQL版包含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