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_vector extensão adiciona uma pesquisa de vetor aproximada de vizinho mais próximo (ANN) ao Lakebase por meio do tipo de lakebase_ann índice. É um complemento de entrada para pgvector: os mesmos tipos de vetor, operadores de distância e sintaxe de consulta funcionam sem modificação.
Install
Primeiro, habilite o Lakebase Search nas configurações do projeto. Em seguida, instale a extensão:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
A CASCADE palavra-chave é instalada pgvector automaticamente como uma dependência.
Início rápido
-- Create a table with a vector column
CREATE TABLE items (id BIGSERIAL PRIMARY KEY, embedding VECTOR(3));
-- Insert sample data
INSERT INTO items (embedding)
SELECT ARRAY[random(), random(), random()]::real[]
FROM generate_series(1, 1000);
-- Create a lakebase_ann index
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops);
-- Query using standard pgvector distance operators
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
Preencher a partir de tabelas sincronizadas
Se você estiver carregando embeddings do Unity Catalog em vez de inseri-los diretamente, tabelas sincronizadas podem mapear uma coluna de embedding do lakehouse direto para uma coluna do Postgres vector durante a sincronização, em vez do mapeamento padrão JSONB .
Veja Mapeamento de tipos personalizado para Lakebase Search.
Configurar o índice
Defina build_mode na criação do índice para controlar a compensação de precisão/velocidade:
-
standard(padrão): otimiza para recall. Use para a maioria das cargas de trabalho. -
fast: cria mais rapidamente no recall inferior. Use quando o tempo de build for mais importante do que a qualidade da pesquisa.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Compilar índices simultaneamente
Use CREATE INDEX CONCURRENTLY para compilar sem bloquear a tabela e, em seguida REINDEX CONCURRENTLY , recompilar sem tempo de inatividade:
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);
REINDEX INDEX CONCURRENTLY items_embedding_ann;
Ajustar a precisão da pesquisa
Antes de ajustar, chame lakebase_ann_index_info(index_name) para obter os valores e lists os índices do default_probesdefault_epsiloníndice.
Defina lakebase_ann.probes no tempo de consulta para controlar a troca de precisão/velocidade. Valores mais altos melhoram o recall, mas consultas lentas.
Antes de definir lakebase_ann.probes, chame lakebase_ann_index_info para localizar sua lists matriz. Defina um valor de investigação por entrada de lista:
lists a partir de informações de índice |
probes para definir |
|---|---|
[] (vazio) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
O lakebase_ann.probes parâmetro requer um valor por entrada em lists. Quando a lists matriz estiver vazia (o que acontece em tabelas pequenas em que o construtor de índices não cria partições de FIV), não defina probes. Definir um valor quando a lists matriz está vazia causa um erro. As partições de FIV aparecem quando o conjunto de dados é grande o suficiente para o construtor de índice particioná-lo.
-- Check your index's lists length first
SELECT lakebase_ann_index_info('items_embedding_ann');
-- Set probes matching the lists array (example: one partition)
SET lakebase_ann.probes TO '22';
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 10;
lakebase_ann.epsilon controla a margem de nova classificação. O valor padrão funciona bem para a maioria das 1.9 cargas de trabalho.
SET lakebase_ann.epsilon TO '1.5';
Classes de operador
| Métrica de distância | Classe de operador | Operador de consulta |
|---|---|---|
| L2 (euclidiano) | vector_l2_ops |
<-> |
| Produto interno negativo | vector_ip_ops |
<#> |
| Similaridade cosseno | vector_cosine_ops |
<=> |
Escolha a classe de operador que corresponde à forma como suas inserções foram treinadas e use a mesma métrica para o índice e a consulta:
-
vector_cosine_ops(<=>) é similaridade de cosseno. Use-o para a maioria das inserções de texto. Essa é a escolha mais comum. -
vector_l2_ops(<->) é a distância euclidiana (L2). Use-o quando a distância espacial absoluta importa e os vetores não são normalizados. -
vector_ip_ops(<#>) é um produto interno negativo. Use-o quando os vetores forem pré-normalizados para o comprimento da unidade. Para vetores de unidade, o produto interno é igual à similaridade de cosseno e normalmente é mais rápido.
Referência de opções de índice
| Opção | Tipo | Padrão | Description |
|---|---|---|---|
build_mode |
cadeia | 'standard' |
Controla a compensação de precisão/velocidade no tempo de build do índice.
'standard' otimiza para recall; 'fast' cria mais rapidamente com recall inferior. |
Referência de GUC
| Parâmetro | Tipo | Padrão | Description |
|---|---|---|---|
lakebase_ann.probes |
inteiro[] | (unset) | Matriz de contagens de investigação por partição, um valor por entrada em lists. Valores mais altos melhoram o recall ao custo da velocidade da consulta. Verifique lakebase_ann_index_info o lists comprimento para determinar quantos valores devem ser definidos. |
lakebase_ann.epsilon |
derivar | 1.9 |
Novamente classificação de margem. Intervalo válido: 0.0 para 4.0. |
Funções utilitárias
| Function | Returns | Description |
|---|---|---|
lakebase_ann_prewarm(regclass) |
vazio | Carrega um índice na memória para eliminar a latência de início frio na primeira consulta. |
lakebase_ann_index_info(regclass) |
enviar SMS | Retorna metadados de índice como texto, incluindo lists, default_probese default_epsilon. |