---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/create_table/vector_index.md?version=v26.1
  - https://ydb.tech/docs/ru/yql/reference/syntax/create_table/vector_index.md?version=v26.1
  - href: ru/yql/reference/syntax/create_table/vector_index.md
    type: text/markdown
    title: Markdown version
  - href: ../../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/yql/reference/syntax/create_table/vector_index.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Векторный индекс

[Векторный индекс](https://ydb.tech/docs/ru/concepts/glossary.md?version=v26.1#vector-index) в [строковых](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=v26.1#row-oriented-tables) таблицах создаётся с помощью того же синтаксиса, что и [вторичные индексы](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/secondary_index.md?version=v26.1), при указании `vector_kmeans_tree` в качестве типа индекса. Подмножество доступного для векторных индексов синтаксиса:

```yql
CREATE TABLE `<table_name>` (
    ...
    INDEX `<index_name>`
        GLOBAL
        [SYNC]
        USING vector_kmeans_tree
        ON ( <index_columns> )
        [COVER ( <cover_columns> )]
        [WITH ( <parameter_name> = <parameter_value>[, ...])]
    [,   ...]
)
```

Где:

* `<index_name>` - уникальное имя индекса для доступа к данным
* `SYNC` - указывает на синхронную запись данных в индекс. Это единственная доступная на данный момент опция, явно указывать не обязательно.
* `<index_columns>` - список колонок таблицы через запятую, используемых для поиска по индексу (последняя колонка используется как эмбеддинг, остальные - как фильтрующие колонки)
* `<cover_columns>` - список дополнительных колонок создаваемой таблицы, которые будут сохранены в индексе для возможности их извлечения без обращения к основной таблице
* `<parameter_name>` и `<parameter_value>` - список параметров в формате ключ-значение:

<!-- source: ru/yql/reference/syntax/_includes/vector_index_parameters.md -->
  * общие параметры для всех векторных индексов:
    * `vector_dimension` - размерность вектора эмбеддинга (значение от 1 до 16384);
    * `vector_type` - тип значений вектора (`float`, `uint8` или `int8`);
    * `distance` - [функция расстояния](https://ydb.tech/docs/ru/yql/reference/udf/list/knn.md?version=v26.1#functions-distance) (`cosine`, `manhattan` или `euclidean`), взаимосключающий с `similarity`;
    * `similarity` - [функция схожести](https://ydb.tech/docs/ru/yql/reference/udf/list/knn.md?version=v26.1#functions-distance) (`inner_product` или `cosine`), взаимосключающий с `distance`;
  * специфичные параметры для `vector_kmeans_tree` (см. [документацию](https://ydb.tech/docs/ru/dev/vector-indexes.md?version=v26.1#kmeans-tree-type)):
    * `clusters` - количество центроидов для алгоритма k-means (значение от 2 до 2048);
    * `levels` - количество уровней в дереве (значение от 1 до 16);
    * `overlap_clusters` - число ближайших кластеров, в которые будет добавлен каждый вектор (по умолчанию 1).
    * общее количество узлов в дереве, рассчитываемое как `clusters` в степени `levels`, должно быть не более чем 1073741824;
    * произведение `vector_dimension` на `clusters` должно быть не более чем 4194304.
<!-- endsource: ru/yql/reference/syntax/_includes/vector_index_parameters.md -->

{% note warning %}

<!-- source: ru/_includes/vector-index-update-limitations.md -->
При накоплении значительного объёма изменений в таблицах с векторным индексом полнота или производительность поиска может ухудшиться. Подробности смотрите в разделе [Обновление векторных индексов](https://ydb.tech/docs/ru/dev/vector-indexes.md?version=v26.1#update).
<!-- endsource: ru/_includes/vector-index-update-limitations.md -->

{% endnote %}

<!-- source: ru/_includes/not_allow_for_olap_note.md -->
{% note warning %}

<!-- source: ru/_includes/not_allow_for_olap_text.md -->
Поддерживается только для [строковых](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=v26.1#row-oriented-tables) таблиц. Поддержка функциональности для [колоночных](https://ydb.tech/docs/ru/concepts/datamodel/table.md?version=v26.1#column-oriented-tables) таблиц находится в разработке.
<!-- endsource: ru/_includes/not_allow_for_olap_text.md -->

{% endnote %}
<!-- endsource: ru/_includes/not_allow_for_olap_note.md -->

## Пример

```yql
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 (
        distance="cosine",
        vector_type="float",
        vector_dimension=512,
        clusters=128,
        levels=2
    ),
    PRIMARY KEY (article_id)
)
```
