Povolení a používání nástroje pgvector na flexibilním serveru Azure Database for PostgreSQL
PLATÍ PRO: Flexibilní server Azure Database for 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é pgvector
povoluje . 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ž budete moct povolit pgvector
instanci flexibilního serveru Azure Database for PostgreSQL, musíte ji přidat do seznamu povolených, jak je popsáno v tom, jak používat rozšíření PostgreSQL, a zkontrolovat, jestli je správně přidaná spuštěním SHOW azure.extensions;
.
Důležité
Všimněte si, že ačkoli všechny komunity PostgreSQL mají tendenci odkazovat na toto rozšíření jako pgvector, název binárního souboru a samotné rozšíření je jednoduše vector
. Vezměte v úvahu, protože to je název, který musíte použít k povolení nebo k jeho vytvoření v jakékoli databázi pomocí příkazu CREATE EXTENSION.
Rozšíření pak můžete nainstalovat tak, že se připojíte k cílové databázi a spustíte příkaz CREATE EXTENSION . Tento příkaz je potřeba opakovat zvlášť pro každou databázi, ve které má být rozšíření dostupné.
CREATE EXTENSION vector;
Poznámka:
Chcete-li odebrat rozšíření z aktuálně připojené databáze, použijte DROP EXTENSION vector;
.
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
Vteřina 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
Vteřina 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
Vteřina 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ů.
Sdílejte své návrhy a chyby s produktovým týmem Azure Database for PostgreSQL.
Související obsah
- Optimalizujte výkon při použití nástroje pgvector na flexibilním serveru Azure Database for PostgreSQL.
- Integrace flexibilního serveru Azure Database for PostgreSQL s Azure Cognitive Services
- Generování vektorových vkládání do flexibilního serveru Azure Database for PostgreSQL s místně nasazeným LLM (Preview)
- Integrace Azure Database for PostgreSQL se službami Azure Machine Learning Services
- Generování vektorových vkládání pomocí Azure OpenAI na flexibilním serveru Azure Database for PostgreSQL
- Rozšíření Azure AI na flexibilním serveru Azure Database for PostgreSQL
- Generování umělé inteligence s flexibilním serverem Azure Database for PostgreSQL
- Systém doporučení s flexibilním serverem Azure Database for PostgreSQL a Azure OpenAI
- Sémantické vyhledávání s využitím flexibilního serveru Azure Database for PostgreSQL a Azure OpenAI
- Povolení a používání nástroje pgvector na flexibilním serveru Azure Database for PostgreSQL