Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Bu özellik Beta sürümündedir. Çalışma alanı yöneticileri Bu özelliğe erişimi Önizlemeler sayfasından denetleyebilir. Bkz. Azure Databricks önizlemelerini yönetme.
Uzantı, lakebase_vector dizin türü aracılığıyla lakebase_ann Lakebase'e yaklaşık en yakın komşu (ANN) vektör araması ekler. Pgvector'a açılan bir eşlikçidir: aynı vektör türleri, uzaklık işleçleri ve sorgu söz dizimi değişiklik yapmadan çalışır.
Install
İlk olarak, proje ayarlarınızda Lakebase Arama'yı etkinleştirin . Ardından uzantıyı yükleyin:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
anahtar CASCADE sözcüğü otomatik olarak bağımlılık olarak yüklenir pgvector .
Hızlı başlangıç
-- 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;
Senkronize tablolardan doldurma
Gömülemeleri doğrudan eklemek yerine Unity Catalog'dan yüklüyorsanız, senkronize tablolar bir göm evi gömülü sütununu senkronizasyon JSONB sırasında varsayılan eşleme yerine doğrudan Postgres vector sütununa eşleyebilir.
Lakebase Search için Özel tip eşlemesi bölümüne bakınız.
Dizini yapılandırma
Doğruluk/hız dengesini denetlemek için dizin oluşturma sırasında ayarlayın build_mode :
-
standard(varsayılan): geri çağırma için iyileştirir. Çoğu iş yükü için kullanın. -
fast: daha düşük geri çekmede daha hızlı oluşturur. Derleme süresi arama kalitesinden daha önemli olduğunda kullanın.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Dizinleri eşzamanlı olarak oluşturma
Tabloyu kilitlemeden derlemek ve kapalı CREATE INDEX CONCURRENTLY kalma süresi olmadan yeniden derlemek için kullanınREINDEX CONCURRENTLY:
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
Arama doğruluğunu ayarlama
Ayarlamadan önce dizinin lakebase_ann_index_info(index_name), listsve default_probes değerlerini almak için öğesini çağırındefault_epsilon.
Doğruluk/hız dengesini denetlemek için sorgu zamanında ayarlayın lakebase_ann.probes . Daha yüksek değerler geri çekmeyi iyileştirir ancak sorguların yavaşlığını artırır.
ayarını ayarlamadan lakebase_ann.probesönce, dizinizi lakebase_ann_index_info bulmak için öğesini arayınlists. Liste girdisi başına bir yoklama değeri ayarlayın:
lists dizin bilgilerinden |
probes ayarlamak için |
|---|---|
[] (boş) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
parametresi, lakebase_ann.probes içindeki listsgirdi başına bir değer gerektirir.
lists Dizi boş olduğunda (dizin oluşturucusunun IVF bölümü oluşturmadığı küçük tablolarda gerçekleşir), ayarlamayınprobes. Dizi boş olduğunda lists bir değer ayarlamak hataya neden olur. IvF bölümleri, veri kümeniz dizin oluşturucusunun bölümleyene kadar genişledikten sonra görünür.
-- 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 yeniden derecelendirme kenar boşluğunu denetler. varsayılan değeri 1.9 çoğu iş yükü için iyi çalışır.
SET lakebase_ann.epsilon TO '1.5';
İşleç sınıfları
| Uzaklık ölçümü | Operatör sınıfı | Sorgu işleci |
|---|---|---|
| L2 (Öklid) | vector_l2_ops |
<-> |
| Negatif iç ürün | vector_ip_ops |
<#> |
| Kosinüs benzerliği | vector_cosine_ops |
<=> |
Eklemelerinizin eğitilmesiyle eşleşen işleç sınıfını seçin ve dizin ve sorgu için aynı ölçümü kullanın:
-
vector_cosine_ops(<=>) kosinüs benzerliğidir. Çoğu metin ekleme için kullanın. Bu en yaygın seçenektir. -
vector_l2_ops(<->) Öklid (L2) uzaklığıdır. Mutlak uzamsal mesafe önemli olduğunda ve vektörler normalleştirilmediğinde kullanın. -
vector_ip_ops(<#>) negatif iç üründür. Vektörler birim uzunluğuna önceden normalleştirildiğinde kullanın. Birim vektörleri için iç ürün kosinüs benzerliğine eşittir ve genellikle daha hızlıdır.
Dizin seçenekleri başvurusu
| Seçenek | Type | Varsayılan | Açıklama |
|---|---|---|---|
build_mode |
string | 'standard' |
Dizin oluşturma zamanında doğruluğu/hız dengesini denetler.
'standard' geri çağırma için iyileştirmeler; 'fast' daha düşük geri çekme ile daha hızlı çalışır. |
GUC başvurusu
| Parametre | Type | Varsayılan | Açıklama |
|---|---|---|---|
lakebase_ann.probes |
integer[] | (kümeyi kaldır) | Bölüm başına yoklama sayısı dizisi, içindeki listsgirdi başına bir değer. Daha yüksek değerler sorgu hızına göre geri çekmeyi iyileştirir. Kaç değer ayarlanacağına karar vermek için lakebase_ann_index_info uzunluğu denetleyinlists. |
lakebase_ann.epsilon |
float | 1.9 |
Marjı yeniden derecelendirme. Geçerli aralık: 0.0 - 4.0. |
Yardımcı program işlevleri
| Function | İadeler | Açıklama |
|---|---|---|
lakebase_ann_prewarm(regclass) |
boşluk | İlk sorguda soğuk başlatma gecikmesini ortadan kaldırmak için bir dizini belleğe yükler. |
lakebase_ann_index_info(regclass) |
Başka bir metin sağlanmadığı için, verilen metne dayalı bir çeviri yapmam mümkün değil. Lütfen çevirilecek metni belirtin. | Dizin meta verilerini , listsve default_probesdahil olmak üzere default_epsilonmetin olarak döndürür. |