Skip to main content
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:
  • element_type – el tipo de cada elemento del vector. Los tipos permitidos son Int8, BFloat16, Float32 y Float64
  • dimension – la cantidad de elementos de cada vector

Crear QBit

Uso del tipo QBit en la definición de una columna de tabla:

Conversión de arrays a QBit

Los arrays se convierten en QBit cuando la longitud del array coincide con la dimensión de QBit. El tipo de elemento del array no tiene que coincidir con el tipo de elemento de QBit. Cualquier tipo de elemento numérico se convierte automáticamente a este. Esto permite mover una columna existente de embeddings directamente a una columna QBit:
La conversión también se puede realizar explícitamente con CAST, por ejemplo CAST(embedding AS QBit(Float32, 8)).

Conversión de QBit a arrays

La conversión inversa reconstruye el vector original a partir de la representación con bits transpuestos, por lo que convertir un QBit a un Array devuelve los valores almacenados. Esto es lo inverso de convertir arrays a QBit:
El array reconstruido usa el tipo de elemento de QBit, y luego sus elementos se convierten al tipo de elemento del array solicitado. Por lo tanto, también funciona un cast que además cambia el tipo de elemento, como de QBit(Float32, N) a Array(Float64). Un recorrido de ida y vuelta Array -> QBit -> Array no pierde información para Int8, Float32 y Float64. En el caso de BFloat16, coincide con una conversión directa a BFloat16: la única precisión que se pierde es la propia de BFloat16. Cuando la dimension no es un múltiplo de 8, los elementos de relleno finales presentes en la representación interna se descartan, por lo que el resultado siempre tiene exactamente dimension elementos.

Subcolumnas de QBit

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:
La cantidad de subcolumnas accesibles depende del tipo de elemento:
  • Int8: 8 subcolumnas (1-8)
  • 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 1 de julio de 2026