Lakebase Search
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
Lakebase Searchは、Lakebase Autoscalingプロジェクトにハイブリッドベクトル検索とキーワード検索の機能を追加します。プロジェクト設定で一度有効にしてから、 lakebase_vectorとlakebase_text Postgres拡張機能をインストールして、検索機能の構築を開始してください。
仕組み
Lakebase Search は、次の 2 つの Postgres 拡張機能に基づいて構築されています。
-
**lakebase_vector**は、近似最近傍(ANN)ベクトル検索を
lakebase_annインデックスタイプ経由で追加します。pgvectorにそのまま使用できるコンパニオンです。同じベクトル型、距離演算子、クエリ構文が修正なしで機能します。内部的には、RaBitQ量子化を伴うIVFパーティショニングを使用しており、これにより、単一のインデックスで10億を超えるベクトルをサポートし、HNSWよりも最大50~100倍高速に構築できます。インデックスはストレージにバックアップされており、ウォームアップなしでスケールゼロを存続します。 -
**lakebase_text**
lakebase_bm25は、 インデックスタイプを介してBM25全文検索を追加します。PostgreSQLの標準tsvector型およびクエリ演算子と互換性があります。BM25ランキングは、単語の出現頻度、ドキュメント長、およびコーパス全体の統計を同時に考慮します。Top-Kプッシュダウン (Block-Max WAND) は、すべてのマッチをスコアリングする代わりに、インデックスからK個の最も関連性の高い結果のみを取得します。
要件
- Postgres 16以降
- プロジェクトでLakebase Searchを有効にすると、元に戻すことはできません。
Lakebase Search を有効にする
- Lakebaseプロジェクト設定で、左側のナビゲーションで**Lakebase**をクリックします。
- Lakebase Searchを有効にする をクリックします。
Lakebase Search の有効化:
- プロジェクト内のすべてのコンピュートを再起動し、アクティブな接続をすべて切断します。
lakebase_vectorとlakebase_text拡張機能をインストール可能にします- 一度有効にすると無効にすることはできません
拡張機能をインストールする
Lakebase Search を有効にした後、データベースに拡張機能をインストールします。
-- 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;
使い始める
次の例では、ベクトル列と全文検索列の両方を含むdocumentsテーブルを作成し、その後、ベクトルとキーワードのクエリを実行します:
-- 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;
拡張機能
拡張機能 | 目的 | インデックスタイプ |
|---|---|---|
ANNベクトル検索、pgvector互換 |
| |
BM25全文検索、FTS互換 |
|