Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Important
Esse recurso está em Beta. Os administradores do workspace podem controlar o acesso a esse recurso na página Visualizações . Consulte Gerenciar visualizações do Azure Databricks.
A Lakebase Search adiciona busca híbrida por vetor e por palavra-chave aos projetos do Lakebase. Ative isso uma vez nas configurações do seu projeto e, em seguida, instale as extensões do Postgres lakebase_vector e lakebase_text para começar a criar recursos de busca.
Vetor, palavra-chave e pesquisa híbrida
O Lakebase Search fornece dois métodos de pesquisa complementares. Use por conta própria ou combine-os para pesquisa híbrida:
-
A pesquisa vetor (semântica) localiza linhas cujo significado está mais próximo da consulta, mesmo quando elas não compartilham palavras. Você consulta com uma inserção (um vetor numérico produzido por um modelo) e o índice retorna os vetores mais próximos por distância. Use-o para perguntas em linguagem natural, recomendações e geração aumentada por recuperação (RAG). Alimentado por
lakebase_vector. -
A pesquisa de palavra-chave (texto completo) classifica as linhas pelo quão bem elas correspondem aos termos exatos em sua consulta, usando a pontuação de relevância BM25. Use isso para nomes, códigos e buscas por termos exatos quando a formulação exata importa. Alimentado por
lakebase_text. - A pesquisa híbrida executa as pesquisas e combina os resultados em uma lista classificada, para que você obtenha correspondências semanticamente semelhantes e de termos exatos juntas. Use-a quando as consultas misturarem intenção com termos específicos, o caso mais comum na pesquisa do mundo real.
Como funciona
Sob o capô, o Lakebase Search é criado em duas extensões do Postgres:
lakebase_vector adiciona busca vetorial por vizinho mais próximo aproximado (ANN) por meio do tipo de índice
lakebase_ann. É um complemento de entrada para pgvector: os mesmos tipos de vetor, operadores de distância e sintaxe de consulta funcionam sem modificação. Na parte interna, ele usa particionamento IVF com quantização RaBitQ, que dá suporte a índices com mais de 1 bilhão de vetores em um único índice e é construído até 50 a 100 vezes mais rapidamente do que o HNSW. Os índices têm suporte de armazenamento e sobrevivem a dimensionamento para zero sem aquecimento.lakebase_text adiciona a pesquisa de texto completo BM25 por meio do
lakebase_bm25tipo de índice. Ele é compatível com os tipos e operadores de consulta padrãotsvectordo PostgreSQL. A classificação BM25 leva em conta a frequência dos termos, o comprimento do documento e as estatísticas do corpus como um todo simultaneamente. O top-K pushdown (Block-Max WAND) recupera apenas os K resultados mais relevantes do índice, em vez de atribuir pontuação a cada correspondência.
Disponibilizar dados do lakehouse para pesquisa
Você pode oferecer pesquisa em dados provenientes do lakehouse, não apenas em dados gravados diretamente no Postgres. Use tabelas sincronizadas para sincronizar uma tabela do Unity Catalog no Lakebase e mapeie suas colunas para tipos Postgres prontos para busca durante a sincronização:
- Mapeie uma coluna de embedding para uma
vector(n)coluna para busca vetorial. - Gerar uma
tsvectorcoluna a partir do texto fonte para busca por palavras-chave.
Após a sincronização, construa um lakebase_ann ou lakebase_bm25 índice na coluna sincronizada e sirva uma busca de baixa latência para suas aplicações junto com seus dados operacionais. Para a configuração do mapeamento, veja Mapeamento de tipos personalizados para Lakebase Search.
Requirements
- Postgres 16 ou posterior
- Acesso beta para seu projeto. O Lakebase Search está em beta; contate o representante da conta do Databricks para solicitá-lo.
- Habilitar o Lakebase Search em um projeto é irreversível
Habilitar Pesquisa do Lakebase
Depois que o projeto tiver acesso, habilite o Lakebase Search nas configurações do projeto:
- Em seu projeto do Lakebase, clique em Configurações na navegação à esquerda.
- Em Lakebase Search, clique em Habilitar Pesquisa do Lakebase.
Warning
Habilitando a Pesquisa do Lakebase:
- Reinicia todos os cálculos em seu projeto, descartando todas as conexões ativas
- Disponibiliza as extensões
lakebase_vectorelakebase_textpara instalação - Não é possível desativar uma vez habilitado
Instalar extensões
Depois de habilitar o Lakebase Search, instale as extensões em seu banco de dados:
-- 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;
Introdução
O exemplo a seguir cria uma documents tabela com uma coluna de vetor e uma coluna de pesquisa de texto completo e, em seguida, executa consultas de vetor e palavra-chave:
Note
Esses exemplos usam pequenos vetores literais, como '[0.1, 0.2, 0.3]' para ilustração. Em um aplicativo real, gere inserções externamente com um modelo de inserção e armazene o resultado na VECTOR coluna. No Databricks, você pode consultar um modelo de inserção usando o Model Serving – por exemplo, com ai_query em um notebook ou Databricks SQL – e inserir os vetores resultantes no Lakebase. A VECTOR(n) coluna e o índice devem usar a mesma dimensão n que a saída do modelo (geralmente de 384 a 1536).
-- 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;
Combinar resultados com a pesquisa híbrida
O exemplo de pesquisa híbrida a seguir reutiliza a tabela e os documents índices de Introdução. Ele recupera os principais candidatos de cada pesquisa de forma independente e, em seguida, combina-os em uma única classificação usando RRF (Reciprocal Rank Fusion): resultados que se classificam bem em uma ou ambas as pesquisas pontuam mais alto.
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;
Cada CTE obtém seus próprios 40 melhores candidatos.
RANK() atribui a mesma classificação a pontuações empatadas. O 60 constante amortece a influência de resultados de baixa classificação e d.id quebra os laços de paginação estável. Ajuste o LIMIT por lista e a constante RRF para os dados. Outros métodos de fusão, como pontuação ponderada, também são válidos.
Extensões
| Extension | Purpose | Tipo de índice |
|---|---|---|
| lakebase_vector | Pesquisa de vetor ANN, compatível com pgvector | lakebase_ann |
| lakebase_text | Pesquisa de texto completo BM25, compatível com FTS | lakebase_bm25 |