Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.
Lakebase Search fügt Lakebase-Autoscaling-Projekten eine hybride Vektor- und Schlüsselwortsuche hinzu. Aktivieren Sie es einmal in ihren Projekteinstellungen, und installieren Sie dann die lakebase_vector Erweiterungen und lakebase_text Postgres, um mit dem Erstellen von Suchfunktionen zu beginnen.
Vektor-, Schlüsselwort- und Hybridsuche
Lakebase Search bietet zwei ergänzende Suchmethoden. Verwenden Sie entweder eigenständig oder kombinieren Sie sie für die Hybridsuche:
-
Die Vektorsuche (Semantik) findet Zeilen, deren Bedeutung Ihrer Abfrage am nächsten kommt, auch wenn sie keine Wörter teilen. Sie fragen mit einer Einbettung (einem numerischen Vektor, der von einem Modell erzeugt wird) ab, und der Index gibt die nächsten Vektoren nach Entfernung zurück. Verwenden Sie es für Fragen in natürlicher Sprache, Empfehlungen und abrufgestützte Generierung (RAG). Unterstützt von
lakebase_vector. -
Bei der Suche mit Schlüsselwort (Volltext) werden Zeilen nach der Genauen Übereinstimmung mit den genauen Begriffen in Ihrer Abfrage mithilfe der BM25-Relevanzbewertung bewertet. Verwenden Sie es für Namen, Codes und die Suche nach exakten Begriffen, bei denen es auf die genaue Formulierung ankommt. Unterstützt von
lakebase_text. - Die Hybridsuche führt beide Suchvorgänge aus und kombiniert die Ergebnisse in einer bewerteten Liste, sodass Sie semantisch ähnliche und genaue Begriffsgleiche miteinander erzielen. Verwenden Sie sie, wenn Abfragen Absichten mit bestimmten Begriffen kombinieren, der häufigste Fall in der realen Suche.
So funktioniert es
Unter der Haube baut lakebase Search auf zwei Postgres Erweiterungen auf:
lakebase_vector fügt die approximative Nächste-Nachbarn-Vektorsuche (ANN) über den Indextyp
lakebase_annhinzu. Es ist ein Drop-In-Begleiter für pgvector: Die gleichen Vektortypen, Entfernungsoperatoren und Abfragesyntax funktionieren ohne Änderung. Intern verwendet es die IVF-Partitionierung mit RaBitQ-Quantisierung, die Indizes mit über 1 Milliarde Vektoren in einem einzelnen Index unterstützt und sich bis zu 50- bis 100-mal schneller als HNSW erstellen lässt. Indizes sind speichergestützt und überstehen einen Scale-to-Zero-Vorgang ohne Aufwärmphase.lakebase_text fügt die BM25-Volltextsuche über den
lakebase_bm25Indextyp hinzu. Es ist kompatibel mit den Standardtypentsvectorund Abfrageoperatoren von PostgreSQL. Das BM25-Ranking berücksichtigt gleichzeitig die Begriffshäufigkeit, die Dokumentlänge und korpusweite Statistiken. Top-K-Pushdown (Block-Max WAND) ruft nur die K relevantesten Ergebnisse aus dem Index ab, anstatt jede Übereinstimmung zu bewerten.
Requirements
- Postgres 16 oder höher
- Betazugriff für Ihr Projekt. Lakebase Search befindet sich in der Betaversion; wenden Sie sich an Ihren Databricks-Kontovertreter, um ihn anzufordern.
- Die Aktivierung von Lakebase Search für ein Projekt kann nicht rückgängig gemacht werden
Seebasissuche aktivieren
Nachdem Ihr Projekt Zugriff hat, aktivieren Sie die Lakebase-Suche in Ihren Projekteinstellungen:
- Klicken Sie in Ihrem Lakebase-Projekt in der linken Navigation auf "Einstellungen ".
- Klicken Sie unter "Lakebase Search" auf " Lakebase Search aktivieren".
Warnung
Aktivieren der Lakebase-Suche:
- Startet alle Berechnungen in Ihrem Projekt neu, wobei alle aktiven Verbindungen gelöscht werden.
- Macht die Erweiterungen
lakebase_vectorundlakebase_textzur Installation verfügbar. - Nach der Aktivierung kann nicht deaktiviert werden.
Installieren von Erweiterungen
Installieren Sie nach dem Aktivieren der Lakebase Search die Erweiterungen in Ihrer Datenbank:
-- 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;
Erste Schritte
Im folgenden Beispiel wird eine documents Tabelle mit einer Vektorspalte und einer Volltextsuchspalte erstellt. Anschließend werden Vektor- und Schlüsselwortabfragen ausgeführt:
Note
Diese Beispiele verwenden kleine Literalvektoren wie '[0.1, 0.2, 0.3]' zur Veranschaulichung. Generieren Sie in einer echten Anwendung externe Einbettungen mit einem Einbettungsmodell, und speichern Sie dann das Ergebnis in der VECTOR Spalte. Auf Databricks können Sie ein Einbettungsmodell mithilfe von Model Serving abfragen – z. B. mit ai_query einem Notizbuch oder Databricks SQL – und dann die resultierenden Vektoren in Lakebase einfügen. Die VECTOR(n) Spalte und der Index müssen dieselbe Dimension n wie die Ausgabe Ihres Modells verwenden (in der Regel 384 bis 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;
Kombinieren von Ergebnissen mit hybrider Suche
Im folgenden Beispiel für die Hybridsuche werden die Tabelle und die documents Indizes aus "Erste Schritte" wiederverwendet. Es ruft die besten Kandidaten aus jeder Suche unabhängig voneinander ab und kombiniert sie dann mithilfe von Reciprocal Rank Fusion (RRF) zu einer einzigen Rangliste: Ergebnisse, die in einer oder beiden Suchen gut platziert sind, werden höher eingestuft.
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;
Jede CTE fragt jeweils ihre 40 besten Kandidaten ab.
RANK() weist punktgleichen Ergebnissen denselben Rang zu. Die Konstante 60 dämpfet den Einfluss von Ergebnissen mit niedriger Rangfolge und d.id bricht Bindungen für stabile Paginierung. Passen Sie die LIMIT pro Liste und die RRF-Konstante an Ihre Daten an. Auch andere Fusionsmethoden, z. B. gewichtete Bewertungen, sind gültig.
Extensions
| Extension | Purpose | Indextyp |
|---|---|---|
| lakebase_vector | ANN-Vektorsuche, pgvector-kompatibel | lakebase_ann |
| lakebase_text | BM25 Volltextsuche, FTS-kompatibel | lakebase_bm25 |