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.
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ž 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;.
Koncepce
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í.
Zakotvení
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ů:
| Operator | Description |
|---|---|
| + | 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)
Arguments
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)
Arguments
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)
Arguments
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)
Arguments
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.
Arguments
vector
Nějaké vector.
Návratový typ
integer představující počet dimenzí daného vektoru.
vector_norms(vector)
Vypočítá euklidovou normu daného vektoru.
Arguments
vector
Nějaké vector.
Návratový typ
double precision euklidovská norma daného vektoru.
Vektorové agregace
AVG
Vypočítá průměr zpracovaných vektorů.
Arguments
vector
Nějaké vector.
Návratový typ
vector představující průměr zpracovaných vektorů.
SUM
Arguments
vector
Nějaké vector.
Návratový typ
vector představující součet zpracovaných vektorů.
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 se službou Azure Cognitive Services
- Generování vektorového zapouzdření na flexibilním 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 flexibilním serverem Azure Database for PostgreSQL a Azure OpenAI
- Povolte a používejte pgvector na flexibilním serveru Azure Database for PostgreSQL.