Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.
Lakebase Search lägger till hybridvektor- och nyckelordssökning till Lakebase-projekt. Aktivera det en gång i projektinställningarna och installera sedan postgres-tilläggen lakebase_vector och lakebase_text börja skapa sökfunktioner.
Vektor-, nyckelords- och hybridsökning
Lakebase Search innehåller två kompletterande sökmetoder. Använd antingen på egen hand eller kombinera dem för hybridsökning:
-
Vektorsökning (semantisk) hittar rader vars betydelse ligger närmast din fråga, även om de inte delar några ord. Du frågar med en inbäddning (en numerisk vektor som skapas av en modell) och indexet returnerar närmaste vektorer efter avstånd. Använd den för frågor, rekommendationer och hämtningsförhöjd generation (RAG) på naturligt språk. Drivs av
lakebase_vector. -
Nyckelordssökning (fulltext) rangordnar rader efter hur väl de matchar de exakta termerna i din fråga med hjälp av BM25-relevansbedömning. Använd den för namn, koder och exakta termsökningar där formuleringar är viktiga. Drivs av
lakebase_text. - Hybridsökningen kör både sökningar och kombinerar resultatet till en rangordnad lista, så att du får semantiskt likartade och exakta matchningar tillsammans. Använd den när frågor blandar avsikt med specifika termer, det vanligaste fallet i verklig sökning.
Så här fungerar det
Under huven bygger Lakebase Search på två Postgres-tillägg:
lakebase_vector lägger till ungefärlig vektorsökning med närmaste granne (ANN) via
lakebase_annindextypen. Det är en drop-in-koppling till pgvector: samma vektortyper, avståndsoperatorer och frågesyntax fungerar utan ändringar. Internt använder den sig av IVF-partitionering med RaBitQ-kvantisering, som stöder index med över 1 miljard vektorer i ett enda index och kan byggas upp till 50–100 gånger snabbare än HNSW. Index är lagringsbaserade och överlever skalning till noll utan uppvärmning.lakebase_text lägger till BM25-fulltextsökning via
lakebase_bm25indextypen. Den är kompatibel med PostgreSQL:s standardtypertsvectoroch frågeoperatorer. BM25-rangordning tar samtidigt hänsyn till termfrekvens, dokumentlängd och korpusövergripande statistik. Top-K pushdown (Block-Max WAND) hämtar endast de K mest relevanta resultaten från indexet i stället för att göra poäng varje match.
Tillhandahåll lakehouse-data för sökning
Du kan erbjuda sökning i data som kommer från lakehouse, inte bara data som skrivs direkt till Postgres. Använd synkade tabeller för att synka en Unity-katalogtabell till Lakebase, och mappa dess kolumner till sökklara Postgres-typer under synkroniseringen:
- Mappa en inbäddningskolumn till en
vector(n)kolumn för vektorsökning. - Generera en
tsvectorkolumn från källtexten för nyckelordssökning.
När synkroniseringen har slutförts bygger du ett lakebase_ann- eller lakebase_bm25-index på den synkroniserade kolumnen och tillhandahåller sökning med låg latens till dina applikationer tillsammans med dina driftsdata. För kartläggningskonfigurationen, se Anpassad typ av kartläggning för Lakebase Search.
Requirements
- Postgres 16 eller senare
- Betaåtkomst för projektet. Lakebase Search är i betaversion; kontakta din Databricks-kontorepresentant för att begära det.
- Att aktivera Lakebase Search för ett projekt kan inte ångras
Aktivera Lakebase Search
När projektet har åtkomst aktiverar du Lakebase Search i projektinställningarna:
- I Lakebase-projektet klickar du på Inställningar i det vänstra navigeringsfältet.
- Under Lakebase Search klickar du på Aktivera Lakebase Search.
Varning
Aktivera Lakebase Search:
- Startar om alla beräkningar i projektet och släpper alla aktiva anslutningar
- Gör tilläggen
lakebase_vectorochlakebase_texttillgängliga för installation - Det går inte att stänga av när det är aktiverat
Installera tillägg
När du har aktiverat Lakebase Search installerar du tilläggen i databasen:
-- 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;
Get started
I följande exempel skapas en documents tabell med både en vektorkolumn och en fulltextsökningskolumn och kör sedan vektor- och nyckelordsfrågor:
Note
De här exemplen använder små literalvektorer som '[0.1, 0.2, 0.3]' för illustration. I ett verkligt program genererar du inbäddningar externt med en inbäddningsmodell och lagrar sedan resultatet i VECTOR kolumnen. På Databricks kan du fråga en inbäddningsmodell med hjälp av Modellservern , till exempel med ai_query i en notebook-fil eller Databricks SQL, och sedan infoga de resulterande vektorerna i Lakebase. Kolumnen VECTOR(n) och indexet måste använda samma dimension n som modellens utdata (vanligtvis 384 till 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;
Kombinera resultat med hybridsökning
Följande hybridsökningsexempel återanvänder documents tabellen och indexen från Kom igång. Den hämtar toppkandidaterna från varje sökning oberoende av varandra och kombinerar dem sedan till en enda rangordning med hjälp av Reciprocal Rank Fusion (RRF): resultat som rankas bra i någon av eller båda sökningarna får högre poäng.
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;
Varje CTE hämtar sina egna topp 40 kandidater.
RANK() tilldelar samma rankning till lika poäng. Konstanten 60 dämpar påverkan av lågrankade resultat och d.id bryter banden för stabil sidnumrering. Justera LIMIT för varje lista och RRF-konstanten utifrån dina data. Andra fusionsmetoder, till exempel viktad bedömning, är också giltiga.
Förlängningar
| Extension | Purpose | Indextyp |
|---|---|---|
| lakebase_vector | ANN-vektorsökning, pgvector-kompatibel | lakebase_ann |
| lakebase_text | BM25 fulltextsökning, FTS-kompatibel | lakebase_bm25 |