lakebase_vector
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
The lakebase_vector extension adds approximate nearest-neighbor (ANN) ベクトル検索 to Lakebase via the lakebase_ann index type.これはpgvectorのそのまま使えるコンパニオンです。同じベクトルタイプ、距離演算子、クエリー構文は修正なしで機能します。
インストール
まず、プロジェクト設定でLakebase Searchを有効にしてください。次に、拡張機能をインストールします。
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
CASCADE キーワードは、pgvector を依存関係として自動的にインストールします。
クイックスタート
-- Create a table with a vector column
CREATE TABLE items (id BIGSERIAL PRIMARY KEY, embedding VECTOR(3));
-- Insert sample data
INSERT INTO items (embedding)
SELECT ARRAY[random(), random(), random()]::real[]
FROM generate_series(1, 1000);
-- Create a lakebase_ann index
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops);
-- Query using standard pgvector distance operators
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
インデックスを設定
インデックス作成時に build_mode を設定して、精度と速度のトレードオフを制御します。
standard(デフォルト):recallに最適化します。ほとんどのワークロードに使用します。fast再現率が低い場合は、より高速にビルドされます。検索品質よりもビルド時間が重要な場合に使用します。
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
インデックスを同時実行で構築する
テーブルをロックせずに構築するにはCREATE INDEX CONCURRENTLY使用し、ダウンタイムなしで再構築するにはREINDEX CONCURRENTLY使用します。
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
検索精度を調整する
チューニングする前に、lakebase_ann_index_info(index_name)を呼び出してインデックスのlists、default_probes、default_epsilonの値を取得します。
クエリ時にlakebase_ann.probesを設定して、精度と速度のトレードオフを制御します。値が大きいほど再現率は向上しますが、クエリは遅くなります。
SET lakebase_ann.probes TO '10';
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon 再ランキングのマージンを制御します。デフォルト値の1.9は、ほとんどのワークロードで問題なく機能します。
SET lakebase_ann.epsilon TO '1.5';
オペレータークラス
距離メトリクス | オペレータークラス | クエリ演算子 |
|---|---|---|
L2 (ユークリッド) |
|
|
内積 |
|
|
コサイン類似度 |
|
|
インデックス オプション リファレンス
オプション | Type | デフォルト | 説明 |
|---|---|---|---|
| string |
| インデックス構築時の精度と速度のトレードオフを制御します。 |
GUC参照
パラメーター | Type | デフォルト | 説明 |
|---|---|---|---|
| 整数 | (未設定) | クエリ時にスキャンするIVFパーティションの数。値が大きいほどrecallは向上しますが、クエリ速度は低下します。 |
| float |
| 順位付けのマージンを再調整します。有効範囲: |
ユーティリティ関数
関数 | 戻り値 | 説明 |
|---|---|---|
| 無効 | 最初のクエリにおけるコールドスタート時の遅延を解消するため、インデックスをメモリにロードします。 |
| TEXT |
|