Тип данных QBit
Тип данных QBit реорганизует хранение векторов для более быстрого приближённого поиска. Вместо того чтобы хранить элементы каждого вектора вместе, он группирует одинаковые позиции двоичных разрядов по всем векторам.
Это позволяет хранить векторы с полной точностью и выбирать степень детальной квантизации во время поиска: считывать меньше бит для уменьшения объёма I/O и ускорения вычислений или больше бит для повышения точности. Вы получаете преимущества по скорости за счёт сокращения передачи данных и объёма вычислений благодаря квантизации, при этом все исходные данные остаются доступными при необходимости.
Тип данных QBit и связанные с ним функции расстояния в данный момент являются экспериментальными.
Чтобы их включить, сначала выполните SET allow_experimental_qbit_type = 1.
Если вы столкнётесь с проблемами, пожалуйста, создайте обращение (issue) в репозитории ClickHouse.
Чтобы объявить столбец типа QBit, используйте следующий синтаксис:
element_type– тип каждого элемента вектора. Допустимые типы:BFloat16,Float32иFloat64dimension– число элементов в каждом векторе
Создание QBit
Использование типа QBit в определении столбца таблицы:
Подстолбцы QBit
QBit реализует механизм доступа к подстолбцам, который позволяет обращаться к отдельным битовым плоскостям сохраняемых векторов. Каждая позиция бита может быть доступна с помощью синтаксиса .N, где N — позиция бита:
Количество доступных подстолбцов зависит от типа элемента:
BFloat16: 16 подстолбцов (1–16)Float32: 32 подстолбца (1–32)Float64: 64 подстолбца (1–64)
Функции векторного поиска
Это функции вычисления расстояния для поиска похожих векторов, которые используют тип данных QBit: