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.
Lakebase Search voegt hybride vector- en trefwoordzoekopdrachten toe aan Projecten voor automatisch schalen van Lakebase. Schakel deze eenmaal in uw projectinstellingen in en installeer vervolgens de lakebase_vector en lakebase_text Postgres-extensies om te beginnen met het bouwen van zoekfuncties.
Vector, trefwoord en hybride zoekopdracht
Lakebase Search biedt twee complementaire zoekmethoden. Gebruik deze zelf of combineer ze voor hybride zoekopdrachten:
-
Met vectorzoekopdrachten (semantisch) worden rijen gevonden waarvan de betekenis het dichtst bij uw query ligt, zelfs wanneer ze geen woorden delen. U kunt een query uitvoeren met een insluiting (een numerieke vector die door een model wordt geproduceerd) en de index retourneert de dichtstbijzijnde vectoren op afstand. Gebruik het voor vragen in natuurlijke taal, aanbevelingen en retrieval-augmented generation (RAG). Mogelijk gemaakt door
lakebase_vector. -
Zoeken op trefwoorden (volledige tekst) rangschikt rijen op basis van hoe goed ze overeenkomen met de exacte termen in uw zoekopdracht, met BM25-relevantiesscores. Gebruik deze functie voor namen, codes en zoekacties voor exacte termen, waarbij de formulering belangrijk is. Mogelijk gemaakt door
lakebase_text. - Hybride zoekopdrachten voeren beide zoekopdrachten uit en combineren de resultaten in één gerangschikte lijst, zodat u semantisch vergelijkbare en exacte termen samen krijgt. Gebruik deze functie wanneer query's de intentie combineren met specifieke termen, het meest voorkomende geval in echte zoekopdrachten.
Hoe werkt het?
Onder de schermen is Lakebase Search gebouwd op twee Postgres-extensies:
lakebase_vector voegt bij benadering dichtstbijzijnde buurvectorzoekopdrachten (ANN) toe via het
lakebase_annindextype. Het is een direct inzetbare aanvulling op pgvector: dezelfde vectortypen, afstandsoperatoren en querysyntax werken zonder aanpassingen. Intern gebruikt het IVF-partitionering met RaBitQ-kwantisatie, waarmee indexen met meer dan 1 miljard vectoren worden ondersteund en die tot 50-100x sneller worden opgebouwd dan met HNSW. Indexen worden door opslag ondersteund en overleven schaal-naar-nul zonder opwarming.lakebase_text voegt BM25 zoeken in volledige tekst toe via het
lakebase_bm25indextype. Het is compatibel met de standaardtypentsvectoren queryoperators van PostgreSQL. BM25-rangschikking houdt tegelijkertijd rekening met termfrequentie, documentlengte en corpusbrede statistieken. Top-K pushdown (Block-Max WAND) haalt alleen de K-relevante resultaten op uit de index in plaats van elke wedstrijd te scoren.
Requirements
- Postgres 16 of hoger
- Bètatoegang voor uw project. Lakebase Search is in bèta; neem contact op met uw Databricks-accountvertegenwoordiger om deze aan te vragen.
- Het inschakelen van Lakebase Search voor een project kan niet ongedaan worden
Lakebase Search inschakelen
Nadat uw project toegang heeft, schakelt u Lakebase Search in uw projectinstellingen in:
- Klik in uw Lakebase-project op Instellingen in het linkernavigatievenster.
- Klik onder Lakebase Search op Lakebase Search inschakelen.
Warning
Lakebase Search inschakelen:
- Herstart alle compute-instances in uw project, waarbij alle actieve verbindingen worden verbroken
- Maakt de
lakebase_vectorenlakebase_textextensies beschikbaar om te installeren - Kan niet worden uitgeschakeld zodra deze optie is ingeschakeld
Extensies installeren
Nadat u Lakebase Search hebt ingeschakeld, installeert u de extensies in uw database:
-- 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;
Aan de slag
In het volgende voorbeeld wordt een documents tabel gemaakt met zowel een vectorkolom als een zoekkolom in volledige tekst, waarna vector- en trefwoordquery's worden uitgevoerd:
Note
In deze voorbeelden worden kleine letterlijke vectoren gebruikt, zoals '[0.1, 0.2, 0.3]' voor illustratie. Genereer in een echte toepassing extern insluitingen met een insluitmodel en sla het resultaat vervolgens op in de VECTOR kolom. In Databricks kunt u een query uitvoeren op een insluitmodel met behulp van Model Serving, bijvoorbeeld ai_query in een notebook of Databricks SQL, en vervolgens de resulterende vectoren invoegen in Lakebase. De VECTOR(n) kolom en index moeten dezelfde dimensie n gebruiken als de uitvoer van uw model (meestal 384 tot 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;
Resultaten combineren met hybride zoekopdrachten
In het volgende voorbeeld van hybride zoekopdrachten worden de documentstabel en indexen van Aan de slag opnieuw gebruikt. Het haalt de beste kandidaten uit elke zoekopdracht afzonderlijk op en combineert deze vervolgens tot één rangschikking via Reciprocal Rank Fusion (RRF): resultaten die in een of beide zoekopdrachten hoog scoren, krijgen een hogere score.
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;
Elke CTE haalt zijn eigen top 40 kandidaten op.
RANK() wijst dezelfde rang toe aan gekoppelde scores. De constante 60 dempt de invloed van lage resultaten en d.id breekt de banden voor stabiele paginering. Pas de parameter per lijst LIMIT en de RRF-constante aan voor uw gegevens. Andere samenvoegingsmethoden, zoals gewogen scoren, zijn ook geldig.
Uitbreidingen
| Extension | Purpose | Indextype |
|---|---|---|
| lakebase_vector | ANN-vectorzoekfunctie, compatibel met pgvector | lakebase_ann |
| lakebase_text | BM25 zoeken in volledige tekst, FTS-compatibel | lakebase_bm25 |