Назначение узких типов данных векторным полям в службе "Поиск ИИ Azure"
Простой способ уменьшить размер вектора — хранить внедрения в меньший формат данных. Большинство моделей внедрения выводят 32-разрядные числа с плавающей запятой, но если вы квантизируете векторы или если модель внедрения поддерживает ее в собственном коде, выходные данные могут быть float16, int16 или int8, что значительно меньше float32. Эти небольшие векторные размеры можно разместить, назначив узкий тип данных в поле вектора. В векторном индексе узкие типы данных используют меньше хранилища.
Типы данных назначаются полям в определении индекса. Вы можете использовать портал Azure, ИНТЕРФЕЙСы REST API поиска или пакет azure SDK, который предоставляет эту функцию.
Необходимые компоненты
- Модель внедрения, которая выводит небольшие форматы данных, например модели внедрения текста-3 или Cohere версии 3.
Поддерживаемые узкие типы данных
Просмотрите типы данных, используемые для векторных полей , для рекомендуемого использования:
Collection(Edm.Single)
32-разрядная плавающая точка (по умолчанию)Collection(Edm.Half)
16-разрядная плавающая точка (узкий)Collection(Edm.Int16)
16-разрядное целое число со знаком (узкое)Collection(Edm.SByte)
8-разрядное целое число со знаком (узкое)Collection(Edm.Byte)
8-разрядное целое число без знака (разрешено только с упакованными двоичными типами данных)
Из этого списка определите, какой тип данных является допустимым для выходных данных модели внедрения или для векторов, которые проходят настраиваемую квантизацию.
В следующей таблице приведены ссылки на несколько моделей внедрения, которые могут использовать узкий тип данных (
Collection(Edm.Half)
) без дополнительной квантизации. Вы можете приведения от float32 к float16 (usingCollection(Edm.Half)
) без дополнительной работы.Модель внедрения Собственные выходные данные Назначение этого типа в поиске ИИ Azure text-embedding-ada-002 Float32
Collection(Edm.Single)
илиCollection(Edm.Half)
text-embedding-3-small Float32
Collection(Edm.Single)
илиCollection(Edm.Half)
text-embedding-3-large Float32
Collection(Edm.Single)
илиCollection(Edm.Half)
Модели внедрения Cohere версии 3 с помощью int8 embedding_type Int8
Collection(Edm.SByte)
Другие узкие типы данных можно использовать, если модель выдает внедрение в меньший формат данных или если у вас есть настраиваемая квантизация, которая преобразует векторы в меньший формат.
Убедитесь, что вы понимаете компромиссы узкого типа данных.
Collection(Edm.Half)
имеет меньше информации, что приводит к снижению разрешения. Если данные являются однородными или плотными, потеря дополнительных деталей или нюансов может привести к неприемлемым результатам во время запроса, так как есть меньше деталей, которые можно использовать для разбиений близлежащих векторов.
Назначение типа данных
Определите и создайте индекс. Для этого шага можно использовать портал Azure, создать или обновить индекс (REST API) или пакет azure SDK.
Это определение поля использует узкий тип данных, Collection(Edm.Half)
который может принимать float32 внедрение, хранящееся в виде значения float16. Как и для всех полей векторов, dimensions
и vectorSearchProfile
задаются. Особенности этого vectorSearchProfile
типа нематериальны к типу данных.
Рекомендуется задать retrievable
и stored
задать значение true, если вы хотите визуально проверить значения поля. После последующей перестроения эти свойства можно изменить на false для снижения требований к хранилищу.
{
"name": "nameEmbedding",
"type": "Collection(Edm.Half)",
"searchable": true,
"filterable": false,
"retrievable": true,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"synonymMaps": [],
"dimensions": 1536,
"vectorSearchProfile": "myHnswProfile"
}
Помните, что поля векторов не являются фильтруемыми, сортируемыми или фасетными. Они не могут использоваться в качестве ключей и не используют анализаторы или карты синонимов.
Работа с рабочим индексом
Типы данных назначаются новым полям при их создании. Невозможно изменить тип данных существующего поля, и вы не можете удалить поле без перестроения индекса. Для установленных индексов, уже работающих в рабочей среде, обычно это происходит путем создания новых полей с нужными редакциями, а затем удаления устаревших полей во время запланированного перестроения индекса.
Проверка результатов
Убедитесь, что содержимое поля соответствует типу данных. Предполагая, что поле вектора помечается как
retrievable
, используйте обозреватель поиска или поиск — POST для возврата содержимого векторного поля.Чтобы проверить размер векторного индекса, обратитесь к столбцу размера векторного индекса на странице индексов управления > поиском в портал Azure или используйте метод GET Statistics (REST API) или эквивалентный метод Azure SDK для получения размера.
Примечание.
Тип данных поля используется для создания структуры физических данных. Если вы хотите изменить тип данных позже, удалите и перестроите индекс или создайте второе поле с новым определением.