Перейти к основному содержанию
Тип данных QBit реорганизует хранение векторов, чтобы ускорить приближенный поиск. Вместо того чтобы хранить элементы каждого вектора вместе, он группирует одинаковые позиции битов во всех векторах. При этом векторы хранятся с полной точностью, а во время поиска вы можете выбирать уровень квантования: считывать меньше битов, чтобы сократить I/O и ускорить вычисления, или больше битов для более высокой точности. Это дает выигрыш в скорости за счет уменьшения объема передаваемых данных и вычислений благодаря квантованию, при этом все исходные данные при необходимости остаются доступными. Чтобы объявить столбец типа QBit, используйте следующий синтаксис:
column_name QBit(element_type, dimension)
  • element_type – тип каждого элемента вектора. Допустимые типы: BFloat16, Float32 и Float64
  • dimension – размерность, то есть число элементов в каждом векторе

Создание QBit

Использование типа QBit при определении столбца таблицы:
CREATE TABLE test (id UInt32, vec QBit(Float32, 8)) ENGINE = Memory;
INSERT INTO test VALUES (1, [1, 2, 3, 4, 5, 6, 7, 8]), (2, [9, 10, 11, 12, 13, 14, 15, 16]);
SELECT vec FROM test ORDER BY id;
┌─vec──────────────────────┐
│ [1,2,3,4,5,6,7,8]        │
│ [9,10,11,12,13,14,15,16] │
└──────────────────────────┘

Подстолбцы QBit

QBit реализует шаблон доступа к подстолбцам, который позволяет обращаться к отдельным битовым плоскостям сохранённых векторов. Доступ к каждой битовой позиции можно получить с помощью синтаксиса .N, где N — это позиция бита:
CREATE TABLE test (id UInt32, vec QBit(Float32, 8)) ENGINE = Memory;
INSERT INTO test VALUES (1, [0, 0, 0, 0, 0, 0, 0, 0]);
INSERT INTO test VALUES (1, [-0, -0, -0, -0, -0, -0, -0, -0]);
SELECT bin(vec.1) FROM test;
┌─bin(tupleElement(vec, 1))─┐
│ 00000000                  │
│ 11111111                  │
└───────────────────────────┘
Количество доступных подстолбцов зависит от типа элементов:
  • BFloat16: 16 подстолбцов (1-16)
  • Float32: 32 подстолбца (1-32)
  • Float64: 64 подстолбца (1-64)

Функции векторного поиска

Это функции расстояния для поиска по векторному сходству, использующие тип данных QBit:
Последнее изменение 10 июня 2026 г.