Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questa funzionalità è in versione beta. Gli amministratori dell'area di lavoro possono controllare l'accesso a questa funzionalità dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.
L'estensione lakebase_vector aggiunge una ricerca del vettore ann (nearest-neighbor) approssimativa a Lakebase tramite il lakebase_ann tipo di indice. Si tratta di un drop-in complementare a pgvector: gli stessi tipi di vettore, operatori di distanza e sintassi di query funzionano senza modifiche.
Install
Abilitare prima di tutto Lakebase Search nelle impostazioni del progetto. Installare quindi l'estensione:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
La CASCADE parola chiave viene pgvector installata automaticamente come dipendenza.
Avvio rapido
-- 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;
Configurare l'indice
Impostare build_mode in fase di creazione dell'indice per controllare il compromesso di accuratezza/velocità:
-
standard(impostazione predefinita): ottimizza per il richiamo. Usare per la maggior parte dei carichi di lavoro. -
fast: viene compilato più velocemente in caso di richiamo inferiore. Usare quando il tempo di compilazione è più importante della qualità della ricerca.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Compilare gli indici contemporaneamente
Usare CREATE INDEX CONCURRENTLY per compilare senza bloccare la tabella, quindi REINDEX CONCURRENTLY per ricompilare senza tempi di inattività:
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
Ottimizzare l'accuratezza della ricerca
Prima dell'ottimizzazione, chiamare lakebase_ann_index_info(index_name) per ottenere i valori , listse default_probes dell'indicedefault_epsilon.
Impostare lakebase_ann.probes in fase di query per controllare il compromesso di accuratezza/velocità. I valori più elevati migliorano il richiamo ma le query lente.
Prima di impostare lakebase_ann.probes, chiamare lakebase_ann_index_info per trovare la lists matrice. Impostare un valore probe per voce di elenco:
lists da informazioni sull'indice |
probes da impostare |
|---|---|
[] (vuoto) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
Il lakebase_ann.probes parametro richiede un valore per voce in lists. Quando la lists matrice è vuota (che si verifica in tabelle di piccole dimensioni in cui il generatore di indici non crea partizioni IVF), non impostare probes. L'impostazione di un valore quando la lists matrice è vuota causa un errore. Le partizioni IVF vengono visualizzate quando il set di dati è sufficientemente grande per il generatore di indici per partizionarlo.
-- 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 controlla il margine di ri rango. Il valore predefinito di 1.9 funziona bene per la maggior parte dei carichi di lavoro.
SET lakebase_ann.epsilon TO '1.5';
Classi di operatore
| Metrica della distanza | Classe operatore | Operatore di interrogazione |
|---|---|---|
| L2 (euclideo) | vector_l2_ops |
<-> |
| Prodotto interno negativo | vector_ip_ops |
<#> |
| Somiglianza coseno | vector_cosine_ops |
<=> |
Scegliere la classe di operatore corrispondente alla modalità di training degli incorporamenti e usare la stessa metrica per l'indice e la query:
-
vector_cosine_ops(<=>) è somiglianza coseno. Usarlo per la maggior parte degli incorporamenti di testo. Questa è la scelta più comune. -
vector_l2_ops(<->) è la distanza Euclidea (L2). Usarlo quando la distanza spaziale assoluta conta e i vettori non vengono normalizzati. -
vector_ip_ops(<#>) è prodotto interno negativo. Usarlo quando i vettori vengono pre normalizzati per la lunghezza dell'unità. Per i vettori di unità, il prodotto interno è uguale alla somiglianza del coseno ed è in genere più veloce.
Informazioni di riferimento sulle opzioni di indice
| Option | Type | Default | Description |
|---|---|---|---|
build_mode |
string | 'standard' |
Controlla il compromesso di accuratezza/velocità in fase di compilazione dell'indice.
'standard' ottimizza per il richiamo; 'fast' crea più velocemente con un richiamo inferiore. |
Informazioni di riferimento su GUC
| Parametro | Type | Default | Description |
|---|---|---|---|
lakebase_ann.probes |
integer[] | (unset) | Matrice di conteggi probe per partizione, un valore per voce in lists. I valori più elevati migliorano il richiamo al costo della velocità delle query. Verificare lakebase_ann_index_info la lists lunghezza per determinare il numero di valori da impostare. |
lakebase_ann.epsilon |
float | 1.9 |
Margine di rivalutazione. Intervallo valido: 0.0 da a 4.0. |
Funzioni di utilità
| Function | Returns | Description |
|---|---|---|
lakebase_ann_prewarm(regclass) |
vuoto | Carica un indice in memoria per eliminare la latenza di avvio a freddo nella prima query. |
lakebase_ann_index_info(regclass) |
Testo | Restituisce i metadati dell'indice come testo, inclusi lists, default_probese default_epsilon. |