lakebase_vector

Important

Fitur ini ada di Beta. Admin ruang kerja dapat mengontrol akses ke fitur ini dari halaman Pratinjau . Lihat Kelola Pratinjau Azure Databricks.

Ekstensi ini lakebase_vector menambahkan perkiraan pencarian vektor tetangga terdekat (ANN) ke Lakebase melalui lakebase_ann jenis indeks. Ini adalah pendamping drop-in untuk pgvector: jenis vektor yang sama, operator jarak, dan pekerjaan sintaksis kueri tanpa modifikasi.

Install

Pertama, aktifkan Lakebase Search di pengaturan proyek Anda. Kemudian instal ekstensi:

CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

Kata CASCADE kunci secara otomatis diinstal pgvector sebagai dependensi.

Cepat Mulai

-- 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;

Isi dari tabel yang disinkronkan

Jika Anda memuat embedding dari Unity Catalog daripada memasukkannya langsung, tabel yang disinkronkan dapat memetakan kolom embedding lakehouse langsung ke kolom Postgres vector saat sinkronisasi, bukan pemetaan default JSONB . Lihat Pemetaan tipe kustom untuk Pencarian Lakebase.

Mengonfigurasi indeks

Atur build_mode pada pembuatan indeks untuk mengontrol akurasi/pertukaran kecepatan:

  • standard (default): mengoptimalkan untuk pengenalan. Gunakan untuk sebagian besar beban kerja.
  • fast: membangun lebih cepat pada pengenalan yang lebih rendah. Gunakan saat waktu build lebih penting daripada kualitas pencarian.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Membangun indeks secara bersamaan

Gunakan CREATE INDEX CONCURRENTLY untuk membangun tanpa mengunci tabel, lalu REINDEX CONCURRENTLY untuk membangun kembali tanpa waktu henti:

CREATE INDEX CONCURRENTLY items_embedding_ann ON items
  USING lakebase_ann (embedding vector_l2_ops);

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Menyetel akurasi pencarian

Sebelum menyetel, panggil lakebase_ann_index_info(index_name) untuk mendapatkan nilai indeks lists, default_probes, dan default_epsilon .

Atur lakebase_ann.probes pada waktu kueri untuk mengontrol akurasi/pertukaran kecepatan. Nilai yang lebih tinggi meningkatkan pengenalan tetapi kueri lambat.

Sebelum mengatur lakebase_ann.probes, panggil lakebase_ann_index_info untuk menemukan array Anda lists . Atur satu nilai pemeriksaan per entri daftar:

lists dari info indeks probes untuk mengatur
[] (kosong)
[222] '22'
[3333, 33333] '33, 333'

Note

Parameter lakebase_ann.probes memerlukan satu nilai per entri dalam lists. lists Ketika array kosong (yang terjadi pada tabel kecil di mana pembangun indeks tidak membuat partisi IVF), jangan atur probes. Mengatur nilai saat lists array kosong menyebabkan kesalahan. Partisi IVF muncul setelah himpunan data Anda cukup besar bagi penyusun indeks untuk mempartisinya.

-- 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 mengontrol margin peringkat ulang. Nilai 1.9 default bekerja dengan baik untuk sebagian besar beban kerja.

SET lakebase_ann.epsilon TO '1.5';

Kelas operator

Metrik jarak Kelas operator Operator kueri
L2 (Euclidean) vector_l2_ops <->
Hasil kali dalam negatif vector_ip_ops <#>
Kesamaan kosinus vector_cosine_ops <=>

Pilih kelas operator yang cocok dengan cara penyematan Anda dilatih, dan gunakan metrik yang sama untuk indeks dan kueri:

  • vector_cosine_ops (<=>) adalah kesamaan kosinus. Gunakan untuk sebagian besar penyematan teks. Ini adalah pilihan yang paling umum.
  • vector_l2_ops (<->) adalah jarak Euclidean (L2). Gunakan saat jarak spasial absolut penting dan vektor tidak dinormalisasi.
  • vector_ip_ops (<#>) adalah produk dalam negatif. Gunakan saat vektor dinormalisasi sebelumnya ke panjang unit. Untuk vektor unit, produk dalam sama dengan kesamaan kosinus dan biasanya lebih cepat.

Referensi opsi indeks

Option Tipe Default Deskripsi
build_mode string 'standard' Mengontrol akurasi/kecepatan tradeoff pada waktu build indeks. 'standard' mengoptimalkan untuk pengenalan; 'fast' membangun lebih cepat dengan pengenalan yang lebih rendah.

Referensi GUC

Parameter Tipe Default Deskripsi
lakebase_ann.probes bilangan bulat[] (tidak diatur) Array jumlah pemeriksaan per partisi, satu nilai per entri dalam lists. Nilai yang lebih tinggi meningkatkan pengenalan dengan biaya kecepatan kueri. lakebase_ann_index_info Periksa lists panjangnya untuk menentukan berapa banyak nilai yang akan diatur.
lakebase_ann.epsilon float 1.9 Margin peringkat ulang. Rentang yang valid: 0.0 ke 4.0.

Fungsi utilitas

Function Returns Deskripsi
lakebase_ann_prewarm(regclass) kosong Memuat indeks ke dalam memori untuk menghilangkan latensi cold-start pada kueri pertama.
lakebase_ann_index_info(regclass) kirim pesan teks Mengembalikan metadata indeks sebagai teks, termasuk lists, , default_probesdan default_epsilon.

Langkah berikutnya