Skip to main content
O tipo de dado QBit reorganiza o armazenamento de vetores para tornar as buscas aproximadas mais rápidas. Em vez de armazenar juntos os elementos de cada vetor, ele agrupa as mesmas posições de dígitos binários em todos os vetores. Isso armazena os vetores com precisão total e permite escolher o nível de quantização de granularidade fina no momento da busca: leia menos bits para reduzir a E/S e acelerar os cálculos, ou mais bits para obter maior precisão. Você aproveita os ganhos de velocidade da redução da transferência de dados e do processamento proporcionada pela quantização, mas todos os dados originais continuam disponíveis quando necessário. Para declarar uma coluna do tipo QBit, use a seguinte sintaxe:
  • element_type – o tipo de cada elemento do vetor. Os tipos permitidos são Int8, BFloat16, Float32 e Float64
  • dimension – o número de elementos de cada vetor

Criando QBit

Usando o tipo QBit na definição de coluna da tabela:

Convertendo arrays em QBit

Arrays são convertidos em QBit quando o comprimento do array corresponde à dimensão do QBit. O tipo de elemento do array não precisa corresponder ao tipo de elemento do QBit. Qualquer tipo numérico de elemento é convertido automaticamente. Isso permite mover uma coluna existente de embeddings diretamente para uma coluna QBit:
A conversão também pode ser feita explicitamente com CAST, por exemplo CAST(embedding AS QBit(Float32, 8)).

Convertendo QBit para arrays

A conversão inversa reconstrói o vetor original a partir da representação transposta em bits; portanto, converter um QBit em um Array retorna os valores armazenados. Isso é o inverso de converter arrays para QBit:
O array reconstruído usa o tipo de elemento de QBit, e seus elementos são então convertidos para o tipo de elemento do array solicitado. Portanto, um cast que também altera o tipo de elemento, como de QBit(Float32, N) para Array(Float64), também funciona. Uma conversão de ida e volta Array -> QBit -> Array não perde informação para Int8, Float32 e Float64. Para BFloat16, ela corresponde a uma conversão direta para BFloat16 — a única precisão perdida é a do próprio BFloat16. Quando a dimension não é um múltiplo de 8, os elementos de preenchimento no final presentes na representação interna são descartados, de modo que o resultado sempre tenha exatamente dimension elementos.

Subcolunas do QBit

QBit implementa um padrão de acesso a subcolunas que permite acessar planos de bits individuais dos vetores armazenados. Cada posição de bit pode ser acessada usando a sintaxe .N, em que N é a posição do bit:
O número de subcolunas acessíveis depende do tipo de elemento:
  • Int8: 8 subcolunas (1-8)
  • BFloat16: 16 subcolunas (1-16)
  • Float32: 32 subcolunas (1-32)
  • Float64: 64 subcolunas (1-64)

Funções de busca vetorial

Estas são as funções de distância para busca vetorial por similaridade que usam o tipo de dado QBit:
Última modificação em 1 de julho de 2026