Povolení a používání rozšíření diskann pro flexibilní server Azure Database for PostgreSQL (Preview)
DiskANN je škálovatelný přibližný vyhledávací algoritmus nejbližšího souseda pro efektivní vektorové vyhledávání v libovolném měřítku. Nabízí vysokou úplnost, vysoké dotazy za sekundu (QPS) a nízkou latenci dotazů, a to i pro datové sady s miliardami bodů. Díky tomu je výkonný nástroj pro zpracování velkých objemů dat. Další informace o DiskANN od Microsoftu
Rozšíření pg_diskann
flexibilního serveru Azure Database for PostgreSQL přidává podporu pro použití DiskANN pro efektivní indexování vektorů a vyhledávání.
Registrace do pg_diskann
funkce Preview
pg_diskann
Flexibilní server Azure Database for PostgreSQL vyžaduje, aby se uživatelé zaregistrovali prostřednictvím našeho formuláře Preview. Pokud se chcete zaregistrovat, postupujte následovně:
- Otevření formuláře náhledu
- Vyplňte všechny relevantní podrobnosti. K povolení budeme potřebovat ID vašeho předplatného Azure.
Poznámka:
Po vyplnění formuláře náhledu bude trvat nějakou dobu, než se vaše žádost schválí. Potvrzení se odešle na váš e-mail.
Povolení pg_diskann
rozšíření
Než budete moct povolit pg_diskann
instanci flexibilního serveru Azure Database for PostgreSQL, musíte ji přidat do seznamu povolených, jak je popsáno v tom, jak používat rozšíření PostgreSQL, a zkontrolovat, jestli je správně přidaná spuštěním SHOW azure.extensions;
.
Důležité
Tato funkce Preview je dostupná jenom pro nově nasazené instance flexibilního serveru Azure Database for PostgreSQL.
Rozšíření pak můžete nainstalovat připojením k cílové databázi a spuštěním příkazu CREATE EXTENSION . Tento příkaz je potřeba opakovat zvlášť pro každou databázi, ve které chcete, aby rozšíření bylo dostupné.
CREATE EXTENSION IF NOT EXISTS pg_diskann CASCADE;
Tento příkaz povolí pgvector
, pokud ještě není ve vaší databázi PostgreSQL nainstalovaný.
Poznámka:
Chcete-li odebrat rozšíření z aktuálně připojené databáze, použijte DROP EXTENSION vector;
.
Použití diskann
metody indexového přístupu
Po instalaci rozšíření můžete vytvořit diskann
index ve sloupci tabulky, který obsahuje vektorová data. Pokud například chcete vytvořit index ve embedding
sloupci my_table
tabulky, použijte následující příkaz:
CREATE TABLE my_table (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
embedding public.vector(3)
-- other columns
);
-- insert dummy data
INSERT INTO my_table (embedding) VALUES
('[1.0, 2.0, 3.0]'),
('[4.0, 5.0, 6.0]'),
('[7.0, 8.0, 9.0]');
-- create a diskann index by using Cosine distance operator
CREATE INDEX my_table_embedding_diskann_idx ON my_table USING diskann (embedding vector_cosine_ops)
Možnosti indexu
Při vytváření indexu pomocí diskann
můžete zadat různé parametry pro řízení jeho chování. Tady jsou možnosti, které aktuálně máme:
max_neighbors
: Maximální počet hran na uzel v grafu. (Výchozí hodnota je 32)l_value_ib
: Velikost vyhledávacího seznamu během sestavení indexu (výchozí hodnota je 50)
CREATE INDEX my_table_embedding_diskann_custom_idx ON my_table USING diskann (embedding vector_cosine_ops)
WITH (
max_neighbors = 48,
l_value_ib = 100
);
Hodnotu L pro prohledávání indexu (l_value_is
) lze nastavit pro celé připojení nebo pro každou transakci (pomocí SET LOCAL
v rámci bloku transakce):
SET diskann.l_value_is = 100;
SELECT * FROM my_table ORDER BY embedding <=> '[1,2,3]' LIMIT 5; -- uses 100 candidates
Postgres se automaticky rozhodne, kdy se má použít index DiskANN. Pokud existují scénáře, které chcete vždy použít index, použijte následující příkaz:
SET LOCAL enable_seqscan TO OFF;
SELECT * FROM my_table ORDER BY embedding <=> '[1,2,3]' LIMIT 5; -- forces the use of index
Průběh indexování
S PostgreSQL 12 a novějším můžete zkontrolovat pg_stat_progress_create_index
průběh indexování.
SELECT phase, round(100.0 * blocks_done / nullif(blocks_total, 0), 1) AS "%" FROM pg_stat_progress_create_index;
Fáze vytváření indexů DiskANN jsou:
initializing
loading tuples
Upozorňující
V některých případech můžou uživatelé zaznamenat pomalé sestavování indexů.
Výběr funkce pro přístup k indexu
Typ vektoru umožňuje provádět tři typy hledání u uložených vektorů. Při provádění dotazů musíte pro index vybrat správnou funkci přístupu, aby databáze při provádění dotazů mohl váš index vzít v úvahu.
pg_diskann
podporuje následující operátory vzdálenosti.
vector_l2_ops
:<->
Euklidská vzdálenostvector_cosine_ops
:<=>
Kosinus vzdálenostvector_ip_ops
:<#>
Vnitřní produkt
Související obsah
- Povolení a používání nástroje pgvector na flexibilním serveru Azure Database for PostgreSQL
- Správa rozšíření PostgreSQL na flexibilním serveru Azure Database for PostgreSQL