Przejdź do głównej zawartości

PG-Vector

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.

cgc db create -n <nazwa_bazy_danych> pg-vector

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

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. Jest ustawiona na nazwę, którą podałeś podczas tworzenia bazy danych.
  • 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.

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