Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
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.
Služba Lakebase Search přidává do projektů automatického škálování Lakebase hybridní vektor a vyhledávání klíčových slov. Stačí jej povolit v nastavení projektu a poté nainstalovat rozšíření Postgres lakebase_vector a lakebase_text, abyste mohli začít vytvářet funkce pro vyhledávání.
Vektorové, klíčové slovo a hybridní vyhledávání
Lakebase Search poskytuje dvě doplňkové metody hledání. Použijte je buď samostatně, nebo je zkombinujte pro hybridní vyhledávání:
-
Vektorové (sémantické) hledání najde řádky, jejichž význam je nejblíže vašemu dotazu, i když sdílejí žádná slova. Dotazujete se pomocí vkládání (číselného vektoru vytvořeného modelem) a index vrátí nejbližší vektory podle vzdálenosti. Použijte ho pro dotazy v přirozeném jazyce, doporučení a generování rozšířené o vyhledávání (RAG). Využívá technologii
lakebase_vector. -
Klíčové slovo (fulltextové) vyhledávání řadí řádky podle toho, jak dobře odpovídají přesným termíny v dotazu pomocí vyhodnocování relevance BM25. Použijte ho pro názvy, kódy a přesné vyhledávání termínů, ve kterých záleží na formulaci. Využívá technologii
lakebase_text. - Hybridní vyhledávání provádí obě vyhledávání a kombinuje výsledky do jednoho seřazeného seznamu, takže získáte sémanticky podobné výsledky i přesné shody výrazů. Použijte ho, když dotazy kombinují záměr s konkrétními termíny, nejběžnějším případem při hledání v reálném světě.
Jak to funguje
Služba Lakebase Search je postavená na dvou rozšířeních Postgres:
lakebase_vector přidá přes typ indexu přibližné vektorové vyhledávání nejbližšího souseda
lakebase_ann(ANN). Je to doplněk pro pgvector: stejné typy vektorů, operátory vzdálenosti a syntaxe dotazů fungují beze změny. Interně využívá dělení IVF s kvantizací RaBitQ, která umožňuje indexy s více než 1 miliardou vektorů v rámci jediného indexu a vytváří je až 50–100× rychleji než HNSW. Indexy jsou uložené v úložišti a přežijí škálování na nulu bez nutnosti zahřívání.lakebase_text přidává fulltextové vyhledávání BM25 pomocí typu indexu
lakebase_bm25. Je kompatibilní se standardnímitsvectortypy a operátory dotazů PostgreSQL. Řazení BM25 současně zohledňuje frekvenci termínů, délku dokumentů a statistiky napříč celým korpusem. Top-K pushdown (Block-Max WAND) získá z indexu pouze K nejrelevantnějších výsledků místo bodování každé shody.
Requirements
- Postgres 16 nebo novější
- Přístup k beta verzi projektu. Lakebase Search je ve verzi beta; obraťte se na svého obchodního zástupce Databricks a požádejte o ni.
- Povolení služby Lakebase Search v projektu je nevratné.
Povolení služby Lakebase Search
Jakmile má váš projekt přístup, povolte v nastavení projektu funkci Lakebase Search:
- V projektu Lakebase klikněte v levém navigačním panelu na Nastavení .
- V části Lakebase Search klikněte na Povolit službu Lakebase Search.
Warning
Povolení služby Lakebase Search:
- Restartuje všechny výpočetní prostředky v projektu a vyřazuje všechna aktivní připojení.
- Zpřístupňuje instalaci
lakebase_vectoralakebase_textrozšíření. - Po povolení nelze vypnout
Instalace rozšíření
Po povolení služby Lakebase Search nainstalujte rozšíření do databáze:
-- Required: vector search (CASCADE installs pgvector as a dependency)
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
-- Required: BM25 full-text search
CREATE EXTENSION IF NOT EXISTS lakebase_text;
Začínáme
Následující příklad vytvoří documents tabulku s vektorovým sloupcem i fulltextovým vyhledávacím sloupcem a potom spustí vektorové a klíčové dotazy:
Note
Tyto příklady používají pro ilustraci malé literální vektory '[0.1, 0.2, 0.3]' . V reálné aplikaci vygenerujte vložení externě pomocí modelu vkládání a uložte výsledek do VECTOR sloupce. V Databricks můžete dotazovat model vkládání pomocí služby Model Serving ( například v ai_query poznámkovém bloku nebo Databricks SQL) a potom vložit výsledné vektory do Lakebase. Sloupec VECTOR(n) a index musí používat stejnou dimenzi n jako výstup modelu (obvykle 384 až 1536).
-- Create a table with a vector column and a tsvector column
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL,
embedding VECTOR(3),
body_tsv TSVECTOR
);
-- Create a vector search index
CREATE INDEX ON documents USING lakebase_ann (embedding vector_cosine_ops);
-- Insert sample data and populate the tsvector column
INSERT INTO documents (title, body, embedding, body_tsv) VALUES
('Postgres overview', 'Postgres is an open-source relational database.', '[0.1, 0.2, 0.3]', to_tsvector('english', 'Postgres is an open-source relational database.')),
('Vector search guide', 'Vector search finds semantically similar results.', '[0.4, 0.5, 0.6]', to_tsvector('english', 'Vector search finds semantically similar results.')),
('Full-text search', 'BM25 ranking improves keyword search relevance.', '[0.7, 0.8, 0.9]', to_tsvector('english', 'BM25 ranking improves keyword search relevance.'));
-- Build the BM25 index after inserting data
-- BM25 computes corpus statistics at build time, not incrementally
CREATE INDEX documents_body_bm25 ON documents USING lakebase_bm25 (body_tsv);
-- Vector similarity search
SELECT id, title
FROM documents
ORDER BY embedding <=> '[0.1, 0.2, 0.3]'
LIMIT 5;
-- BM25 keyword search (lower score = more relevant)
SELECT id, title,
body_tsv <@> to_bm25query(to_tsvector('english', 'database'), 'documents_body_bm25') AS score
FROM documents
ORDER BY score
LIMIT 5;
Kombinování výsledků s hybridním vyhledáváním
Následující příklad hybridního documents vyhledávání opět používá tabulku a indexy z Začínáme. Nejprve nezávisle získá nejlepší kandidáty z každého vyhledávání a poté je zkombinuje do jediného žebříčku pomocí metody Reciprocal Rank Fusion (RRF): výsledky, které se umístí vysoko v jednom nebo obou vyhledáváních, získají vyšší skóre.
WITH vector_ranked AS (
SELECT id, RANK() OVER (ORDER BY dist) AS rank
FROM (
SELECT id, embedding <=> '[0.1, 0.2, 0.3]' AS dist
FROM documents
ORDER BY dist
LIMIT 40
) v
),
keyword_ranked AS (
SELECT id, RANK() OVER (ORDER BY score) AS rank
FROM (
SELECT id, body_tsv <@> to_bm25query(to_tsvector('english', 'database'), 'documents_body_bm25') AS score
FROM documents
ORDER BY score
LIMIT 40
) k
)
SELECT d.id, d.title,
COALESCE(1.0 / (60 + v.rank), 0) + COALESCE(1.0 / (60 + k.rank), 0) AS rrf_score
FROM documents d
LEFT JOIN vector_ranked v ON d.id = v.id
LEFT JOIN keyword_ranked k ON d.id = k.id
WHERE v.id IS NOT NULL OR k.id IS NOT NULL
ORDER BY rrf_score DESC, d.id
LIMIT 10;
Každý CTE načte svých vlastních 40 nejlepších kandidátů.
RANK() přiřadí stejné pořadí stejným výsledkům. Konstanta 60 tlumí vliv výsledků s nízkým pořadím a d.id přeruší vazby pro stabilní stránkování. Vylaďte hodnoty per-list LIMIT a konstantu RRF pro vaše data. Jiné fúzní metody, například vážené bodování, jsou také platné.
Extensions
| Extension | Purpose | Typ indexu |
|---|---|---|
| lakebase_vector | Hledání vektorů ANN, kompatibilní s pgvectorem | lakebase_ann |
| lakebase_text | BM25 fulltextové vyhledávání, kompatibilní s FTS | lakebase_bm25 |