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.
Lakebase Search, Lakebase Otomatik Ölçeklendirme projelerine karma vektör ve anahtar sözcük araması ekler. Proje ayarlarınızda bir kez etkinleştirin, ardından ve Postgres uzantılarını yükleyip lakebase_vectorlakebase_text arama özellikleri oluşturmaya başlayın.
Vektör, anahtar sözcük ve karma arama
Lakebase Search iki tamamlayıcı arama yöntemi sağlar. Kendi başına kullanın veya karma arama için bunları birleştirin:
-
Vektör (anlamsal) arama , sözcükleri paylaşmasalar bile anlamı sorgunuza en yakın olan satırları bulur. Ekleme (model tarafından üretilen sayısal bir vektör) ile sorgularsınız ve dizin mesafeye göre en yakın vektörleri döndürür. Doğal dilde sorular, öneriler ve erişimle zenginleştirilmiş üretim (RAG) için kullanın.
lakebase_vectortarafından desteklenmektedir. -
Anahtar sözcük (tam metin) araması , BM25 ilgi puanlaması kullanarak satırları sorgunuzdaki terimlerle tam olarak ne kadar eşleştiğini göre sıralar. Bunu, ifade biçiminin önemli olduğu ad, kod ve tam terim aramaları için kullanın.
lakebase_texttarafından desteklenmektedir. - Karma arama hem aramaları çalıştırır hem de sonuçları tek bir dereceli listede birleştirir, böylece benzer ve tam terim eşleşmelerini bir arada elde edersiniz. Sorgular amacı belirli terimlerle karıştırdığında (gerçek dünyada aramada en yaygın durum) kullanın.
Nasıl çalışır?
Arka planda Lakebase Search iki Postgres uzantısı üzerine kurulmuştur:
lakebase_vector,
lakebase_anndizin türü aracılığıyla yaklaşık en yakın komşu (ANN) vektör araması sağlar. pgvector için doğrudan kullanılabilen bir yardımcıdır: aynı vektör türleri, uzaklık işleçleri ve sorgu söz dizimi herhangi bir değişiklik gerektirmeden çalışır. Dahili olarak, RaBitQ nicemlemesiyle IVF bölümlendirmesi kullanır; bu sayede tek bir indeks üzerinde 1 milyarı aşkın vektör desteklenir ve indeksler HNSW'ye kıyasla 50-100 kat daha hızlı oluşturulabilir. Dizinler depolama desteklidir ve ısınma olmadan sıfıra ölçeklendirilebilir .lakebase_text dizin türü aracılığıyla
lakebase_bm25BM25 tam metin araması ekler. PostgreSQL'in standarttsvectortürleri ve sorgu işleçleriyle uyumludur. BM25 derecelendirmesi terim sıklığı, belge uzunluğu ve korpus genelindeki istatistikleri aynı anda hesaplar. Top-K pushdown (Block-Max WAND), her eşleşmeyi puanlamak yerine dizinden yalnızca en ilgili K sonucu getirir.
Arama için göl evi verilerini servis et
Arama hizmetini göl evinden gelen veriler üzerinden sunabilirsiniz, sadece doğrudan Postgres'e yazılan veri değil. Senkronize tablolar kullanarak bir Unity Kataloğu tablosunu Lakebase'e senkronize edin ve senkronizasyon sırasında sütunlarını arama hazır Postgres tiplerine eşleyin:
- Bir gömme sütununu vektör araması için bir
vector(n)sütuna eşle. -
Anahtar kelime araması için kaynak metinden bir
tsvectorsütun oluşturun.
Senkronizasyon tamamlandıktan sonra, senkronize edilen sütunda bir lakebase_ann veya lakebase_bm25 indeks oluşturun ve uygulamalarınıza operasyonel verilerinizle birlikte düşük gecikmeli arama hizmeti sunun. Haritalama yapılandırması için Lakebase Search için Özel tip eşleme'ye bakınız.
Requirements
- Postgres 16 veya üzeri
- Projeniz için beta erişim. Lakebase Search beta sürümündedir; talep etmek için Databricks hesap temsilcinize başvurun.
- Projede Lakebase Araması'nın etkinleştirilmesi geri alınamaz
Lakebase Aramasını Etkinleştir
Projenize erişim sağlandıktan sonra proje ayarlarınızda Lakebase Arama'yı etkinleştirin:
- Lakebase projenizde sol gezinti bölmesinde Ayarlar'a tıklayın.
- Lakebase Araması'nın altında Lakebase Aramasını Etkinleştir'e tıklayın.
Warning
Lakebase Aramasını Etkinleştirme:
- Projenizdeki tüm hesaplama örneklerini yeniden başlatır ve etkin bağlantıları keser
-
lakebase_vectorvelakebase_textuzantılarını yüklemek için kullanılabilir hale getirir - Etkinleştirildikten sonra kapatılamaz
Uzantıları yükleme
Lakebase Search'ü etkinleştirdikten sonra uzantıları veritabanınıza yükleyin:
-- Required: vector search (CASCADE installs pgvector as a dependency)
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
-- Required: BM25 full-text search
CREATE EXTENSION IF NOT EXISTS lakebase_text;
Başlayın
Aşağıdaki örnek hem vektör sütunu hem de tam metin arama sütunu içeren bir tablo oluşturur documents ve ardından vektör ve anahtar sözcük sorgularını çalıştırır:
Note
Bu örneklerde, açıklama amacıyla '[0.1, 0.2, 0.3]' gibi küçük sabit vektörler kullanılır. Gerçek bir uygulamada, ekleme modeliyle harici olarak eklemeler oluşturun ve ardından sonucu sütunda depolayın VECTOR . Databricks'te, model sunumunu kullanarak (örneğin, bir not defterinde veya Databricks SQL'de) ekleme ai_query ve ardından elde edilen vektörleri Lakebase'e ekleyebilirsiniz. Sütun VECTOR(n) ve dizin, modelinizin çıkışıyla aynı boyutu n kullanmalıdır (genellikle 384 ile 1536 arasında).
-- Create a table with a vector column and a tsvector column
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL,
embedding VECTOR(3),
body_tsv TSVECTOR
);
-- Create a vector search index
CREATE INDEX ON documents USING lakebase_ann (embedding vector_cosine_ops);
-- Insert sample data and populate the tsvector column
INSERT INTO documents (title, body, embedding, body_tsv) VALUES
('Postgres overview', 'Postgres is an open-source relational database.', '[0.1, 0.2, 0.3]', to_tsvector('english', 'Postgres is an open-source relational database.')),
('Vector search guide', 'Vector search finds semantically similar results.', '[0.4, 0.5, 0.6]', to_tsvector('english', 'Vector search finds semantically similar results.')),
('Full-text search', 'BM25 ranking improves keyword search relevance.', '[0.7, 0.8, 0.9]', to_tsvector('english', 'BM25 ranking improves keyword search relevance.'));
-- Build the BM25 index after inserting data
-- BM25 computes corpus statistics at build time, not incrementally
CREATE INDEX documents_body_bm25 ON documents USING lakebase_bm25 (body_tsv);
-- Vector similarity search
SELECT id, title
FROM documents
ORDER BY embedding <=> '[0.1, 0.2, 0.3]'
LIMIT 5;
-- BM25 keyword search (lower score = more relevant)
SELECT id, title,
body_tsv <@> to_bm25query(to_tsvector('english', 'database'), 'documents_body_bm25') AS score
FROM documents
ORDER BY score
LIMIT 5;
Sonuçları karma arama ile birleştirme
Aşağıdaki karma arama örneği, documents bölümündeki tabloyu ve dizinleri yeniden kullanır. Her aramadan en iyi adayları bağımsız olarak alır, ardından Reciprocal Rank Fusion (RRF) kullanarak bunları tek bir derecelendirmede birleştirir: aramalardan birinde veya her ikisinde de iyi dereceye sahip sonuçlar daha yüksek puan alır.
WITH vector_ranked AS (
SELECT id, RANK() OVER (ORDER BY dist) AS rank
FROM (
SELECT id, embedding <=> '[0.1, 0.2, 0.3]' AS dist
FROM documents
ORDER BY dist
LIMIT 40
) v
),
keyword_ranked AS (
SELECT id, RANK() OVER (ORDER BY score) AS rank
FROM (
SELECT id, body_tsv <@> to_bm25query(to_tsvector('english', 'database'), 'documents_body_bm25') AS score
FROM documents
ORDER BY score
LIMIT 40
) k
)
SELECT d.id, d.title,
COALESCE(1.0 / (60 + v.rank), 0) + COALESCE(1.0 / (60 + k.rank), 0) AS rrf_score
FROM documents d
LEFT JOIN vector_ranked v ON d.id = v.id
LEFT JOIN keyword_ranked k ON d.id = k.id
WHERE v.id IS NOT NULL OR k.id IS NOT NULL
ORDER BY rrf_score DESC, d.id
LIMIT 10;
Her CTE kendi ilk 40 adayını alır.
RANK() eşit puanlara aynı sırayı verir. Sabit 60 , düşük dereceli sonuçların etkisini sönümler ve d.id kararlı sayfalandırma için bağları keser. Verilerinize göre liste başına LIMIT değerini ve RRF sabitini ayarlayın. Ağırlıklı puanlama gibi diğer füzyon yöntemleri de geçerlidir.
Uzantılar
| Extension | Purpose | Dizin türü |
|---|---|---|
| lakebase_vector | ANN vektör araması, pgvector uyumlu | lakebase_ann |
| lakebase_text | BM25 tam metin arama, FTS uyumlu | lakebase_bm25 |