Przejdź do głównej zawartości

PG-Vector (pgvector)

PG-Vector to rozszerzenie do PostgreSQL, pozwalające na wyszukiwanie podobieństw wektorów. Przechowuje wektory w bazie danych i umożliwia wyszukiwanie podobieństwa do nich.

Uruchamianie​

Uruchamianie PG-Vector jest bardzo proste. Wystarczy utworzyć nową bazę danych i załadować rozszerzenie PG-Vector.

Utwórz wolumen dla danych:

cgc volume create -s 5 -sc <storage_class> pgvector-volume

Uruchom bazę danych z podłączonym wolumenem:

cgc db create -n pgvector-001-prod -v pgvector-volume pg-vector

Po utworzeniu bazy danych otrzymasz app token do swojej bazy danych.

warning

Zawsze twórz bazę danych z zamontowanym wolumenem. Bez -v baza zapisuje dane na ulotnym dysku poda, więc każdy restart (cgc resource restart, prace serwisowe na node, awaria) inicjalizuje PostgreSQL od zera i wszystkie dane przepadają po jednym restarcie. Z wolumenem (montowanym pod /var/lib/postgresql/data, gdzie znajduje się PGDATA) te same wiersze przetrwały cgc resource restart, a także usunięcie bazy i utworzenie jej ponownie pod tą samą nazwą z tym samym wolumenem.

Domyślna konfiguracja​

Domyślna konfiguracja dla PG-Vector jest ustawiona do używania silnika bazy danych PostgreSQL. Baza danych zostanie utworzona z następującymi parametrami:

  • POSTGRES_PASSWORD: Hasło dla użytkownika PostgreSQL. Jest ustawione na specyficzny dla CGC app_token, który otrzymujesz po utworzeniu bazy danych.
  • POSTGRES_USER=admin: Użytkownik dla bazy danych PostgreSQL.
  • POSTGRES_DB=db: Nazwa bazy danych PostgreSQL. Zawsze db — nie jest ustawiana na nazwę aplikacji, którą podałeś.
  • POSTGRES_HOST_AUTH_METHOD=trust: Konfiguruje PostgreSQL do pomijania weryfikacji hasła dla połączeń, ufając, że uwierzytelnienie już nastąpiło na poziomie systemu. Jest to wygodne do rozwoju, ale stwarza znaczące zagrożenie bezpieczeństwa w środowiskach produkcyjnych.
  • PGDATA=/var/lib/postgresql/data/pgdata: Katalog danych, podkatalog zamontowanego wolumenu.
informacja

Jeśli chcesz nadpisać POSTGRES_PASSWORD i zachować jego prawidłowe wyświetlanie podczas cgc db list -d, zalecamy użycie flagi CGC -ce app_token=TWOJE_HASŁO

Jak podłączyć się do bazy danych​

Po więcej informacji o CGC SDK i tym jak podłączyć się do bazy danych, zajrzyj do naszej dokumentacji

Instalacja​

Włącz rozszerzenie (zrób to raz w każdej bazie danych, w której chcesz go używać)

CREATE EXTENSION vector;

Przykładowe działanie​

Stwórz kolumnę wektorową z 3 wymiarami.

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

Wstaw wektory

INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');

Znajdź najbliższych sąsiadów na odległość L2

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

PGVector wspiera również:

  • iloczyn skalarny (<#>)
  • odległość cosinus (<=>)
  • odległość L1 (<+>)

Uwaga: <#> zwraca ujemny iloczyn skalarny, ponieważ Postgres obsługuje tylko kolejność rosnącą na operatorach

Po więcej informacji oraz opcji PGVector, zajrzyj do repozytorium Github