Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Important
Este recurso está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Visualizações . Ver Gerir as pré-visualizações de Azure Databricks.
O Lakebase Search adiciona pesquisa híbrida por vetores e palavras-chave aos projetos Lakebase. Ative-o uma vez nas definições do projeto, depois instala as lakebase_vector extensões e lakebase_text Postgres para começares a construir funcionalidades de pesquisa.
Pesquisa vetorial, palavra-chave e híbrida
A Lakebase Search oferece dois métodos de pesquisa complementares. Use qualquer um isoladamente, ou combine-os para pesquisa híbrida:
-
A pesquisa vetorial (semântica) encontra linhas cujo significado é o mais próximo da sua consulta, mesmo quando não partilham palavras. Faz uma consulta com uma representação vetorial (um vetor numérico produzido por um modelo), e o índice devolve os vetores mais próximos com base na distância. Utilize-o para perguntas de linguagem natural, recomendações e geração aumentada por recuperação (RAG). Alimentado por
lakebase_vector. -
A pesquisa por palavras-chave (texto completo) classifica as linhas de acordo com o quão bem correspondem exatamente aos termos da sua consulta, usando a pontuação de relevância do BM25. Use-o para nomes, códigos e consultas de termos exatos onde a redação importa. Alimentado por
lakebase_text. - A pesquisa híbrida executa ambas as pesquisas e combina os resultados numa única lista ordenada, para obter correspondências semanticamente semelhantes e de termos exatos. Use-o quando as consultas misturam intenção com termos específicos, o caso mais comum na pesquisa do mundo real.
Como funciona
No fundo, o Lakebase Search baseia-se em duas extensões da Postgres:
lakebase_vector adiciona pesquisa vetorial por vizinho mais próximo aproximado (ANN) através do tipo de índice
lakebase_ann. É um substituto direto para o pgvector: os mesmos tipos de vetores, operadores de distância e sintaxe de consulta funcionam sem necessidade de modificações. Internamente, utiliza particionamento IVF com quantização RaBitQ, que suporta índices com mais de mil milhões de vetores num só índice e é construído até 50–100 vezes mais rapidamente do que o HNSW. Os índices são armazenados e sobrevivem à escala até zero sem aquecimento.lakebase_text adiciona pesquisa em texto completo do BM25 através do
lakebase_bm25tipo índice. É compatível com os tipos padrãotsvectore operadores de consulta do PostgreSQL. A classificação BM25 contabiliza simultaneamente a frequência dos termos, o comprimento do documento e as estatísticas a nível de corpus. Top-K pushdown (Block-Max WAND) recupera apenas os K resultados mais relevantes do índice, em vez de pontuar todos os jogos.
Disponibilizar dados de lakehouse para pesquisa
Pode disponibilizar pesquisa sobre dados provenientes do lakehouse, não apenas sobre dados gravados diretamente no Postgres. Use tabelas sincronizadas para sincronizar uma tabela do Unity Catalog com o Lakebase, e mapeie as suas colunas para tipos Postgres prontos para pesquisa durante a sincronização:
- Associe uma coluna de incorporação a uma coluna
vector(n)para pesquisa por vetores. - Gerar uma
tsvectorcoluna a partir do texto de origem para pesquisa por palavras-chave.
Depois de a sincronização estar concluída, crie um índice lakebase_ann ou lakebase_bm25 na coluna sincronizada e disponibilize pesquisa de baixa latência às suas aplicações, a par dos seus dados operacionais. Para a configuração do mapeamento, veja Mapeamento de tipos personalizado para a Pesquisa Lakebase.
Requirements
- Postgres 16 ou depois
- Acesso beta para o seu projeto. O Lakebase Search está em fase beta; Contacte o seu representante de conta Databricks para solicitar.
- Ativar a Pesquisa Lakebase num projeto é irreversível
Ativar a Pesquisa Lakebase
Depois de o seu projeto ter acesso, ative a Pesquisa Lakebase nas definições do projeto:
- No seu projeto Lakebase, clique em Definições na navegação à esquerda.
- Em Pesquisa Lakebase, clique em Ativar Pesquisa Lakebase.
Warning
Ativação da Pesquisa Lakebase:
- Reinicia todos os computadores no teu projeto, perdendo todas as ligações ativas
- Disponibiliza as
lakebase_vectorextensões elakebase_textpara instalação - Não pode ser desligado depois de ativado
Instalar extensões
Depois de ativar o Lakebase Search, instale as extensões na sua base 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 seguinte cria uma documents tabela com uma coluna vetorial e uma coluna de pesquisa em texto completo, depois executa consultas vetoriais e palavras-chave:
Note
Estes exemplos usam vetores literais pequenos, como '[0.1, 0.2, 0.3]' para ilustração. Numa aplicação real, gere embeddings externamente com um modelo de embeddings e, em seguida, armazene o resultado na coluna VECTOR. No Databricks, pode consultar um modelo de embedding usando o Model Serving — por exemplo, num ai_query notebook ou no Databricks SQL — e depois inserir os vetores resultantes no Lakebase. A coluna e o VECTOR(n) índice devem usar a mesma dimensão n da saída do seu modelo (normalmente 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 pesquisa híbrida
O seguinte exemplo de pesquisa híbrida reutiliza a tabela e os documents índices do Get Started. Recolhe os melhores candidatos de cada pesquisa de forma independente e depois combina-os numa única classificação usando a Fusão de Classificação Recíproca (RRF): resultados que têm boa classificação em uma ou ambas as pesquisas obtêm pontuações mais elevadas.
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 recolhe os seus próprios 40 melhores candidatos.
RANK() atribui a mesma classificação às pontuações empatadas. A constante 60 diminui a influência de resultados com classificação inferior, e d.id desfaz empates para uma paginação estável. Ajuste a per-lista LIMIT e a constante RRF para os seus dados. Outros métodos de fusão, como a pontuação ponderada, também são válidos.
Extensions
| Extension | Purpose | Tipo de índice |
|---|---|---|
| lakebase_vector | Pesquisa vetorial ANN, compatível com pgvector | lakebase_ann |
| lakebase_text | Pesquisa em texto completo BM25, compatível com FTS | lakebase_bm25 |