lakebase_vector

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.

Passos seguintes