lakebase_vector

Important

Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.

Tillägget lakebase_vector lägger till ungefärlig vektorsökning med närmaste granne (ANN) till Lakebase via lakebase_ann indextypen. Det är en drop-in-koppling till pgvector: samma vektortyper, avståndsoperatorer och frågesyntax fungerar utan ändringar.

Install

Aktivera Först Lakebase Search i dina projektinställningar. Installera sedan tillägget:

CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

Nyckelordet CASCADE installeras pgvector automatiskt som ett beroende.

Snabbstart

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

Befolka från synkade tabeller

Om du laddar in embeddings från Unity Catalog istället för att infoga dem direkt, kan synkade tabeller mappa en lakehouse-embeddingkolumn direkt till en Postgres-kolumn vector under synkroniseringen, istället för standardmappningen JSONB . Se Anpassad typmappning för Lakebase Search.

Konfigurera indexet

Ange build_mode vid skapande av index för att kontrollera noggrannhet/hastighetsavvägning:

  • standard (standard): optimerar för återkallande. Används för de flesta arbetsbelastningar.
  • fast: bygger snabbare vid lägre återkallning. Använd när byggtiden är viktigare än sökkvaliteten.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Skapa index samtidigt

Använd CREATE INDEX CONCURRENTLY för att skapa utan att låsa tabellen och sedan REINDEX CONCURRENTLY återskapa utan stilleståndstid:

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

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Justera söknoggrannhet

Innan du justerar anropar du lakebase_ann_index_info(index_name) för att hämta indexets lists, default_probesoch default_epsilon -värden.

Ställ in lakebase_ann.probes vid frågetillfället för att kontrollera noggrannheten/hastighetsavvägningen. Högre värden förbättrar återkallandet men långsamma frågor.

Innan du anger lakebase_ann.probesanropar du lakebase_ann_index_info för att hitta matrisen lists . Ange ett avsökningsvärde per listpost:

lists från indexinformation probes för att ställa in
[] (tom)
[222] '22'
[3333, 33333] '33, 333'

Note

Parametern lakebase_ann.probes kräver ett värde per post i lists. När matrisen lists är tom (vilket sker i små tabeller där indexverktyget inte skapar några IVF-partitioner) anger du probesinte . Om du anger ett värde när matrisen lists är tom uppstår ett fel. IVF-partitioner visas när datamängden är tillräckligt stor för att indexverktyget ska kunna partitionera den.

-- 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 styr omrankningsmarginalen. Standardvärdet 1.9 för fungerar bra för de flesta arbetsbelastningar.

SET lakebase_ann.epsilon TO '1.5';

Operatorklasser

Avståndsmått Operatorklass Frågeoperator
L2 (Euklidiska) vector_l2_ops <->
Negativ inre produkt vector_ip_ops <#>
Cosinuslikhet vector_cosine_ops <=>

Välj den operatorklass som matchar hur dina inbäddningar tränades och använd samma mått för indexet och frågan:

  • vector_cosine_ops (<=>) är cosinélikhet. Använd den för de flesta textbäddningar. Det här är det vanligaste valet.
  • vector_l2_ops (<->) är avståndet euklidiska (L2). Använd den när absolut rumsligt avstånd spelar roll och vektorer inte normaliseras.
  • vector_ip_ops (<#>) är negativ inre produkt. Använd den när vektorer förnormaliseras till enhetslängd. För enhetsvektorer är den inre produkten lika med cosinélikhet och är vanligtvis snabbare.

Referens för indexalternativ

Option Type Förinställning Description
build_mode string 'standard' Styr noggrannhet/hastighetsavvägning vid indexet byggtid. 'standard' optimerar för återkallande; 'fast' bygger snabbare med lägre träffsäkerhet.

GUC-referens

Parameter Type Förinställning Description
lakebase_ann.probes heltal[] (ta bort) Matris med antal avsökningar per partition, ett värde per post i lists. Högre värden förbättrar återkallandet på bekostnad av frågehastigheten. Kontrollera lakebase_ann_index_info längden lists för att fastställa hur många värden som ska anges.
lakebase_ann.epsilon flyta/sväva 1.9 Omrankningsmarginal. Giltigt intervall: 0.0 till 4.0.

Hjälpfunktioner

Function Returns Description
lakebase_ann_prewarm(regclass) ogiltig Läser in ett index i minnet för att eliminera svarstid för kallstart på den första frågan.
lakebase_ann_index_info(regclass) text Returnerar indexmetadata som text, inklusive lists, default_probesoch default_epsilon.

Nästa steg