lakebase_text

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;

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;

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.

Sonraki Adımlar