Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Så här aktiverar och använder
Viktigt!
Azure Cosmos DB for PostgreSQL stöds inte längre för nya projekt. Använd inte den här tjänsten för nya projekt. Använd i stället en av dessa två tjänster:
Använd Azure Cosmos DB för NoSQL för en distribuerad databaslösning som är utformad för storskaliga scenarier med ett serviceavtal på 99,999% tillgänglighet , omedelbar autoskalning och automatisk redundans i flera regioner.
Använd funktionen Elastiska kluster i Azure Database For PostgreSQL för fragmenterad PostgreSQL med citus-tillägget med öppen källkod.
Tillägget pgvector lägger till en vektorlikhetssökning med öppen källkod till PostgreSQL.
Den här artikeln introducerar oss för extra funktioner som aktiveras av pgvector. Den beskriver begreppen vektorlikhet och inbäddningar och ger vägledning om hur du aktiverar pgvector tillägget. Vi lär oss om hur vi skapar, lagrar och söker i vektorerna.
Du kanske också vill titta i projektets officiella README.
Aktivera tillägg
PostgreSQL-tillägg måste vara aktiverade i databasen innan du kan använda dem. Om du vill aktivera tillägget kör du kommandot från psql-verktyget för att läsa in de paketerade objekten i databasen.
SELECT CREATE_EXTENSION('vector');
Kommentar
Så här inaktiverar du en tilläggsanvändning drop_extension()
Begrepp
Vektorlikhet
Vektorlikhet är en metod som används för att mäta hur lika två objekt är genom att representera dem som vektorer, som är talserier. Vektorer används ofta för att representera datapunkter, där varje element i vektorn representerar en funktion eller ett attribut för datapunkten.
Vektorlikhet beräknas ofta med hjälp av avståndsmått, till exempel Euclidean distance eller cosine likhet. Euklidiska avstånd mäter det räta avståndet mellan två vektorer i det n-dimensionella utrymmet, medan cosinuslikhet mäter vinkelns cosinus mellan två vektorer. Värdena för likhetsmått varierar vanligtvis mellan 0 och 1, med higher värden som anger större likhet mellan vektorerna.
Vektorlikhet används ofta i olika program, till exempel rekommendationssystem, textklassificering, bildigenkänning och klustring. I rekommendationssystem kan till exempel vektorlikhet användas för att identifiera liknande objekt baserat på användarens inställningar. I textklassificering kan vektorlikhet användas för att fastställa likheten mellan två dokument eller meningar baserat på deras vektorrepresentationer.
Inbäddningar
En inbäddning är en metod för att utvärdera "relaterade" text, bilder, videor eller andra typer av information. Utvärderingen gör det möjligt för maskininlärningsmodeller att effektivt identifiera relationer och likheter mellan data, vilket gör det möjligt för algoritmer att identifiera mönster och göra korrekta förutsägelser. I en attitydanalysaktivitet kan till exempel ord med liknande inbäddningar förväntas ha liknande attitydpoäng.
Komma igång
Skapa en tabell tblvector med en embedding kolumn av typen vector(3) som representerar en tredimensionell vektor.
CREATE TABLE tblvector(
id bigserial PRIMARY KEY,
embedding vector(3)
);
När du har genererat en inbäddning med hjälp av en tjänst som OpenAI API kan du lagra den resulterande vektorn i databasen. Definiera en vektor som vector(3) anger [x,y,z] coordinates i tredimensionellt plan. Kommandot infogar fem nya rader i tblvector tabellen med de angivna inbäddningarna.
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]');
Med hjälp av -instruktionen INSERT INTO ... ON CONFLICT kan du ange en alternativ åtgärd, till exempel att uppdatera poster som matchar kriterierna. Det gör att du kan hantera potentiella konflikter på ett effektivare och effektivare sätt.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]')
ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding;
Kommandot DELETE tar bort rader från en angiven tabell baserat på de villkor som anges i WHERE-satsen. När WHERE-satsen inte finns tas alla rader i tabellen bort.
DELETE FROM tblvector WHERE id = 1;
Om du vill hämta vektorer och beräkna likheter använder du SELECT instruktioner och inbyggda vektoroperatorer. Frågan beräknar till exempel euklidiska avståndet (L2-avståndet) mellan den angivna vektorn och de vektorer som lagras i tblvector tabellen, sorterar resultatet efter det beräknade avståndet och returnerar de närmaste fem mest liknande objekten.
SELECT * FROM tblvector
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;
Frågan använder operatorn "<->", som är den "avståndsoperator" som används för att beräkna avståndet mellan två vektorer i ett flerdimensionellt utrymme. Frågan returnerar alla rader med avståndet mindre än 6 från vektorn [3,1,2].
SELECT * FROM tblvector WHERE embedding <-> '[3,1,2]' < 6;
Kommandot hämtar det genomsnittliga värdet för kolumnen "inbäddning" från tabellen "tblvector". Om kolumnen "inbäddning" till exempel innehåller ordinbäddningar för en språkmodell kan det genomsnittliga värdet för dessa inbäddningar användas för att representera hela meningen eller dokumentet.
SELECT AVG(embedding) FROM tblvector;
Vektoroperatorer
pgvector introducerar sex nya operatorer som kan användas på vektorer:
| Operatör | beskrivning |
|---|---|
| + | elementmässigt tillägg |
| - | elementvis subtraktion |
| * | elementmässigt multiplikation |
| <-> | Euklidiska avstånd |
| <#> | negativ inre produkt |
| <=> | cosinusavstånd |
Vektorfunktioner
cosine_distance
Beräknar cosinéavståndet mellan två vektorer.
cosine_distance(vector, vector)
Argument
vector
Först vector.
vector
Andra vector.
Returtyp
double precision som avståndet mellan de två angivna vektorerna.
inner_product
Beräknar den inre produkten av två vektorer.
inner_product(vector, vector)
Argument
vector
Först vector.
vector
Andra vector
Returtyp
double precision som inre produkt av de två vektorerna.
l2_distance
Beräknar euklidiska avståndet (även kallat L2) mellan två vektorer.
l2_distance(vector, vector)
Argument
vector
Först vector.
vector
Andra vector
Returtyp
double precision som euklidiska avståndet mellan de två vektorerna.
l1_distance
Beräknar taxicabavståndet (även kallat L1) mellan två vektorer.
l1_distance(vector, vector)
Argument
vector
Först vector.
vector
Andra vector
Returtyp
double precision som taxicabavståndet mellan de två vektorerna.
vector_dims(vector)
Returnerar dimensionerna för en viss vektor.
Argument
vector
En vector.
Returtyp
integer representerar antalet dimensioner för den angivna vektorn.
vector_norms(vector)
Beräknar euklidiska normen för en viss vektor.
Argument
vector
En vector.
Returtyp
double precision som representerar den givna vektorns euklidiska norm.
Vektoraggregat
AVG
Beräknar medelvärdet av bearbetade vektorer.
Argument
vector
En vector.
Returtyp
vector representerar medelvärdet av bearbetade vektorer.
SUM
Argument
vector
En vector.
Returtyp
vector representerar summan av bearbetade vektorer.
Nästa steg
Läs mer om prestanda, indexering och begränsningar med hjälp av pgvector.