lakebase_vector

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

De lakebase_vector extensie voegt bij benadering dichtstbijzijnde neighbor vectorzoekopdrachten (ANN) toe aan Lakebase via het lakebase_ann indextype. Het is een vervolgkeuzeassistent voor pgvector: dezelfde vectortypen, afstandsoperators en querysyntaxis werken zonder wijziging.

Install

Schakel eerst Lakebase Search in uw projectinstellingen in. Installeer vervolgens de extensie:

CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

Het CASCADE trefwoord wordt pgvector automatisch geïnstalleerd als een afhankelijkheid.

Snel starten

-- 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;

De index configureren

Ingesteld build_mode bij het maken van een index om de nauwkeurigheid/snelheid te bepalen:

  • standard (standaard): optimaliseert voor relevante overeenkomsten. Gebruik voor de meeste workloads.
  • fast: bouwt sneller bij lagere relevante overeenkomsten. Gebruik deze functie wanneer de bouwtijd belangrijker is dan zoekkwaliteit.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Indexen gelijktijdig bouwen

Gebruik CREATE INDEX CONCURRENTLY dit om te bouwen zonder de tabel te vergrendelen en vervolgens REINDEX CONCURRENTLY opnieuw te bouwen zonder uitvaltijd:

CREATE INDEX CONCURRENTLY items_embedding_ann ON items
  USING lakebase_ann (embedding vector_l2_ops);

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Nauwkeurigheid van zoekopdrachten afstemmen

Voordat u gaat afstemmen, roept lakebase_ann_index_info(index_name) u aan om de indexen listsen default_probesdefault_epsilon waarden op te halen.

Instellen lakebase_ann.probes op het moment van query om de nauwkeurigheid/snelheid te bepalen. Hogere waarden verbeteren relevante overeenkomsten, maar trage query's.

Voordat u deze instelt lakebase_ann.probes, roept u lakebase_ann_index_info aan om uw lists matrix te vinden. Stel één testwaarde per lijstvermelding in:

lists uit indexgegevens probes instellen
[] (leeg)
[222] '22'
[3333, 33333] '33, 333'

Note

Voor de lakebase_ann.probes parameter is één waarde per vermelding listsvereist. Als de lists matrix leeg is (wat gebeurt in kleine tabellen waarin de opbouwfunctie voor indexen geen IVF-partities maakt), moet u deze niet instellen probes. Als u een waarde instelt wanneer de lists matrix leeg is, treedt er een fout op. IVF-partities worden weergegeven zodra uw gegevensset groot genoeg is om deze te partitioneren door de opbouwfunctie voor indexen.

-- 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 bepaalt de marge voor opnieuw rangschikking. De standaardwaarde werkt 1.9 goed voor de meeste workloads.

SET lakebase_ann.epsilon TO '1.5';

Operatorklassen

Metrische gegevens voor afstand Operatorklasse Queryoperator
L2 (Euclidean) vector_l2_ops <->
Negatief binnenproduct vector_ip_ops <#>
Cosinus-gelijkenis vector_cosine_ops <=>

Kies de operatorklasse die overeenkomt met de wijze waarop uw insluitingen zijn getraind en gebruik dezelfde metrische gegevens voor de index en de query:

  • vector_cosine_ops (<=>) is cosinus-gelijkenis. Gebruik deze voor de meeste tekst insluitingen. Dit is de meest voorkomende keuze.
  • vector_l2_ops (<->) is Euclidean (L2) afstand. Gebruik deze functie wanneer absolute ruimtelijke afstand belangrijk is en vectoren niet worden genormaliseerd.
  • vector_ip_ops (<#>) is een negatief binnenproduct. Gebruik deze als vectoren vooraf zijn genormaliseerd tot eenheidslengte. Voor eenheidsvectoren is het binnenste product gelijk aan cosinus-gelijkenis en is dit doorgaans sneller.

Naslaginformatie over indexopties

Option Typ Default Description
build_mode touw 'standard' Hiermee bepaalt u de nauwkeurigheid/snelheid van de snelheid tijdens het bouwen van de index. 'standard' optimaliseert voor relevante overeenkomsten; 'fast' bouwt sneller met lagere relevante overeenkomsten.

GUC-verwijzing

Parameter Typ Default Description
lakebase_ann.probes integer[] (niet instellen) Matrix van aantal tests per partitie, één waarde per vermelding in lists. Hogere waarden verbeteren het intrekken tegen de kosten van querysnelheid. Controleer lakebase_ann_index_info op de lists lengte om te bepalen hoeveel waarden moeten worden ingesteld.
lakebase_ann.epsilon float 1.9 Marge opnieuw rangschikking. Geldig bereik: 0.0 tot 4.0.

Hulpprogrammafuncties

Function Returns Description
lakebase_ann_prewarm(regclass) leegte Laadt een index in het geheugen om koude latentie bij de eerste query te elimineren.
lakebase_ann_index_info(regclass) text Retourneert indexmetagegevens als tekst, inclusief lists, default_probesen default_epsilon.

Volgende stappen