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_text dizin türü aracılığıyla lakebase_bm25 Lakebase'e BM25 tam metin araması ekler. PostgreSQL'in standart tsvector türü ve sorgu işleçleriyle uyumludur.
Install
İlk olarak, proje ayarlarınızda Lakebase Arama'yı etkinleştirin . Ardından uzantıyı yükleyin:
CREATE EXTENSION IF NOT EXISTS lakebase_text;
Standart GIN tam metin araması yerine neden lakebase_text
PostgreSQL'in yerleşik tam metin aramasında GIN dizinleri ve ts_rank ilgi puanlaması kullanılır.
ts_rank genel corpus istatistikleri kullanmaz, bu nedenle veriler büyüdükçe puanlar düşer.
lakebase_text bunu iki şekilde geliştirir:
- BM25 derecelendirmesi terim sıklığı, belge uzunluğu ve korpus genelindeki istatistikleri aynı anda hesaplayarak TF-IDF'den daha doğru ilgi puanları üretir.
- Top-K gönderme, sonuç kümesindeki her eşleşmeyi puanlamadan dizinden yalnızca K en uygun sonuçları döndürmek için Block-Max WAND kullanır.
Hızlı başlangıç
lakebase_bm25 Veri ekledikten sonra dizini oluşturun. BM25, dizin derleme zamanındaki corpus genelindeki istatistikleri artımlı olarak değil hesaplar, bu nedenle dizin doldurulmuş bir tabloda oluşturulmalıdır.
-- Create a table with a generated tsvector column
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
passage TEXT,
vector TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', passage)) STORED
);
-- Insert data before building the BM25 index
INSERT INTO documents (passage) VALUES
('Postgres is a powerful open-source relational database.'),
('Vector search finds semantically similar results.'),
('BM25 ranking improves full-text search relevance scores.');
-- Create the BM25 index on the populated table
CREATE INDEX documents_passage_bm25 ON documents USING lakebase_bm25 (vector);
-- Query: lower score means more relevant
SELECT id, passage,
vector <@> to_bm25query(to_tsvector('english', 'database'), 'documents_passage_bm25') AS score
FROM documents
ORDER BY score
LIMIT 5;
işleci <@> negatif bir BM25 puanı döndürür. Artan puana göre sıralamak önce en uygun sonuçları döndürür.
Senkronize tablolardan doldurma
Eğer doğrudan eklemek yerine Unity Catalog'dan kaynak metni yüklüyorsanız, senkronize tablolar senkronizasyon sırasında bir tsvector sütun oluşturabilir ve senkronizasyon tamamlanır tamamlanmaz indekslemeye lakebase_bm25 hazır hale gelir.
Lakebase Search için Özel tip eşlemesi bölümüne bakınız.
Dizini doğru tutun
BM25 istatistikleri dizin derleme zamanında hesaplanır ve tarafından VACUUMgüncelleştirilir. Çoğu iş yükü için normal VACUUM , puanları doğru tutar. Büyük miktarda yeni veriyi toplu yükledikten sonra el ile çalıştırın VACUUM :
VACUUM documents;
Aramayı ayarlama
Oturum düzeyi GUC'ler
| Parametre | Type | Varsayılan | Açıklama |
|---|---|---|---|
lakebase_bm25.default_limit |
integer | 1000 |
Dizinden döndürülen en fazla sonuç sayısı. |
lakebase_bm25.prefilter |
boolean | false |
olduğunda true, BM25 puanlarını WHERE hesaplamadan önce koşulları değerlendirir. Filtreler birçok satırı ortadan kaldırdığında ve değerlendirilmeye uygun olduğunda kullanın. |
lakebase_bm25.enable_scan |
boolean | true |
false Dizini atlayarak sıralı taramayı zorlamak için olarak ayarlayın. Test için kullanışlıdır. |
SET lakebase_bm25.default_limit TO 20;
SET lakebase_bm25.prefilter = on;
her ikisi de ayarlandığında, GUC'ler dizin depolama parametrelerine göre önceliklidir.
Dizin depolama parametreleri
Bu seçenekleri dizin oluşturma zamanında veya ile ALTER INDEXayarlayın:
| Parametre | Type | Varsayılan | Menzil | Açıklama |
|---|---|---|---|---|
k1 |
real | 1.2 |
1,2 - 2,0 | Terim sıklığı doygunluğu. Daha yüksek değerler, yinelenen terimlere daha fazla ağırlık verir. |
b |
real | 0.75 |
0,0 - 1,0 | Belge uzunluğunu normalleştirme.
0.0 uzunluk normalleştirmesini devre dışı bırakır; 1.0 tam normalleştirme uygular. |
default_limit |
integer | 1000 |
1 - 65535 | Oturum GUC ayarlanmadığında geri dönüş sınırı. |
prefilter |
boolean | false |
N/A | Oturum GUC ayarlanmadığında geri dönüş ön filtre ayarı. |
-- Set parameters at index creation (use a new name — the Quick start already created documents_passage_bm25)
CREATE INDEX documents_passage_bm25_tuned ON documents USING lakebase_bm25 (vector)
WITH (default_limit = 20, k1 = 1.5);
-- Update parameters on an existing index
ALTER INDEX documents_passage_bm25_tuned SET (default_limit = 50);
API referansı
Türler
bm25query_tsvector: sorguyu tsvector hedef dizin tanımlayıcısıyla birleştirir. doğru işleneni <@>olarak kullanılır.
Operators
| Operator | Signature | İadeler | Açıklama |
|---|---|---|---|
<@> |
tsvector <@> bm25query_tsvector |
double precision |
Negatif bir BM25 puanı döndürür. Önce en uygun sonuçları almak için artan düzende sırala. |
Functions
| Function | İadeler | Açıklama |
|---|---|---|
to_bm25query(query tsvector, index regclass) |
bm25query_tsvector |
bir ve dizinin nesne tanımlayıcısından bir tsvector BM25 sorgu nesnesi oluşturur. |
İşleç sınıfları
| Class | Varsayılan değer: | Açıklama |
|---|---|---|
tsvector_bm25_ops |
tsvector |
BM25 puanlaması için sütunları tsvector işleçle eşler<@>. Bu, ile tsvectoriçin lakebase_bm25 varsayılan işleç sınıfıdır; bunu açıkça belirtmeniz gerekmez. |