Тип данных QBit
Тип данных QBit реорганизует хранение векторов для более быстрых приближённых поисков. Вместо того чтобы хранить элементы каждого вектора вместе, он группирует одинаковые позиции двоичных разрядов по всем векторам.
Это позволяет хранить векторы с полной точностью и при этом выбирать тонкий уровень квантования во время поиска: читать меньше битов для уменьшения числа операций ввода-вывода (I/O) и ускорения вычислений или больше битов для повышения точности. Вы получаете преимущества по скорости за счёт уменьшения объёма передаваемых данных и вычислений благодаря квантованию, при этом все исходные данные остаются доступны при необходимости.
Тип данных QBit и связанные с ним функции расстояния находятся в статусе Beta.
Чтобы их включить, сначала выполните SET enable_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: