Тип данных QBit
Тип данных QBit реорганизует хранение векторов для более быстрого приближённого поиска. Вместо хранения элементов каждого вектора вместе он группирует одинаковые позиции двоичных разрядов по всем векторам.
Это позволяет хранить векторы с полной точностью и при этом выбирать тонкий уровень квантизации на этапе поиска: считывать меньше бит для снижения объёма операций ввода-вывода и ускорения вычислений или больше бит для повышения точности. Вы получаете выигрыш в производительности за счёт уменьшения объёма передаваемых данных и вычислений благодаря квантизации, при этом все исходные данные остаются доступными при необходимости.
Чтобы объявить столбец типа QBit, используйте следующий синтаксис:
element_type– тип каждого элемента вектора. Допустимые типы:BFloat16,Float32иFloat64dimension– количество элементов в каждом векторе
Создание QBit
Использование типа QBit при определении столбца таблицы:
Преобразование массивов в QBit
Массивы преобразуются в QBit, если длина массива соответствует размерности QBit. Тип элементов массива не обязательно должен совпадать с типом элементов QBit. Любой числовой тип элементов автоматически приводится к нему. Это позволяет сразу перенести существующий столбец с эмбеддингами в столбец QBit:
Преобразование также можно выполнять явно с помощью CAST, например CAST(embedding AS QBit(Float32, 8)).
Подстолбцы QBit
QBit реализует механизм доступа к подстолбцам, который позволяет обращаться к отдельным битовым плоскостям хранимых векторов. К каждой битовой позиции можно обратиться с помощью синтаксиса .N, где N — это номер битовой позиции:
Количество доступных подстолбцов зависит от типа элемента:
BFloat16: 16 подстолбцов (1–16)Float32: 32 подстолбца (1–32)Float64: 64 подстолбца (1–64)
Функции векторного поиска
Это функции вычисления расстояния, используемые при поиске по векторному сходству и использующие тип данных QBit: