lakebase_vector

Wichtig

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Die lakebase_vector Erweiterung fügt über den lakebase_ann Indextyp eine ungefähre Ann-Vektorsuche zu Lakebase hinzu. Es ist ein Drop-In-Begleiter für pgvector: Die gleichen Vektortypen, Entfernungsoperatoren und Abfragesyntax funktionieren ohne Änderung.

Install

Aktivieren Sie zunächst die Lakebase-Suche in Ihren Projekteinstellungen. Installieren Sie dann die Erweiterung:

CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

Das CASCADE Schlüsselwort wird automatisch als Abhängigkeit installiert pgvector .

Schnellstart

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

Konfigurieren des Index

Legen Sie build_mode bei der Indexerstellung fest, um den Genauigkeits-/Geschwindigkeitskonflikt zu steuern:

  • standard (Standard): optimiert den Rückruf. Wird für die meisten Workloads verwendet.
  • fast: baut schneller beim niedrigeren Rückruf auf. Verwenden Sie diese Funktion, wenn die Erstellungszeit wichtiger ist als die Suchqualität.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Erstellen von Indizes gleichzeitig

Wird CREATE INDEX CONCURRENTLY verwendet, um ohne die Tabelle zu sperren, und dann REINDEX CONCURRENTLY ohne Ausfallzeiten neu zu erstellen:

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

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Optimieren der Suchgenauigkeit

Rufen Sie lakebase_ann_index_info(index_name) vor der Optimierung auf, um die Werte und lists Werte des Indexes default_probesdefault_epsilonabzurufen.

Legen Sie lakebase_ann.probes zur Abfragezeit fest, um den Genauigkeits-/Geschwindigkeitskonflikt zu steuern. Höhere Werte verbessern den Rückruf, aber langsame Abfragen.

Rufen Sie lakebase_ann_index_info vor der Einstellung lakebase_ann.probesauf, um Ihr lists Array zu finden. Legen Sie einen Probewert pro Listeneintrag fest:

lists aus Indexinformationen probes so legen Sie fest
[] (leer)
[222] '22'
[3333, 33333] '33, 333'

Note

Der lakebase_ann.probes Parameter erfordert einen Wert pro Eintrag in lists. Wenn das lists Array leer ist (was auf kleinen Tabellen geschieht, in denen der Index-Generator keine IVF-Partitionen erstellt), legen Sie nicht fest probes. Das Festlegen eines Werts, wenn das lists Array leer ist, führt zu einem Fehler. IVF-Partitionen werden angezeigt, sobald Ihr Dataset groß genug ist, damit der Index-Generator sie partitioniert.

-- 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 steuert den erneuten Rangfolgerrand. Der Standardwert eignet 1.9 sich gut für die meisten Workloads.

SET lakebase_ann.epsilon TO '1.5';

Operatorklassen

Abstandsmetrik Operatorklasse Abfrageoperator
L2 (Euklidan) vector_l2_ops <->
Negatives inneres Produkt vector_ip_ops <#>
Kosinus-Ähnlichkeit vector_cosine_ops <=>

Wählen Sie die Operatorklasse aus, die der Schulung Ihrer Einbettungen entspricht, und verwenden Sie die gleiche Metrik für den Index und die Abfrage:

  • vector_cosine_ops (<=>) ist kosinusgleichheit. Verwenden Sie sie für die meisten Texteinbettungen. Dies ist die häufigste Wahl.
  • vector_l2_ops (<->) der Abstand zwischen Euklidan (L2) ist. Verwenden Sie sie, wenn absolute räumliche Entfernung wichtig ist und Vektoren nicht normalisiert sind.
  • vector_ip_ops (<#>) ist ein negatives inneres Produkt. Verwenden Sie sie, wenn Vektoren für die Länge der Einheit vornormiert sind. Bei Einheitsvektoren entspricht das innere Produkt der Kosinusgleichheit und ist in der Regel schneller.

Referenz zu Indexoptionen

Auswahl Typ Standard Description
build_mode string 'standard' Steuert den Genauigkeits-/Geschwindigkeitskonflikt zur Indexbuildzeit. 'standard' optimiert den Rückruf; 'fast' erstellt schneller mit niedrigeren Rückrufen.

GUC-Referenz

Parameter Typ Standard Description
lakebase_ann.probes Ganzzahl[] (nicht festgelegt) Array pro Partitionssondenanzahl, ein Wert pro Eintrag in lists. Höhere Werte verbessern den Rückruf zu den Kosten der Abfragegeschwindigkeit. Überprüfen Sie lakebase_ann_index_info die lists Länge, um zu bestimmen, wie viele Werte festgelegt werden sollen.
lakebase_ann.epsilon float 1.9 Re-Ranking Margin. Gültiger Bereich: 0.0 bis 4.0.

Hilfsprogrammfunktionen

Function Rückkehr Description
lakebase_ann_prewarm(regclass) void Lädt einen Index in den Speicher, um die Latenz beim Kaltstart für die erste Abfrage zu vermeiden.
lakebase_ann_index_info(regclass) text Gibt Indexmetadaten als Text zurück, einschließlich lists, default_probesund default_epsilon.

Nächste Schritte