Векторный индекс
Внимание
Поддерживается только для строковых таблиц. Поддержка функциональности для колоночных таблиц находится в разработке.
Важно
Создание пустой таблицы с векторным индексом в настоящее время не имеет практического смысла, так как модификация данных в таблицах с векторными индексами пока не поддерживается.
Следует использовать ALTER TABLE ... ADD INDEX
для добавления векторного индекса в существующую таблицу.
Конструкция INDEX используется для определения векторного индекса в строчно-ориентированных таблицах:
CREATE TABLE table_name (
...
INDEX <имя_индекса> GLOBAL [SYNC] USING <тип_индекса> ON ( <колонки_индекса> ) COVER ( <покрывающие_колонки> ) WITH ( <параметры_индекса> ),
...
)
Где:
- имя_индекса - уникальное имя индекса для доступа к данным
- SYNC - указывает на синхронную запись данных в индекс. Если не указано - синхронная.
- тип_индекса - тип индекса, в настоящее время поддерживается только
vector_kmeans_tree
- колонки_индекса - список колонок таблицы через запятую, используемых для поиска по индексу (последняя колонка используется как эмбеддинг, остальные - как префиксные колонки)
- покрывающие_колонки - дополнительные колонки таблицы, сохраняемые в индексе для возможности их извлечения без обращения к основной таблице
- параметры_индекса - список параметров в формате ключ-значение:
- общие параметры для всех векторных индексов:
dimension
- размерность вектора эмбеддинга (<= 16384);type
- тип значений вектора (float
,uint8
,int8
,bit
);distance
- функция расстояния (cosine
,manhattan
,euclidean
) илиsimilarity
- функция схожести (inner_product
,cosine
).
- специфичные параметры для
vector_kmeans_tree
:clusters
- количество центроидов для алгоритма k-means (значения > 1000 могут ухудшить производительность);levels
- количество уровней в дереве.
- общие параметры для всех векторных индексов:
Важно
Параметры distance
и similarity
не могут быть указаны одновременно.
Важно
Векторные индексы с type=bit
в настоящее время не поддерживаются
Пример
CREATE TABLE user_articles (
article_id Uint64,
user String,
title String,
text String,
embedding String,
INDEX emb_cosine_idx GLOBAL SYNC USING vector_kmeans_tree
ON (user, embedding) COVER (title, text)
WITH (dimension=512, type="float", distance="cosine", clusters=128, levels=2),
PRIMARY KEY (article_id)
)
Была ли статья полезна?
Предыдущая
Следующая