QBit 数据类型
Experimental feature. Learn more.
QBit
数据类型重新组织了向量存储,以便进行更快速的近似搜索。它不是将每个向量的元素一起存储,而是将所有向量中相同的二进制位位置分组。这可以以全精度存储向量,同时让你选择搜索时的细粒度量化级别:读取 fewer bits 以减少 I/O 和加快计算,或者读取更多 bits 以提高准确性。你将获得量化带来的数据传输和计算的速度优势,但所有原始数据在需要时依然可用。
备注
QBit
数据类型及其相关的距离函数目前仍处于实验阶段。
要启用它们,请首先运行 SET allow_experimental_qbit_type = 1
。
如果遇到问题,请在 ClickHouse 代码库 中打开一个问题。
要声明一个 QBit
类型的列,请使用以下语法:
element_type
– 每个向量元素的类型。允许的类型有BFloat16
、Float32
和Float64
dimension
– 每个向量中的元素数量
创建 QBit
在表列定义中使用 QBit
类型:
QBit 子列
QBit
实现了一种子列访问模式,允许你访问存储向量的单个位平面。可以使用 .N
语法访问每个比特位置,其中 N
是比特位置:
可访问的子列数取决于元素类型:
BFloat16
: 16 个子列 (1-16)Float32
: 32 个子列 (1-32)Float64
: 64 个子列 (1-64)
向量搜索函数
这些是使用 QBit
数据类型进行向量相似度搜索的距离函数: