Megosztás a következőn keresztül:


Az Azure Cosmos DB for PostgreSQL engedélyezése és használata pgvector

A KÖVETKEZŐKRE VONATKOZIK: Azure Cosmos DB for PostgreSQL (a Citus adatbázisbővítménye a PostgreSQL-re)

A pgvector bővítmény egy nyílt forráskódú vektoros hasonlósági keresést ad hozzá a PostgreSQL-hez.

Ez a cikk bemutatja azokat az extra képességeket, amelyeket pgvectora .. engedélyez. Ismerteti a vektorok hasonlóságának és beágyazásának fogalmait, és útmutatást nyújt a pgvector bővítmény engedélyezéséhez. Megismerjük a vektorok létrehozását, tárolását és lekérdezését. Érdemes lehet a projekt hivatalos README-jára is hivatkozni.

Bővítmény engedélyezése

A PostgreSQL-bővítményeket engedélyezni kell az adatbázisban, mielőtt használhatja őket. A bővítmény engedélyezéséhez futtassa a parancsot a psql-eszközről a csomagolt objektumok adatbázisba való betöltéséhez.

SELECT CREATE_EXTENSION('vector');

Feljegyzés

Bővítmény használatának letiltása drop_extension()

Fogalmak

Vektorok hasonlósága

A vektoros hasonlóság a két elem hasonlóságának mérésére szolgáló módszer, amely vektorokként jelöli őket, amelyek számsorok. A vektorokat gyakran használják adatpontok ábrázolására, ahol a vektor minden eleme az adatpont valamely funkcióját vagy attribútumát jelöli.

A vektorok hasonlóságát általában távolsági metrikák, például Euclidean distance hasonlóság cosine alapján számítják ki. Az euklideszi távolság az n dimenziós tér két vektora közötti egyenes vonalat méri, míg a koszinusz hasonlósága a két vektor közötti szög koszinuszát méri. A hasonlósági metrikák értékei általában között 0 és 1között mozognak, és higher a vektorok közötti nagyobb hasonlóságot jelző értékek.

A vektoros hasonlóságot széles körben használják különböző alkalmazásokban, például javaslati rendszerekben, szövegbesorolásban, képfelismerésben és fürtözésben. A javaslati rendszerekben például a vektoros hasonlóság használható a hasonló elemek azonosítására a felhasználó beállításai alapján. A szövegbesorolásban a vektoros hasonlóság két dokumentum vagy mondat közötti hasonlóság meghatározására használható vektorábrázolások alapján.

Beágyazások

A beágyazás a szöveg, képek, videók vagy más típusú információk "kapcsolódóságának" kiértékelésére szolgáló technika. Az értékelés lehetővé teszi a gépi tanulási modellek számára az adatok közötti kapcsolatok és hasonlóságok hatékony azonosítását, lehetővé téve az algoritmusok számára a minták azonosítását és a pontos előrejelzések készítését. Egy hangulatelemzési feladatban például a hasonló beágyazású szavak várhatóan hasonló hangulatpontszámmal rendelkeznek.

Első lépések

Hozzon létre egy táblázatot tblvector egy embedding háromdimenziós vektort képviselő típusú vector(3) oszlopmal.

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

Miután létrehozott egy beágyazást egy olyan szolgáltatással, mint az OpenAI API, tárolhatja az eredményként kapott vektort az adatbázisban. Vektor definiálása három dimenziós [x,y,z] coordinates síkban kijelöltkéntvector(3). A parancs öt új sort szúr be a tblvector táblába a megadott beágyazásokkal.

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]');

Az utasítás használatával INSERT INTO ... ON CONFLICT megadhat egy másik műveletet, például a feltételeknek megfelelő rekordok frissítését. Lehetővé teszi a lehetséges ütközések hatékonyabb és hatékonyabb kezelését.

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

A DELETE parancs eltávolítja a sorokat egy megadott táblából a WHERE záradékban megadott feltételek alapján. Ha a WHERE záradék nem található, a rendszer törli a tábla összes sorát.

DELETE FROM tblvector WHERE id = 1;

A vektorok lekéréséhez és a hasonlóság kiszámításához használja SELECT az utasításokat és a beépített vektoroperátorokat. A lekérdezés például kiszámítja az euklideszi távolságot (L2 távolság) az adott vektor és a tblvector táblázatban tárolt vektorok között, az eredményeket a számított távolság alapján rendezi, és a legközelebbi öt hasonló elemet adja vissza.

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

A lekérdezés a "<->" operátort használja, amely egy többdimenziós tér két vektora közötti távolság kiszámításához használt "távolság operátor". A lekérdezés az összes sort visszaadja, amelynek távolsága kisebb, mint 6 a vektortól [3,1,2].

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

A parancs lekéri a "beágyazás" oszlop átlagos értékét a "tblvector" táblából. Ha például a "beágyazás" oszlop szóbeágyazást tartalmaz egy nyelvi modellhez, akkor a beágyazások átlagos értéke a teljes mondatot vagy dokumentumot ábrázolhatja.

SELECT AVG(embedding) FROM tblvector;

Vektor operátorok

pgvector hat új operátort vezet be, amelyek vektorokon használhatók:

Operátor Leírás
+ elemalapú hozzáadás
- elem-bölcs kivonás
* elemalapú szorzás
<-> Euklideszi távolság
<#> negatív belső termék
<=> koszinusz távolság

Vektorfüggvények

cosine_distance

Kiszámítja a két vektor közötti koszinusz távolságot.

cosine_distance(vector, vector)

Argumentumok

vector

Először vector.

vector

Második vector.

Visszatérési típus

double precision a két megadott vektor közötti távolságként.

inner_product

Két vektor belső szorzatát számítja ki.

inner_product(vector, vector)

Argumentumok

vector

Először vector.

vector

Második vector

Visszatérési típus

double precision a két vektor belső termékeként.

l2_distance

Kiszámítja az euklideszi távolságot (más néven L2) két vektor között.

l2_distance(vector, vector)

Argumentumok

vector

Először vector.

vector

Második vector

Visszatérési típus

double precision mint a két vektor közötti euklideszi távolság.

l1_distance

Kiszámítja a taxikák távolságát (más néven L1) két vektor között.

l1_distance(vector, vector)

Argumentumok

vector

Először vector.

vector

Második vector

Visszatérési típus

double precision a két vektor közötti taxikák közötti távolság.

vector_dims(vector)

Egy adott vektor dimenzióit adja vissza.

Argumentumok

vector

A vector.

Visszatérési típus

integer az adott vektor dimenzióinak számát jelöli.

vector_norms(vector)

Kiszámítja egy adott vektor euklideszi normát.

Argumentumok

vector

A vector.

Visszatérési típus

double precision az adott vektor euklideszi normát képviseli.

Vektor aggregátumok

AVG

Kiszámítja a feldolgozott vektorok átlagát.

Argumentumok

vector

A vector.

Visszatérési típus

vector a feldolgozott vektorok átlagát jelöli.

SUM

Argumentumok

vector

A vector.

Visszatérési típus

vector a feldolgozott vektorok összegét jelöli.

Következő lépések

További információ a teljesítményről, az indexelésről és a korlátozásokról a használatával pgvector.