Поделиться через


Поддерживаемые типы данных (поиск по искусственному интеллекту Azure)

В этой статье описываются типы данных, поддерживаемые поиском ИИ Azure. Поля и значения, используемые в выражениях фильтра, типизируются в соответствии с моделью данных сущностей (EDM). Указание типа данных EDM является обязательным требованием для определения поля.

Заметка

Если вы используете индексаторы, см. статью Сопоставление типов данных для индексаторов в службе "Поиск Azure AI" для получения дополнительных сведений о том, как индексаторы сопоставляют типы данных, относящиеся к источнику, с типами данных EDM в индексе поиска.

Типы данных EDM для векторных полей

Тип векторного поля должен быть допустимым для выходных данных модели встраивания. Например, если вы используете text-embedding-ada-002, формат вывода — Float32 или Collection(Edm.Single). В этом сценарии вы не можете назначить Int8 тип данных, так как приведение из floatint примитивов запрещено. Тем не менее, вы можете приводить от Float32 to Float16 или (Collection(Edm.Half)).

Векторные поля — это массив внедрения. В EDM массив является коллекцией.

Тип данных Тип вектора Описание Рекомендуемое использование
Collection(Edm.Byte) Двоичный 1-разрядный двоичный файл без знака. Общедоступно в разделе «Создать или обновить индекс». Поддерживает интеграцию с моделями, которые генерируют двоичные вложения, такими как модели двоичного встраивания Cohere v3. или пользовательская логика квантования, которая выдает 1-битный беззнаковый двоичный вывод. Для полей типа Collection(Edm.Byte)см. раздел Индекс двоичных данных , чтобы получить помощь в указании определения поля и алгоритмов векторного поиска для двоичных данных.
Collection(Edm.Single) Float32 32-разрядная плавающая точка. Общедоступно в разделе «Создать или обновить индекс». Тип данных по умолчанию в средствах Майкрософт, создающих поля векторов от вашего имени. Баланс между точностью и эффективностью. Большинство моделей встраивания выдают векторы в виде Float32.
Collection(Edm.Half) Float16 16-разрядная плавающая точка с более низкой точностью и диапазоном. Общедоступно в разделе «Создать или обновить индекс». Полезно для сценариев, когда производительность памяти и вычислений имеет решающее значение, и где жертвуя некоторой точностью является приемлемой. Часто приводит к более быстрому времени выполнения запросов и уменьшению занимаемого объема памяти по сравнению с Float32, хотя и с немного сниженной точностью. Для вложений индексов Float16Float32 можно назначить тип в виде Float16. Вы также можете использовать Float16 его для встраивания моделей или пользовательских процессов квантования, которые генерируют Float16 исходную энергию.
Collection(Edm.Int16) Int16 16-разрядное целое число со знаком. Общедоступно в разделе «Создать или обновить индекс». Обеспечивает меньший объем памяти, занимаемый по сравнению с методами квантования с более высокой точностью, Float32 и поддержку методов квантования, сохраняя при этом достаточную точность для многих приложений. Подходит для случаев, когда важна эффективность памяти. Требует наличия пользовательского квантования, которое выводит векторы в виде Int16.
Collection(Edm.SByte) Int8 8-разрядное целое число со знаком. Общедоступно в разделе «Создать или обновить индекс». Обеспечивает значительный прирост памяти и вычислительной эффективности по сравнению с Float32 или Float16. Однако, скорее всего, требуются дополнительные методы (например, квантизация и чрезмерное увеличение) для смещения сокращения точности и отзыва соответствующим образом. Требует наличия пользовательского квантования, которое выводит векторы в виде Int8.

Типы данных EDM для невекторных полей

