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.
Importante
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.
A lakebase_vector extensão adiciona pesquisa vetorial aproximada por vizinho mais próximo (ANN) ao Lakebase através do lakebase_ann tipo de índice. É um companheiro drop-in do pgvector: os mesmos tipos de vetores, operadores de distância e sintaxe de consulta funcionam sem modificações.
Install
Primeiro, ativa o Lakebase Search nas definições do teu projeto. Depois instala a extensão:
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
A CASCADE palavra-chave instala-se 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 estiveres a carregar embeddings do Unity Catalog em vez de os inserir diretamente, as tabelas sincronizadas podem mapear uma coluna de embedding lakehouse diretamente para uma coluna Postgres vector durante a sincronização, em vez do mapeamento padrão JSONB .
Veja Mapeamento de tipos personalizado para a Pesquisa Lakebase.
Configurar o índice
Definir build_mode na criação do índice para controlar o equilíbrio entre precisão e velocidade:
-
standard(por defeito): otimiza para o recall (recall). Uso para a maioria das cargas de trabalho. -
fast: constrói mais rápido com menor recall. Use quando o tempo de construção for mais importante do que a qualidade da pesquisa.
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');
Índices de build em simultâneo
Use CREATE INDEX CONCURRENTLY para construir sem bloquear a mesa, depois REINDEX CONCURRENTLY para reconstruir 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 afinar, chame lakebase_ann_index_info(index_name) para obter os valores do índice lists, default_probes, default_epsilon , e
Define lakebase_ann.probes no momento da consulta para controlar a troca entre precisão e velocidade. Valores mais altos melhoram a recordação, mas as consultas são lentas.
Antes de configurar lakebase_ann.probes, ligue lakebase_ann_index_info para encontrar o seu lists array. Defina um valor de sonda por entrada da lista:
lists A partir de informações do índice |
probes para definir |
|---|---|
[] (vazio) |
|
[222] |
'22' |
[3333, 33333] |
'33, 333' |
Note
O lakebase_ann.probes parâmetro requer um valor por cada entrada em lists. Quando o lists array estiver vazio (o que acontece em tabelas pequenas onde o construtor de índices não cria partições IVF), não defina probes. Definir um valor quando o lists array está vazio causa um erro. As partições de FIV aparecem assim que o seu conjunto de dados é suficientemente grande para o criador de índices o particionar.
-- 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 reclassificação. O valor padrão de 1.9 funciona bem para a maioria das cargas de trabalho.
SET lakebase_ann.epsilon TO '1.5';
Classes de operadores
| 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 corresponda à forma como os seus embeddings foram treinados e use a mesma métrica para o índice e para a consulta:
-
vector_cosine_ops(<=>) é a similaridade cosseno. Use-o para a maioria das incorporações de texto. Esta é a escolha mais comum. -
vector_l2_ops(<->) é a distância euclidiana (L2). Use-o quando a distância espacial absoluta for importante e os vetores não forem normalizados. -
vector_ip_ops(<#>) é o produto interno negativo. Use-o quando os vetores estiverem pré-normalizados para unidade de comprimento. Para vetores unitários, o produto interno é igual à similaridade cosseno e é tipicamente mais rápido.
Referência de opções de índice
| Option | Tipo | Default | Description |
|---|---|---|---|
build_mode |
cadeia (de caracteres) | 'standard' |
Controla o equilíbrio entre precisão e velocidade no momento da construção do índice.
'standard' otimiza para a recordação; 'fast' Constrói mais rápido com menor recall. |
Referência GUC
| Parâmetro | Tipo | Default | Description |
|---|---|---|---|
lakebase_ann.probes |
inteiro[] | (sem definição) | Array de contagens de sondas por partição, um valor por entrada em lists. Valores mais elevados melhoram a recordação à custa da velocidade da consulta. Verifique lakebase_ann_index_info o lists comprimento para determinar quantos valores definir. |
lakebase_ann.epsilon |
float | 1.9 |
Margem de reclassificação. Intervalo válido: 0.0 até 4.0. |
Funções utilitárias
| Function | Devoluções | Description |
|---|---|---|
lakebase_ann_prewarm(regclass) |
Vazio | Carrega um índice na memória para eliminar a latência de arranque a frio na primeira consulta. |
lakebase_ann_index_info(regclass) |
enviar SMS | Devolve metadados do índice como texto, incluindo lists, default_probes, e default_epsilon. |