El tipo de dato QBit reorganiza el almacenamiento de vectores para acelerar las búsquedas aproximadas. En lugar de almacenar juntos los elementos de cada vector, agrupa las mismas posiciones de bits en todos los vectores.
Esto permite almacenar los vectores con precisión completa y, al mismo tiempo, elegir el nivel de cuantización de grano fino en el momento de la búsqueda: leer menos bits para reducir el I/O y acelerar los cálculos, o más bits para obtener mayor precisión. Obtienes las ventajas de velocidad de la cuantización —menos transferencia de datos y menos cómputo—, pero todos los datos originales siguen disponibles cuando se necesitan.
Para declarar una columna de tipo QBit, usa la siguiente sintaxis:
column_name QBit(element_type, dimension)
element_type – el tipo de cada elemento del vector. Los tipos permitidos son BFloat16, Float32 y Float64
dimension – la cantidad de elementos de cada vector
Uso del tipo QBit en la definición de una columna de tabla:
CREATE TABLE test (id UInt32, vec QBit(Float32, 8)) ENGINE = Memory;
INSERT INTO test VALUES (1, [1, 2, 3, 4, 5, 6, 7, 8]), (2, [9, 10, 11, 12, 13, 14, 15, 16]);
SELECT vec FROM test ORDER BY id;
┌─vec──────────────────────┐
│ [1,2,3,4,5,6,7,8] │
│ [9,10,11,12,13,14,15,16] │
└──────────────────────────┘
QBit implementa un patrón de acceso a subcolumnas que permite acceder a planos de bits individuales de los vectores almacenados. Se puede acceder a cada posición de bit mediante la sintaxis .N, donde N es la posición del bit:
CREATE TABLE test (id UInt32, vec QBit(Float32, 8)) ENGINE = Memory;
INSERT INTO test VALUES (1, [0, 0, 0, 0, 0, 0, 0, 0]);
INSERT INTO test VALUES (1, [-0, -0, -0, -0, -0, -0, -0, -0]);
SELECT bin(vec.1) FROM test;
┌─bin(tupleElement(vec, 1))─┐
│ 00000000 │
│ 11111111 │
└───────────────────────────┘
La cantidad de subcolumnas accesibles depende del tipo de elemento:
BFloat16: 16 subcolumnas (1-16)
Float32: 32 subcolumnas (1-32)
Float64: 64 subcolumnas (1-64)
Funciones de búsqueda vectorial
Estas son las funciones de distancia para la búsqueda de similitud vectorial que utilizan el tipo de dato QBit:
Última modificación el 10 de junio de 2026