Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Povolení a používání
Důležité
Azure Cosmos DB for PostgreSQL se už pro nové projekty nepodporuje. Tuto službu nepoužívejte pro nové projekty. Místo toho použijte jednu z těchto dvou služeb:
Azure Cosmos DB for NoSQL můžete použít pro distribuované databázové řešení navržené pro vysoce škálovatelné scénáře s 99,999% smlouvou o úrovni služeb (SLA), okamžitým automatickým škálováním a automatickým převzetím služeb při selhání napříč několika oblastmi.
Použijte funkci Elastic Clusters služby Azure Database for PostgreSQL pro horizontálně dělené PostgreSQL pomocí opensourcového rozšíření Citus.
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:
Chcete-li rozšíření zakázat, použijte drop_extension()
Koncepty
Podobnost vektorů
Vektorová podobnost je metoda používaná k měření, jak jsou si dvě položky podobné tím, že jsou reprezentovány 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 je podobnost Euclidean distance nebo cosine. Euklidovská vzdálenost měří přímou vzdálenost mezi dvěma vektory v n-dimenzionálním prostoru, zatímco kosinová podobnost 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í.
Embedová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 embeddingy 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 embeddingy.
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í po prvcích |
| * | Násobení po prvcích |
| <-> | Euklidská vzdálenost |
| <#> | negativní vnitřní součin |
| <=> | cosinusová 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 jako vzdálenost 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 jako 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 jako euklidovská 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á norma 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.