Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważna
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Rozszerzenie lakebase_vector dodaje przybliżone wyszukiwanie wektorów najbliższego sąsiada (ANN) do usługi Lakebase za pośrednictwem typu indeksu lakebase_ann . Jest to upuszczanie towarzysza pgvector: te same typy wektorów, operatory odległości i składnia zapytań działają bez modyfikacji.
Install
Najpierw włącz usługę Lakebase Search w ustawieniach projektu. Następnie zainstaluj rozszerzenie:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
Słowo CASCADE kluczowe automatycznie instaluje pgvector się jako zależność.
Szybki start
-- Create a table with a vector column
CREATE TABLE items (id BIGSERIAL PRIMARY KEY, embedding VECTOR(3));
-- Insert sample data
INSERT INTO items (embedding)
SELECT ARRAY[random(), random(), random()]::real[]
FROM generate_series(1, 1000);
-- Create a lakebase_ann index
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops);
-- Query using standard pgvector distance operators
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
Wypełnianie z zsynchronizowanych tabel
Jeśli ładujesz osadzenia z Unity Catalog zamiast wstawiać je bezpośrednio, tabele synchronizowane mogą mapować kolumnę osadzenia Lakehouse bezpośrednio na kolumnę Postgres vector podczas synchronizacji, zamiast domyślnego JSONB mapowania. Zobacz Mapowanie niestandardowych typów dla wyszukiwania bazy jeziora.
Konfigurowanie indeksu
Ustaw build_mode wartość przy tworzeniu indeksu, aby kontrolować dokładność/szybkość kompromisu:
-
standard(ustawienie domyślne): optymalizuje kompletność. Służy do obsługi większości obciążeń. -
fast: kompiluje się szybciej przy niższym odwołaniu. Użyj, gdy czas kompilacji ma znaczenie więcej niż jakość wyszukiwania.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Współbieżne tworzenie indeksów
Użyj CREATE INDEX CONCURRENTLY polecenia , aby skompilować bez blokowania tabeli, a następnie REINDEX CONCURRENTLY ponownie skompilować bez przestoju:
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
Dostrajanie dokładności wyszukiwania
Przed dostrajaniem wywołaj metodę lakebase_ann_index_info(index_name) , aby pobrać wartości i listsdefault_probes indeksudefault_epsilon.
Ustaw lakebase_ann.probes w czasie zapytania, aby kontrolować dokładność/szybkość kompromisu. Wyższe wartości zwiększają kompletność, ale wolne zapytania.
Przed ustawieniem lakebase_ann.probeswywołaj metodę lakebase_ann_index_info , aby znaleźć tablicę lists . Ustaw jedną wartość sondy na wpis listy:
lists z informacji o indeksie |
probes aby ustawić |
|---|---|
[] (puste) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
Parametr lakebase_ann.probes wymaga jednej wartości na wpis w pliku lists. Gdy tablica lists jest pusta (co występuje w małych tabelach, w których konstruktor indeksu nie tworzy partycji IVF), nie ustawiaj wartości probes. Ustawienie wartości, gdy tablica lists jest pusta, powoduje błąd. Partycje IVF są wyświetlane, gdy zestaw danych jest wystarczająco duży, aby konstruktor indeksu mógł go podzielić na partycje.
-- Check your index's lists length first
SELECT lakebase_ann_index_info('items_embedding_ann');
-- Set probes matching the lists array (example: one partition)
SET lakebase_ann.probes TO '22';
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon steruje marginesem ponownego klasyfikowania. Wartość domyślna 1.9 działa dobrze w przypadku większości obciążeń.
SET lakebase_ann.epsilon TO '1.5';
Klasy operatorów
| Metryka odległości | Klasa operatora | Operator zapytania |
|---|---|---|
| L2 (euklidesowy) | vector_l2_ops |
<-> |
| Ujemny wewnętrzny produkt | vector_ip_ops |
<#> |
| Podobieństwo cosinusowe | vector_cosine_ops |
<=> |
Wybierz klasę operatora zgodną ze sposobem trenowania osadzania i użyj tej samej metryki dla indeksu i zapytania:
-
vector_cosine_ops(<=>) jest podobieństwem cosinusu. Służy do osadzania większości tekstu. Jest to najbardziej typowy wybór. -
vector_l2_ops(<->) to odległość euklidesowa (L2). Użyj go, gdy bezwzględne odległości przestrzenne ma znaczenie i wektory nie są znormalizowane. -
vector_ip_ops(<#>) jest ujemnym produktem wewnętrznym. Użyj go, gdy wektory są wstępnie znormalizowane do długości jednostki. W przypadku wektorów jednostkowych wewnętrzny produkt jest równy podobieństwu cosinus i jest zwykle szybszy.
Dokumentacja opcji indeksu
| Option | Typ | Default | Description |
|---|---|---|---|
build_mode |
ciąg | 'standard' |
Kontroluje dokładność/szybkość kompromisu w czasie kompilacji indeksu.
'standard' optymalizuje kompletność; 'fast' kompiluje się szybciej dzięki mniejszej kompletności. |
Dokumentacja interfejsu GUC
| Parameter | Typ | Default | Description |
|---|---|---|---|
lakebase_ann.probes |
liczba całkowita[] | (nieustawiony) | Tablica liczby sond na partycję, jedna wartość na wpis w pliku lists. Wyższe wartości zwiększają kompletność kosztem szybkości zapytań. Sprawdź lakebase_ann_index_info długość, lists aby określić, ile wartości ma być ustawionych. |
lakebase_ann.epsilon |
float | 1.9 |
Ponowne klasyfikowanie marginesu. Prawidłowy zakres: 0.0 do 4.0. |
Funkcje użytkowe
| Function | Zwroty | Description |
|---|---|---|
lakebase_ann_prewarm(regclass) |
nieważny | Ładuje indeks do pamięci, aby wyeliminować opóźnienie zimnego startu w pierwszym zapytaniu. |
lakebase_ann_index_info(regclass) |
SMS | Zwraca metadane indeksu jako tekst, w tym lists, default_probesi default_epsilon. |