lakebase_vector

Important

Tato funkce je v beta verzi. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Viz Manage Azure Databricks preview.

Rozšíření lakebase_vector přidá do Lakebase přibližné vektorové vyhledávání nejbližšího souseda (ANN) prostřednictvím typu indexu lakebase_ann . Je to doplněk pro pgvector: stejné typy vektorů, operátory vzdálenosti a syntaxe dotazů fungují beze změny.

Install

Nejprve v nastavení projektu povolte službu Lakebase Search . Pak nainstalujte rozšíření:

CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

Klíčové CASCADE slovo se automaticky nainstaluje pgvector jako závislost.

Rychlý start

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

Konfigurace indexu

Nastavte build_mode při vytváření indexu, abyste mohli řídit kompromis přesnosti a rychlosti:

  • standard (výchozí): optimalizuje pro odvolání. Používá se pro většinu úloh.
  • fast: Sestavení je rychlejší při nižším odvolání. Používejte, když čas sestavení záleží více než na kvalitě vyhledávání.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Souběžné sestavování indexů

Slouží CREATE INDEX CONCURRENTLY k sestavení bez uzamčení tabulky a následného REINDEX CONCURRENTLY opětovného sestavení bez výpadků:

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

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Ladění přesnosti vyhledávání

Před laděním zavolejte lakebase_ann_index_info(index_name) , abyste získali index lists, default_probesa default_epsilon hodnoty.

Nastavte lakebase_ann.probes v době dotazu, abyste mohli řídit kompromis přesnosti a rychlosti. Vyšší hodnoty zlepšují úplnost, ale pomalé dotazy.

Před nastavením lakebase_ann.probeszavolejte lakebase_ann_index_info a najděte pole lists . Nastavte jednu hodnotu sondy na položku seznamu:

lists z informací o indexu probes nastavení
[] (prázdné)
[222] '22'
[3333, 33333] '33, 333'

Note

Parametr lakebase_ann.probes vyžaduje jednu hodnotu na položku v lists. lists Pokud je pole prázdné (což se děje u malých tabulek, kde tvůrce indexů nevytáčí žádné oddíly IVF), nenastavujte probes. Nastavení hodnoty, když lists je pole prázdné, způsobí chybu. Oddíly IVF se zobrazí, jakmile je vaše datová sada dostatečně velká, aby ji tvůrce indexů mohl rozdělit.

-- 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 určuje přehodnocenou marži. Výchozí hodnota 1.9 funguje dobře pro většinu úloh.

SET lakebase_ann.epsilon TO '1.5';

Třídy operátorů

Metrika vzdálenosti Třída Operátor Operátor dotazu
L2 (Euclidean) vector_l2_ops <->
Záporný vnitřní součin vector_ip_ops <#>
Kosinusová podobnost vector_cosine_ops <=>

Zvolte třídu operátoru, která odpovídá způsobu trénování vložených objektů, a použijte stejnou metriku pro index a dotaz:

  • vector_cosine_ops (<=>) je kosinus podobnost. Používejte ho pro většinu vkládání textu. Toto je nejběžnější volba.
  • vector_l2_ops (<->) je vzdálenost Euclidean (L2). Použijte ho, pokud nejsou normalizovány absolutní prostorové vzdálenosti a vektory.
  • vector_ip_ops (<#>) je negativní vnitřní součin. Použijte ho, když jsou vektory předem normalizovány na jednotkovou délku. U vektorů jednotek se vnitřní součin rovná kosinus podobnosti a obvykle je rychlejší.

Referenční informace k možnostem indexu

Option Typ Výchozí Description
build_mode řetězec 'standard' Řídí kompromis přesnosti a rychlosti v době sestavení indexu. 'standard' optimalizuje odvolání; 'fast' se sestavuje rychleji s nižší úplností.

Referenční informace k GUC

Parametr Typ Výchozí Description
lakebase_ann.probes celé číslo[] (unset) Pole počtu sond pro jednotlivé oddíly, jedna hodnota na položku v lists. Vyšší hodnoty zlepšují úplnost za cenu rychlosti dotazů. Zkontrolujte délku lists a určetelakebase_ann_index_info, kolik hodnot se má nastavit.
lakebase_ann.epsilon float 1.9 Re-ranking margin. Platný rozsah: 0.0 do 4.0.

Užitkové funkce

Function Returns Description
lakebase_ann_prewarm(regclass) prázdnota Načte index do paměti, aby se při prvním dotazu eliminovala latence studeného spuštění.
lakebase_ann_index_info(regclass) poslat SMS Vrátí metadata indexu jako text, včetně listsdefault_probes, a default_epsilon.

Další kroky