lakebase_vector

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.

Próximas Etapas