Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Rozszerzenie pgvector
dodaje wyszukiwanie wektorów typu open source do bazy danych PostgreSQL.
W tym artykule przedstawiono dodatkowe możliwości włączone przez pgvector
usługę . Obejmuje ona pojęcia podobieństwa wektorów i osadzania oraz zawiera wskazówki dotyczące włączania pgvector
rozszerzenia. Dowiemy się, jak tworzyć, przechowywać i wykonywać zapytania dotyczące wektorów.
Możesz również odwołać się do oficjalnego pliku README projektu.
Włączanie rozszerzenia
Przed włączeniem pgvector
w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL należy dodać go do listy dozwolonych zgodnie z opisem w temacie how to use PostgreSQL extensions (Jak używać rozszerzeń PostgreSQL) i sprawdzić, czy dodano je poprawnie, uruchamiając polecenie SHOW azure.extensions;
.
Ważne
Zwróć uwagę, że chociaż cała społeczność postgreSQL ma tendencję do odwoływania się do tego rozszerzenia jako pgvector, nazwa pliku binarnego i samo rozszerzenie to po prostu vector
. Należy to wziąć pod uwagę, ponieważ jest to nazwa, której należy użyć do jej listy dozwolonych lub utworzenia jej w dowolnej bazie danych za pomocą polecenia CREATE EXTENSION.
Następnie możesz zainstalować rozszerzenie, łącząc się z docelową bazą danych i uruchamiając polecenie CREATE EXTENSION . Należy powtórzyć polecenie oddzielnie dla każdej bazy danych, w której ma być dostępne rozszerzenie.
CREATE EXTENSION vector;
Uwaga
Aby usunąć rozszerzenie z aktualnie połączonej bazy danych, użyj polecenia DROP EXTENSION vector;
.
Pojęcia
Podobieństwo wektorów
Podobieństwo wektorów to metoda służąca do mierzenia, jak podobne dwa elementy są reprezentowane jako wektory, które są seriami liczb. Wektory są często używane do reprezentowania punktów danych, gdzie każdy element wektora reprezentuje funkcję lub atrybut punktu danych.
Podobieństwo wektorów jest często obliczane przy użyciu metryk odległości, takich jak Euclidean distance
lub cosine
podobieństwo. Odległość euklidesowa mierzy odległość linii prostej między dwoma wektorami w przestrzeni nwymiarowej, podczas gdy podobieństwo cosinusu mierzy cosinus kąta między dwoma wektorami. Wartości metryk podobieństwa zwykle wahają się między 0
i 1
, a higher
wartości wskazują większą podobieństwo między wektorami.
Podobieństwo wektorów jest szeroko stosowane w różnych aplikacjach, takich jak systemy rekomendacji, klasyfikacja tekstu, rozpoznawanie obrazów i klastrowanie. Na przykład w systemach rekomendacji podobieństwo wektorów może służyć do identyfikowania podobnych elementów na podstawie preferencji użytkownika. W klasyfikacji tekstu podobieństwo wektorów może służyć do określania podobieństwa między dwoma dokumentami lub zdaniami na podstawie ich reprezentacji wektorowych.
Osadzanie
Osadzanie to technika oceny "związku" tekstu, obrazów, filmów wideo lub innych typów informacji. Ocena pozwala modelom uczenia maszynowego efektywnie identyfikować relacje i podobieństwa między danymi, umożliwiając algorytmom identyfikowanie wzorców i dokładne przewidywanie. Na przykład w zadaniu analizy tonacji wyrazy z podobnymi osadzaniami mogą mieć podobne wyniki tonacji.
Wprowadzenie
Utwórz tabelę tblvector
z kolumną embedding
typu vector(3)
reprezentującą wektor trójwymiarowy.
CREATE TABLE tblvector(
id bigserial PRIMARY KEY,
embedding vector(3)
);
Po wygenerowaniu osadzania przy użyciu usługi, takiej jak interfejs API OpenAI, możesz przechowywać wynikowy wektor w bazie danych. Definiowanie wektora jako vector(3)
wyznaczanego na płaszczyźnie [x,y,z] coordinates
trójwymiarowej. Polecenie wstawia pięć nowych wierszy do tblvector
tabeli z podanymi osadzaniami.
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]');
Za pomocą instrukcji INSERT INTO ... ON CONFLICT
można określić alternatywną akcję, taką jak aktualizowanie rekordów spełniających kryteria. Umożliwia ona obsługę potencjalnych konfliktów w bardziej wydajny i skuteczny sposób.
INSERT INTO tblvector (id, embedding) VALUES (1, '[1,2,3]'), (2, '[4,5,6]')
ON CONFLICT (id) DO UPDATE SET embedding = EXCLUDED.embedding;
Polecenie DELETE
usuwa wiersze z określonej tabeli na podstawie warunków określonych w klauzuli WHERE. Gdy klauzula WHERE nie jest obecna, wszystkie wiersze w tabeli zostaną usunięte.
DELETE FROM tblvector WHERE id = 1;
Aby pobrać wektory i obliczyć podobieństwo, użyj SELECT
instrukcji i wbudowanych operatorów wektorów. Na przykład zapytanie oblicza odległość euklidesy (odległość L2) między danym wektorem a wektorami przechowywanymi w tblvector
tabeli, sortuje wyniki według odległości obliczeniowej i zwraca najbliższe pięć najbardziej podobnych elementów.
SELECT * FROM tblvector
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;
Zapytanie używa operatora "<->", który jest "operatorem odległości" używanym do obliczania odległości między dwoma wektorami w przestrzeni wielowymiarowej. Zapytanie zwraca wszystkie wiersze o odległości mniejszej niż 6 od wektora [3,1,2].
SELECT * FROM tblvector WHERE embedding <-> '[3,1,2]' < 6;
Polecenie pobiera średnią wartość kolumny "osadzanie" z tabeli "tblvector". Jeśli na przykład kolumna "osadzanie" zawiera wyrazy osadzania dla modelu językowego, średnia wartość tych osadzeń może służyć do reprezentowania całego zdania lub dokumentu.
SELECT AVG(embedding) FROM tblvector;
Operatory wektorowe
pgvector
wprowadza sześć nowych operatorów, które mogą być używane w wektorach:
Operator | opis |
---|---|
+ | dodawanie elementu mądrego |
- | odejmowanie elementu mądrego |
* | mnożenie mnożenia elementów |
<-> | Odległość euklidesowa |
<#> | ujemny produkt wewnętrzny |
<=> | odległość cosinusu |
Funkcje wektorowe
cosine_distance
Oblicza odległość cosinusu między dwoma wektorami.
cosine_distance(vector, vector)
Argumenty
vector
Najpierw vector
.
vector
Drugi vector
.
Typ zwracany
double precision
jako odległość między dwoma podanymi wektorami.
inner_product
Oblicza wewnętrzny iloczyn dwóch wektorów.
inner_product(vector, vector)
Argumenty
vector
Najpierw vector
.
vector
Sekunda vector
Typ zwracany
double precision
jako wewnętrzny iloczyn dwóch wektorów.
l2_distance
Oblicza odległość euklidy (znaną również jako L2) między dwoma wektorami.
l2_distance(vector, vector)
Argumenty
vector
Najpierw vector
.
vector
Sekunda vector
Typ zwracany
double precision
jako odległość euklidesowa między dwoma wektorami.
l1_distance
Oblicza odległość taxicab (znaną również jako L1) między dwoma wektorami.
l1_distance(vector, vector)
Argumenty
vector
Najpierw vector
.
vector
Sekunda vector
Typ zwracany
double precision
jako odległość taksykowa między dwoma wektorami.
vector_dims(vector)
Zwraca wymiary danego wektora.
Argumenty
vector
Klasa vector
.
Typ zwracany
integer
reprezentujący liczbę wymiarów danego wektora.
vector_norms(vector)
Oblicza normę euklidesową danego wektora.
Argumenty
vector
Klasa vector
.
Typ zwracany
double precision
reprezentującą normę euklidesa danego wektora.
Agregacje wektorów
AVG
Oblicza średnią przetworzonych wektorów.
Argumenty
vector
Klasa vector
.
Typ zwracany
vector
reprezentujące średnią przetworzonych wektorów.
SUM
Argumenty
vector
Klasa vector
.
Typ zwracany
vector
reprezentujący sumę przetworzonych wektorów.
Podziel się swoimi sugestiami i usterkami z zespołem produktu usługi Azure Database for PostgreSQL.
Powiązana zawartość
- Optymalizowanie wydajności podczas korzystania z narzędzia pgvector w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Integracja usługi Azure Database for PostgreSQL — serwer elastyczny z usługami Azure Cognitive Services.
- Generowanie wektorowych osadzania w usłudze Azure Database for PostgreSQL — serwer elastyczny z lokalnie wdrożonym rozwiązaniem LLM (wersja zapoznawcza).
- Integracja usługi Azure Database for PostgreSQL z usługami Azure Machine Learning Services.
- Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Rozszerzenie usługi Azure AI w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Generowanie sztucznej inteligencji za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny.
- System rekomendacji z usługą Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Wyszukiwanie semantyczne za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL — serwer elastyczny.