lakebase_text
Beta
Este recurso está em Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.
A extensão lakebase_text adiciona pesquisa de texto completo BM25 ao Lakebase através do tipo de índice lakebase_bm25. É compatível com o tipo tsvector padrão do PostgreSQL e operadores de consulta.
Instalar
Primeiro, habilite a Pesquisa Lakebase nas configurações do seu projeto. Em seguida, instale a extensão:
CREATE EXTENSION IF NOT EXISTS lakebase_text;
Por que lakebase_text em vez da pesquisa de texto completo GIN padrão
A pesquisa de texto completo integrada do PostgreSQL usa índices GIN e ts_rank para pontuação de relevância. ts_rank não usa estatísticas globais de corpus, portanto as pontuações se degradam conforme os dados crescem. lakebase_text aprimora isso de duas maneiras:
- O ranking BM25 leva em conta a frequência do termo, o comprimento do documento e as estatísticas de todo o corpus simultaneamente, produzindo pontuações de relevância mais precisas do que o TF-IDF.
- Top-K pushdown usa Block-Max WAND para retornar apenas os K resultados mais relevantes do índice, sem pontuar cada correspondência no conjunto de resultados.
Início rápido
Crie o índice lakebase_bm25 após inserir os dados. O BM25 calcula estatísticas de todo o corpus no momento da criação do índice, não incrementalmente, portanto, o índice deve ser criado em uma tabela populada.
-- 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;
O operador <@> retorna uma pontuação BM25 negativa. A ordenação por pontuação ascendente retorna os resultados mais relevantes primeiro.
Mantenha o índice preciso
As estatísticas BM25 são computadas no tempo de construção do índice e atualizadas pelo vacuum. Para a maioria das cargas de trabalho, o vacuum regular mantém as pontuações precisas. Após o carregamento em massa de uma grande quantidade de novos dados, execute o vacuum manualmente:
VACUUM documents;
Ajustar pesquisa
GUCs em nível de sessão
Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| inteiro |
| Número máximo de resultados retornados do índice. |
| boolean |
| Quando |
| boolean |
| Defina como |
SET lakebase_bm25.default_limit TO 20;
SET lakebase_bm25.prefilter = on;
GUCs têm precedência sobre os parâmetros de armazenamento de índice quando ambos estão definidos.
Parâmetros de armazenamento de índice
Defina estas opções no momento da criação do índice ou com ALTER INDEX:
Parâmetro | Tipo | Padrão | Intervalo | Descrição |
|---|---|---|---|---|
| real |
| 1,2 a 2,0 | Saturação de frequência de termos. Valores mais altos dão mais peso a termos repetidos. |
| real |
| 0,0 a 1,0 | Normalização de comprimento do documento. |
| inteiro |
| 1 a 65535 | Limite de fallback quando o GUC da sessão não está definido. |
| boolean |
| N/A | Configuração de pré-filtro de fallback quando o GUC da sessão não está definido. |
-- Set parameters at index creation
CREATE INDEX documents_passage_bm25 ON documents USING lakebase_bm25 (vector)
WITH (default_limit = 20, k1 = 1.5);
-- Update parameters on an existing index
ALTER INDEX documents_passage_bm25 SET (default_limit = 50);
Referência de API
Tipos
bm25query_tsvector: combina uma consulta tsvector com o identificador de índice de destino. Usado como operando direito de <@>.
Operadores
Operador | Assinatura | Devolve | Descrição |
|---|---|---|---|
|
|
| Retorna uma pontuação BM25 negativa. Ordene de forma ascendente para obter os resultados mais relevantes primeiro. |
Funções
Função | Devolve | Descrição |
|---|---|---|
|
| Constrói um objeto de consulta BM25 a partir de um |
Classes de operador
Aula | Default para | Descrição |
|---|---|---|
|
| Mapeia as colunas |