QBit 数据类型
Experimental feature. Learn more.
QBit 数据类型通过重新组织向量的存储方式来加速近似搜索。它不是将每个向量的所有元素存放在一起,而是把所有向量中相同二进制位的位置分组存储。
这种方式在保持向量以全精度存储的同时,允许你在查询时选择细粒度的量化级别:读取更少的比特位可减少 I/O 并加快计算,读取更多比特位则可提高精度。你既能获得量化带来的数据传输和计算开销降低的速度优势,又能在需要时访问所有原始数据。
注意
QBit 数据类型及其相关的距离函数目前为实验性功能。
要启用它们,请先执行 SET allow_experimental_qbit_type = 1。
如果你遇到问题,请在 ClickHouse 仓库 中提交 issue。
要声明一个 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 数据类型进行向量相似度搜索的距离函数: