QBit тип данных
Тип данных QBit
reorganizes векторное хранилище для более быстрых аппроксимированных поисков. Вместо хранения элементов каждого вектора вместе, он группирует одинаковые позиции двоичных разрядов во всех векторах. Это позволяет хранить векторы с полной точностью, позволяя вам выбирать уровень детализированной квантизации во время поиска: считывайте меньше битов для меньшего ввода-вывода и более быстрых расчетов или больше битов для более высокой точности. Вы получаете преимущества скорости за счет уменьшения передачи данных и вычислений благодаря квантизации, но все исходные данные остаются доступными при необходимости.
Тип данных QBit
и связанные с ним функции расстояния в настоящее время являются экспериментальными.
Чтобы активировать их, сначала выполните команду SET allow_experimental_qbit_type = 1
.
Если возникнут проблемы, пожалуйста, откройте issue в репозитории 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
: