lakebase_text

Important

Tato funkce je v beta verzi. Správci pracovního prostoru můžou řídit přístup k této funkci ze stránky Previews . Viz Manage Azure Databricks preview.

Rozšíření lakebase_text přidá fulltextové vyhledávání BM25 do Lakebase prostřednictvím typu indexu lakebase_bm25 . Je kompatibilní se standardním tsvector typem a operátory dotazů PostgreSQL.

Install

Nejprve v nastavení projektu povolte službu Lakebase Search . Pak nainstalujte rozšíření:

CREATE EXTENSION IF NOT EXISTS lakebase_text;

Integrované fulltextové vyhledávání PostgreSQL používá indexy GIN a ts_rank pro vyhodnocování relevance. ts_rank nepoužívá globální statistiku korpusu, takže skóre se snižuje při růstu dat. lakebase_text zlepšuje tuto možnost dvěma způsoby:

  • Hodnocení BM25 současně vytváří přesnější skóre relevance než TF-IDF.
  • Top-K pushdown používá Block-Max WAND k vrácení jenom nejrelevavantnějších výsledků z indexu, aniž by se v sadě výsledků hodnotily všechny shody.

Rychlý start

lakebase_bm25 Po vložení dat vytvořte index. BM25 vypočítá statistiky pro celý soubor v době sestavení indexu, nikoli přírůstkově, takže index musí být vytvořen v naplněné tabulce.

-- 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;

Operátor <@> vrátí záporné skóre BM25. Seřazení vzestupným skóre vrátí jako první nejrelevantní výsledky.

Zachování přesného indexu

Statistiky BM25 se počítají v době sestavení indexu a aktualizují .VACUUM U většiny úloh pravidelně VACUUM udržuje přesné skóre. Po hromadném načtení velkého množství nových dat spusťte VACUUM ručně:

VACUUM documents;

Gucs na úrovni relace

Parametr Typ Výchozí Description
lakebase_bm25.default_limit integer 1000 Maximální počet výsledků vrácených z indexu
lakebase_bm25.prefilter boolean false Když truevyhodnotí WHERE podmínky před výpočtem skóre BM25. Použijte, když filtry eliminují mnoho řádků a jsou levné k vyhodnocení.
lakebase_bm25.enable_scan boolean true Nastavte na false vynucení sekvenčního prohledávání a vynechání indexu. Užitečné pro testování.
SET lakebase_bm25.default_limit TO 20;
SET lakebase_bm25.prefilter = on;

Pokud jsou obě nastavené, mají guc přednost před parametry úložiště indexu.

Parametry úložiště indexu

Nastavte tyto možnosti při vytváření indexu nebo pomocí ALTER INDEX:

Parametr Typ Výchozí Rozmezí Description
k1 real 1.2 1.2 až 2.0 Nasycení frekvence termínu. Vyšší hodnoty dávají větší váhu opakovaným termínům.
b real 0.75 0.0 až 1.0 Normalizace délky dokumentu 0.0 zakazuje normalizaci délky; 1.0 použije úplnou normalizaci.
default_limit integer 1000 1 až 65535 Náhradní limit, pokud není nastavená hodnota GUC relace.
prefilter boolean false N/A Nastavení záložního předfiltru, pokud není nastavená hodnota GUC relace.
-- 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);

Referenční informace k rozhraní API

Typy

bm25query_tsvector: Kombinuje dotaz tsvector s identifikátorem cílového indexu. Používá se jako pravý operand <@>.

Operators

Operator Signature Returns Description
<@> tsvector <@> bm25query_tsvector double precision Vrátí záporné skóre BM25. Seřazení vzestupně, aby se nejdřív získaly nejrelevavantnější výsledky.

Functions

Function Returns Description
to_bm25query(query tsvector, index regclass) bm25query_tsvector Vytvoří objekt dotazu BM25 z tsvector identifikátoru objektu indexu.

Třídy operátorů

Class Výchozí hodnota pro Description
tsvector_bm25_ops tsvector Namapuje tsvector sloupce na <@> operátora pro bodování BM25. Toto je výchozí třída operátoru pro tsvector ; lakebase_bm25nemusíte ji explicitně zadávat.

Další kroky