lakebase_vector
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。
lakebase_vector 拡張は lakebase_ann インデックスタイプを通じてLakebaseにapproximate nearest-neighbor (ANN) ベクトル検索を追加します。これは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を設定して、精度と速度のトレードオフを制御します。値が大きいほど再現率は向上しますが、クエリは遅くなります。
lakebase_ann.probesを設定する前に、lakebase_ann_index_infoを呼び出してlists配列を検索します。リストエントリごとに1つのプローブ値を設定します:
|
|
|---|---|
| |
|
|
|
|
lakebase_ann.probesパラメーターは、listsのエントリごとに1つの値を必要とします。lists配列が空の場合(インデックスビルダーがIVFパーティションを作成しない小さなテーブルで発生します)、probesを設定しないでください。lists配列が空のときに値を設定するとエラーが発生します。データセットが十分に大きくなり、インデックスビルダーがパーティション分割できるようになると、IVFパーティションが表示されます。
-- Check your index's lists length first
SELECT lakebase_ann_index_info('items_embedding_ann');
-- Set probes matching the lists array (example: one partition)
SET lakebase_ann.probes TO '22';
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon 再ランキングのマージンを制御します。デフォルト値の1.9は、ほとんどのワークロードで問題なく機能します。
SET lakebase_ann.epsilon TO '1.5';
オペレータークラス
距離メトリクス | オペレータークラス | クエリ演算子 |
|---|---|---|
L2 (ユークリッド) |
|
|
負の内積 |
|
|
コサイン類似度 |
|
|
エンベディングのトレーニング方法に合ったオペレータークラスを選択し、インデックスとクエリに同じメトリクスを使用してください。
vector_cosine_ops(<=>) はコサイン類似度です。ほとんどのテキスト埋め込みに使用してください。これは最も一般的な選択肢です。vector_l2_ops(<->) はユークリッド (L2) 距離です。絶対的な空間距離が重要であり、ベクトルが正規化されていない場合に使用してください。vector_ip_ops(<#>)は負の内積です。ベクトルが単位長に事前正規化されている場合に使用します。単位ベクトルでは、内積はコサイン類似度に等しく、通常、より高速です。
インデックス オプション リファレンス
オプション | Type | デフォルト | 説明 |
|---|---|---|---|
| string |
| インデックス構築時の精度と速度のトレードオフを制御します。 |
GUC参照
パラメーター | Type | デフォルト | 説明 |
|---|---|---|---|
| 整数配列 | (未設定) |
|
| float |
| 順位付けのマージンを再調整します。有効範囲: |
ユーティリティ関数
関数 | 戻り値 | 説明 |
|---|---|---|
| 無効 | 最初のクエリにおけるコールドスタート時の遅延を解消するため、インデックスをメモリにロードします。 |
| TEXT |
|