Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jak włączyć i używać
Ważne
Usługa Azure Cosmos DB for PostgreSQL nie jest już obsługiwana w przypadku nowych projektów. Nie używaj tej usługi dla nowych projektów. Zamiast tego użyj jednej z tych dwóch usług:
Użyj usługi Azure Cosmos DB for NoSQL dla rozproszonego rozwiązania bazy danych przeznaczonego dla scenariuszy o dużej skali z umową dotyczącą poziomu usług dostępności 99,999% (SLA), natychmiastowym skalowaniem automatycznym i automatycznym przejściem w tryb failover w wielu regionach.
Użyj funkcji Elastic Clusters usługi Azure Database for PostgreSQL na potrzeby fragmentowanej bazy danych PostgreSQL przy użyciu rozszerzenia Citus typu open source.
Rozszerzenie pgvector dodaje wyszukiwanie wektorów typu open source do bazy danych PostgreSQL.
W tym artykule przedstawiono dodatkowe możliwości włączone przez pgvectorusł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
Aby można było ich używać, rozszerzenia PostgreSQL muszą być włączone w bazie danych. Aby włączyć rozszerzenie, uruchom polecenie z narzędzia psql, aby załadować spakowane obiekty do bazy danych.
SELECT CREATE_EXTENSION('vector');
Uwaga
Aby wyłączyć rozszerzenie, użyj drop_extension()
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 często oblicza się, stosując metryki odległości, takie jak Euclidean distance lub podobieństwo cosine. 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. Zdefiniowanie wektora jako vector(3) oznacza na trójwymiarowej płaszczyźnie [x,y,z] coordinates. 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 "embedding" z tabeli "tblvector". Na przykład, jeśli kolumna "wektory" zawiera wektory słów dla modelu językowego, średnia wartość tych wektorów może zostać użyta 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 element po elemencie |
| - | odejmowanie elementów |
| * | mnożenie element po elemencie |
| <-> | Odległość euklidesowa |
| <#> | ujemny produkt wewnętrzny |
| <=> | odległość kosinusowa |
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ść taksówkowa między dwoma wektorami.
vector_dims(vector)
Zwraca wymiary danego wektora.
Argumenty
vector
Element vector.
Typ zwracany
integer reprezentujący liczbę wymiarów danego wektora.
vector_norms(vector)
Oblicza normę euklidesową danego wektora.
Argumenty
vector
Element vector.
Typ zwracany
double precision reprezentującą normę euklidesa danego wektora.
Agregacje wektorów
AVG
Oblicza średnią przetworzonych wektorów.
Argumenty
vector
Element vector.
Typ zwracany
vector reprezentujące średnią przetworzonych wektorów.
SUM
Argumenty
vector
Element vector.
Typ zwracany
vector reprezentujący sumę przetworzonych wektorów.
Następne kroki
Dowiedz się więcej na temat wydajności, indeksowania i ograniczeń przy użyciu polecenia pgvector.