Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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. |