Pular para o conteúdo principal

lakebase_vector

info

Beta

Este recurso está em Beta. Os administradores do espaço de trabalho podem controlar o acesso a esse recurso na página Pré-visualizações . Consulte Gerenciar prévias do Databricks.

A extensão lakebase_vector adiciona busca vetorial de vizinhos mais próximos aproximados (ANN) ao Lakebase através do tipo de índice lakebase_ann. É um complemento direto para pgvector: os mesmos tipos de vetor, operadores de distância e sintaxe de consulta funcionam sem modificação.

Instalar

Primeiro, habilite a Pesquisa Lakebase nas configurações do seu projeto. Em seguida, instale a extensão:

SQL
CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;

A palavra-chave CASCADE instala automaticamente pgvector como uma dependência.

Início rápido

SQL
-- 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;

Configure o índice

Defina build_mode na criação do índice para controlar a relação entre precisão e velocidade:

  • standard (default): otimiza para recuperação. Ideal para a maioria das cargas de trabalho.
  • fast: Constrói mais rapidamente com menor taxa de recuperação. Use esta opção quando o tempo de compilação for mais importante do que a qualidade da pesquisa.
SQL
CREATE INDEX ON items USING lakebase_ann (embedding vector_l2_ops) WITH (build_mode = 'fast');

Crie índices simultaneamente

Use CREATE INDEX CONCURRENTLY para construir sem bloquear a tabela e, em seguida, REINDEX CONCURRENTLY para reconstruir sem tempo de inatividade:

SQL
CREATE INDEX CONCURRENTLY items_embedding_ann ON items
USING lakebase_ann (embedding vector_l2_ops);

REINDEX INDEX CONCURRENTLY items_embedding_ann;

Ajuste a precisão da pesquisa

Antes de ajustar, chame lakebase_ann_index_info(index_name) para obter os valores de lists, default_probes e default_epsilon do índice.

Defina lakebase_ann.probes no momento da consulta para controlar a relação entre precisão e velocidade. Valores mais altos melhoram a recuperação de dados, mas tornam as consultas mais lentas.

Antes de definir lakebase_ann.probes, chame lakebase_ann_index_info para encontrar sua matriz lists. Defina um valor de teste por entrada de lista:

lists de informações de índice

probes para definir

[] (vazio)

[222]

'22'

[3333, 33333]

'33, 333'

nota

O parâmetro lakebase_ann.probes exige um valor por entrada em lists. Quando o array lists estiver vazio (o que acontece em tabelas pequenas onde o construtor de índice não cria partições IVF), não defina probes. Definir um valor quando o array lists estiver vazio causa um erro. As partições IVF aparecem quando seu dataset é grande o suficiente para o construtor de índice particioná-lo.

SQL
-- 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 default de 1.9 funciona bem para a maioria das cargas de trabalho.

SQL
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

<#>

Semelhança de cosseno

vector_cosine_ops

<=>

Escolha a classe de operador que corresponda a como suas incorporações foram treinadas e utilize a mesma métrica para o índice e a consulta:

  • vector_cosine_ops (<=>) é similaridade de cosseno. Utilize-o para a maioria das incorporações de texto. Esta é a escolha mais comum.
  • vector_l2_ops (<->) é a distância euclidiana (L2). Utilize-o quando a distância espacial absoluta for importante e os vetores não forem normalizados.
  • vector_ip_ops (<#>) é produto interno negativo. Utilize-o quando os vetores forem pré-normalizados para comprimento unitário. Para vetores unitários, o produto interno é igual à similaridade de cosseno e é tipicamente mais rápido.

Referência de opções de índice

Opção

Tipo

Padrão

Descrição

build_mode

string

'standard'

Controla a relação entre precisão e velocidade no momento da criação do índice. 'standard' otimiza para recall; 'fast' constrói mais rápido com recall menor.

Referência GUC

Parâmetro

Tipo

Padrão

Descrição

lakebase_ann.probes

inteiro[]

(não definido)

Array de contagens de sondagem por partição, um valor por entrada em lists. Valores mais altos melhoram o recall em detrimento da velocidade da consulta. Verifique lakebase_ann_index_info para o comprimento lists para determinar quantos valores definir.

lakebase_ann.epsilon

Float

1.9

Margem de reclassificação. Intervalo válido: 0.0 a 4.0.

Funções de utilidade

Função

Devolve

Descrição

lakebase_ann_prewarm(regclass)

vazio

Carrega um índice na memória para eliminar a latência de inicialização a frio na primeira consulta.

lakebase_ann_index_info(regclass)

TEXT

Retorna metadados de índice como texto, incluindo lists, default_probes e default_epsilon.

Passos seguintes