Povolení a používání pgvector ve službě Azure Cosmos DB for PostgreSQL

PLATÍ PRO: Azure Cosmos DB for PostgreSQL (využívající rozšíření databáze Citus do PostgreSQL)

Rozšíření pgvector přidá do PostgreSQL hledání open source vektorové podobnosti.

V tomto článku se seznámíme s dalšími možnostmi, které pgvectorpovoluje . Popisuje koncepty podobnosti vektorů a vkládání a poskytuje pokyny k povolení pgvector rozšíření. Dozvíme se, jak vytvářet, ukládat a dotazovat vektory. Můžete také chtít odkazovat na oficiální soubor README projektu.

Povolení rozšíření

Než je budete moct používat, musí být rozšíření PostgreSQL ve vaší databázi povolená. Pokud chcete rozšíření povolit, spusťte příkaz z nástroje psql, který načte zabalené objekty do databáze.

SELECT CREATE_EXTENSION('vector');

Poznámka:

Zakázání použití rozšíření drop_extension()

Koncepty

Podobnost vektorů

Vektorová podobnost je metoda, která se používá k měření, jak podobné dvě položky představují jako vektory, což jsou řady čísel. Vektory se často používají k reprezentaci datových bodů, kde každý prvek vektoru představuje funkci nebo atribut datového bodu.

Podobnost vektorů se běžně počítá pomocí metrik vzdálenosti, jako Euclidean distance je nebo cosine podobnost. Euklidská vzdálenost měří přímočarou vzdálenost mezi dvěma vektory v ndimenzionálním prostoru, zatímco kosinus úhlu měří kosinus úhlu mezi dvěma vektory. Hodnoty metrik podobnosti jsou obvykle v rozsahu mezi 0 a 1, s higher hodnotami označujícími větší podobnost mezi vektory.

Podobnost vektorů se běžně používá v různých aplikacích, jako jsou systémy doporučení, klasifikace textu, rozpoznávání obrázků a clustering. Například v systémech doporučení lze vektorovou podobnost použít k identifikaci podobných položek na základě předvoleb uživatele. Při klasifikaci textu lze pomocí vektorové podobnosti určit podobnost mezi dvěma dokumenty nebo větami na základě jejich vektorových reprezentací.

Vkládání

Vkládání je technika vyhodnocení "související" textu, obrázků, videí nebo jiných typů informací. Vyhodnocení umožňuje modelům strojového učení efektivně identifikovat vztahy a podobnosti mezi daty, což umožňuje algoritmům identifikovat vzory a provádět přesné předpovědi. Například v úloze analýzy mínění se může očekávat, že slova s podobnými vkládáními budou mít podobné skóre mínění.

Začínáme

Vytvořte tabulku tblvector se sloupcem embedding typu vector(3) představujícím trojrozměrný vektor.

CREATE TABLE tblvector(
    id bigserial PRIMARY KEY,
    embedding vector(3)
    );

Po vygenerování vkládání pomocí služby, jako je rozhraní OpenAI API, můžete výsledný vektor uložit do databáze. Definování vektoru tak, jak vector(3) určuje [x,y,z] coordinates v rovině tří dimenzí. Příkaz vloží do tblvector tabulky pět nových řádků se zadanými vloženými položkami.

INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]'), (3, '[5,4,6]'), (4, '[3,5,7]'), (5, '[7,8,9]');

Pomocí INSERT INTO ... ON CONFLICT příkazu můžete zadat alternativní akci, například aktualizaci záznamů, které splňují kritéria. Umožňuje zpracovávat potenciální konflikty efektivnějším a efektivnějším způsobem.

INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]')
ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding;

Příkaz DELETE odebere řádky ze zadané tabulky na základě podmínek zadaných v klauzuli WHERE. Pokud klauzule WHERE neexistuje, odstraní se všechny řádky v tabulce.

DELETE FROM tblvector WHERE id = 1;

K načtení vektorů a výpočtu podobnosti použijte SELECT příkazy a předdefinované vektorové operátory. Například dotaz vypočítá euklidskou vzdálenost (L2 vzdálenost) mezi daným vektorem a vektory uloženými v tblvector tabulce, seřadí výsledky podle počítané vzdálenosti a vrátí nejbližší pět nejvíce podobných položek.

SELECT * FROM tblvector 
ORDER BY embedding <-> '[3,1,2]' 
LIMIT 5;

Dotaz používá< operátor "->", což je "operátor vzdálenosti", který se používá k výpočtu vzdálenosti mezi dvěma vektory v multidimenzionálním prostoru. Dotaz vrátí všechny řádky s vzdáleností menší než 6 od vektoru [3,1,2].

SELECT * FROM tblvector WHERE embedding <-> '[3,1,2]' < 6;

Příkaz načte průměrnou hodnotu sloupce embedding z tabulky tblvector. Pokud například sloupec vkládání obsahuje vkládání slov pro jazykový model, může být průměrná hodnota těchto vkládání použita k reprezentaci celé věty nebo dokumentu.

SELECT AVG(embedding) FROM tblvector;

Vektorové operátory

pgvector zavádí šest nových operátorů, které lze použít u vektorů:

Operátor Popis
+ sčítání podle elementů
- odčítání podle elementů
* Násobení podle elementů
<-> Euklidská vzdálenost
<#> negativní vnitřní součin
<=> kosinus vzdálenost

Vektorové funkce

cosine_distance

Vypočítá kosinus vzdálenost mezi dvěma vektory.

cosine_distance(vector, vector)

Argumenty

vector

První vector.

vector

Druhý vector.

Návratový typ

double precision vzdálenosti mezi těmito dvěma zadanými vektory.

inner_product

Vypočítá vnitřní součin dvou vektorů.

inner_product(vector, vector)

Argumenty

vector

První vector.

vector

Druhé vector

Návratový typ

double precision vnitřní součin dvou vektorů.

l2_distance

Vypočítá euklidskou vzdálenost (označovanou také jako L2) mezi dvěma vektory.

l2_distance(vector, vector)

Argumenty

vector

První vector.

vector

Druhé vector

Návratový typ

double precision euklidová vzdálenost mezi těmito dvěma vektory.

l1_distance

Vypočítá vzdálenost taxicab (označovanou také jako L1) mezi dvěma vektory.

l1_distance(vector, vector)

Argumenty

vector

První vector.

vector

Druhé vector

Návratový typ

double precision jako vzdálenost taxicab mezi těmito dvěma vektory.

vector_dims(vector)

Vrátí dimenze daného vektoru.

Argumenty

vector

Úloha vector.

Návratový typ

integer představující počet dimenzí daného vektoru.

vector_norms(vector)

Vypočítá euklidovou normu daného vektoru.

Argumenty

vector

Úloha vector.

Návratový typ

double precision euklidovské normě daného vektoru.

Vektorové agregace

AVG

Vypočítá průměr zpracovaných vektorů.

Argumenty

vector

Úloha vector.

Návratový typ

vector představující průměr zpracovaných vektorů.

SUM

Argumenty

vector

Úloha vector.

Návratový typ

vector představující součet zpracovaných vektorů.

Další kroky

Další informace o výkonu, indexování a omezeních pomocí pgvector.