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 vector sırasında varsayılan eşleme yerine doğrudan Postgres JSONB 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 ve endeks üretim süresini dengeler. Çoğu iş yükü için kullanın. -
quality: geri çağırma hızını artırır ama inşa etmek daha uzun sürer.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops)
WITH (build_mode = 'quality');
Geri uyumluluk için fast build modu desteklenmeye devam ediyor.
Varsayılan olarak, lakebase_ann listeleri tablonun istatistiklerine ve indeksin yapılandırmasına göre seçer. Bölüm düzenini açıkça kontrol edecek şekilde ayarlandı lists :
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops)
WITH (lists = '1000');
Endeks yapım süresi
Daha büyük olanlar shared_buffers indeks üretim süresini önemli ölçüde azaltabilir. Lakebase bu optimizasyonu yalnızca daha büyük sabit boyutlu hesaplamalarda mümkün kılar. Endeks yapısını optimize etmeden önce mevcut değeri kontrol edin:
SHOW shared_buffers;
Eğer shared_buffers 1 GB veya daha azsa, endeks derlemesine başlamadan önce geçici olarak daha büyük sabit boyutlu bir hesaplamaya boyut değiştirmeyi düşünün.
Ayrıca paralel çalışan sayısını artırarak endeks oluşturmayı hızlandırabilirsiniz.
Yapılandırma parametresi, max_parallel_maintenance_workers örneğin tek bir yardımcı komutuyla CREATE INDEXbaşlatılabilen maksimum paralel işçi sayısını belirler.
Yapılandırma parametresi, max_parallel_workers paralel işlemler için hesaplamanın destekleyebileceği maksimum çalışan sayısını belirler. Bu sınırın üzerindeki değerler max_parallel_maintenance_workers hiçbir etki yaratmaz.
Yapılandırma parametresi, max_worker_processes hesaplamanın destekleyebileceği maksimum arka plan süreci sayısını belirler. Lakebase, bu ayarı hesaplama boyutuna göre yönetir. Bu sınırın üzerindeki değerler max_parallel_workers hiçbir etki yaratmaz.
SHOW max_worker_processes;
-- Set both values to the desired parallelism minus one.
SET max_parallel_workers = 15;
SET max_parallel_maintenance_workers = 15;
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.
Sorgu sırasında kaç tüp bebek bölümünün arandığını kontrol etmek için kullanın lakebase_ann.probes . Daha yüksek değerler sorgu hızına göre geri çekmeyi iyileştirir. Varsayılan değer: 'auto'. Geri çağırma hedefinize ulaşmak için farklı değerleri test edin.
Şekli, probes 'nin listsşekliyle eşleşmelidir. Dizinizi lists bulmak için çağrılakebase_ann_index_info, ardından bir seviyeli indeks için bir değer veya iki seviyeli indeks için iki virgülle ayrılmış değer ayarlayın:
lists dizin bilgilerinden |
probes ayarlamak için |
|---|---|
[] (boş) |
'' |
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
Küçük bir veri setinde, lakebase_ann IVF bölmesi yerine tam (düz) arama kullanır ve lakebase_ann_index_info boş lists ve default_probesdöner. Bu durumda, probes ayarla bırakın.''
lists Boş olmadığında, probes şekli lists uyumayan bir değer hata oluşturur.
-- Check your index's lists array first
SELECT lakebase_ann_index_info('items_embedding_ann');
-- Then set probes to match the shape of lists.
-- One-level index (single-value lists): set one value.
SET lakebase_ann.probes TO '10';
-- Two-level index: set two ascending comma-separated values, for example '10, 20'.
-- Flat index (empty lists): leave probes set to ''.
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon tam hassasiyet mesafeleriyle kaç adayın yeniden sıralandığını kontrol eder. Daha yüksek değerler daha fazla adayı yeniden sıralama yapar ve daha uzun sürer. varsayılan değeri 'auto' çoğu iş yükü için iyi çalışır. Küçük bir veri setinde düz arama sırasında epsilon hâlâ tam hassasiyetle yeniden sıralama kontrolü yapılıyor.
Ön filtre
Varsayılan olarak, Postgres ANN indeksi aday satırları döndürdükten sonra vektör dışı filtre koşullarını uygular. Tam hassasiyetle mesafe yeniden sıralamasından önce bu koşulları değerlendirmeyi mümkün lakebase_ann.prefilter kılın:
SET lakebase_ann.prefilter TO on;
SELECT * FROM items
WHERE id % 100 = 0
ORDER BY embedding <-> '[3,1,2]'
LIMIT 10;
Ön filtreleme en iyi şekilde filtrenin ucuz değerlendirilmesi ve çoğu satırı kaldırması durumunda çalışır. Birçok satırla eşleşen veya pahalı hesaplamalar gerektiren filtreler için kapatın, çünkü indeks içindeki filtreyi değerlendirmek ek yük getirebilir.
İş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' |
Doğruluk/hız dengesini kontrol eder. Daha uzun bir endeks yapısı pahasına daha iyi geri çağırma için kullanmak 'quality' .
'fast' geriye dönük uyumluluk için desteklenmeye devam ediyor. |
lists |
string | 'auto' |
IVF bölüm düzenini belirler. Ile 'auto', uzantı tablonun istatistiklerine ve indeksin yapılandırmasına dayalı bir değer seçer. Tek bir tam sayı ( '1000' örneğin bir seviyeli indeks) veya iki seviyeli indeks için iki artan virgülle ayrılmış tam sayı '100, 1000' (örneğin iki seviyeli indeks) ayarlayın. |
GUC başvurusu
| Parametre | Type | Varsayılan | Açıklama |
|---|---|---|---|
lakebase_ann.probes |
string | 'auto' |
Her seviyede tarama yapılacak tüp bebek bölümü sayısı. Daha yüksek değerler sorgu hızına göre geri çekmeyi iyileştirir. Şekil, 'den lakebase_ann_index_infoolan diziyle lists eşleşmelidir. |
lakebase_ann.epsilon |
string | 'auto' |
Tam hassasiyet mesafeleriyle kaç adayın yeniden sıralandığını kontrol eder. Daha yüksek değerler daha fazla adayı yeniden sıralama yapar ve daha uzun sürer. |
lakebase_ann.prefilter |
sabit listesi | off |
Tam hassasiyetle mesafe yeniden sıralamasından önce vektör olmayan filtreleri değerlendirir. Geçerli değerler: on ve off. Çoğu aday satırını kaldıran ucuz filtreler için en iyisi. |
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. |