lakebase_vector

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.

Passaggi successivi