Тип данных Описание
Edm.String Текстовые данные.
Edm.Boolean Содержит значения true/false.
Edm.Int32 32-разрядные целые значения.
Edm.Int64 64-разрядные целые значения.
Edm.Double Значения с плавающей запятой с плавающей запятой двойной точности IEEE 754.
Edm.DateTimeOffset Значения даты и времени, представленные в формате OData V4: yyyy-MM-ddTHH:mm:ss.fffZ или yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. Точность полей ограничена DateTimeOffset миллисекундами. Если вы загружаете DateTimeOffset значения с точностью до долей миллисекунды, возвращаемое значение округляется до миллисекунд (например, 2024-04-15T10:30:09.7552052Z возвращается как 2024-04-15T10:30:09.7550000Z). При отправке DateTimeOffset значений с данными часового пояса в индекс поиск Azure AI нормализует эти значения в формате UTC. Например, 2024-01-13T14:03:00-08:00 хранится как 2024-01-13T22:03:00Z. Если необходимо сохранить сведения о часовом поясе, добавьте дополнительное поле в индекс.
Edm.GeographyPoint Точка, представляющая географическое расположение на земном шаре. Для тел запроса и ответа представление значений этого типа следует формату типа GeoJSON "Point". Для URL-адресов OData использует литеральную форму на основе стандарта WKT. Литерал точки создается как geography'POINT(lon lat)".
Edm.ComplexType Объекты, свойства которых сопоставляют с подполями, которые могут иметь любой другой поддерживаемый тип данных. Этот тип позволяет индексировать структурированные иерархические данные, такие как JSON. Объекты в поле типа Edm.ComplexType могут содержать вложенные объекты, но уровень вложенности ограничен. Ограничения описаны в разделе Лимиты обслуживания.
Collection(Edm.String) Список строк.
Collection(Edm.Boolean) Список логических значений.
Collection(Edm.Int32) Список 32-разрядных целых значений.
Collection(Edm.Int64) Список 64-разрядных целых значений.
Collection(Edm.Double) Список числовых значений двойной точности.
Collection(Edm.DateTimeOffset) Список значений даты и времени.
Collection(Edm.GeographyPoint) Список точек, представляющих географические расположения.
Collection(Edm.ComplexType) Список объектов типа Edm.ComplexType. Существует ограничение на максимальное количество элементов для всех коллекций типа Edm.ComplexType в документе. Подробнее см. в разделе Ограничения служб .

Все вышеперечисленные типы допускают значение null, за исключением коллекций примитивных и сложных типов, например, Collection(Edm.String). Поля, допускающие значение NULL, можно явно задать значение NULL. Они автоматически задают значение NULL при опущении документа, который отправляется в индекс поиска ИИ Azure. Поля коллекции автоматически становятся пустыми ([] в формате JSON), если они отсутствуют в документе. Кроме того, невозможно сохранить значение NULL в поле коллекции.

В отличие от сложных коллекций, верхнего предела на количество элементов в коллекции примитивных типов нет, но верхний предел размера полезных данных в 16 МБ применяется ко всем частям документов, включая коллекции.

Геопространственный тип данных, используемый в выражениях фильтров

В службе "Поиск ИИ Azure" геопространственный поиск выражается как фильтр.

Edm.GeographyPolygon — это многоугольник, представляющий географический регион на земном шаре. Хотя этот тип нельзя использовать в полях документа, его можно использовать в качестве аргумента функции geo.intersects . Литеральная форма URL-адресов в OData основана на стандартах доступа WKT (Well-known text) и простых функций OGC. Многоугольник построен как geography'POLYGON((lon lat, lon lat, ...))".

Важный

Точки в многоугольнике должны располагаться против часовой стрелки. Точки в многоугольнике интерпретируются в порядке счетчика по отношению к внутри многоугольника. Например, 4-точка закрытого многоугольника вокруг Лондона будет -0,3°W 51.6°N [верхний левый] , -0,3°W 51.4°N [нижнее левое], 0.1°E 51.4°N [нижний правый], 0,1°E 51.6°N [верхний правый], -0,3°W 51.6°N [начальная точка].

См. также