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

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

Заметка

Если вы используете индексаторы , ознакомьтесь с сопоставлением типов данных индексаторов в службе поиска ИИ Azure дополнительные сведения о том, как индексаторы сопоставляют типы данных с типами данных EDM в индексе поиска.

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

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

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

Тип данных Тип вектора Описание Рекомендуемое использование
Collection(Edm.Byte) Двоичный 1-разрядный двоичный файл без знака. Общедоступная версия в создание или обновление индекса (2024-07-01). Поддерживает интеграцию с моделями, которые выдают двоичные внедрения, такие как модели внедрения двоичного кода Cohere версии 3. или настраиваемую логику квантизации, которая выдает 1-разрядные двоичные выходные данные без знака. Поля типа Collection(Edm.Byte)см. в разделе Индекс двоичных данных для указания определения поля и алгоритмов поиска векторов для двоичных данных.
Collection(Edm.Single) Float32 32-разрядная плавающая точка. Общедоступная версия в создание или обновление индекса (2024-07-01). Этот тип данных также поддерживается в более новых версиях предварительной версии и в стабильной версии 2023-11-01. Тип данных по умолчанию в средствах Майкрософт, создающих поля векторов от вашего имени. Баланс между точностью и эффективностью. Большинство моделей внедрения выдают векторы как Float32.
Collection(Edm.Half) Float16 16-разрядная плавающая точка с более низкой точностью и диапазоном. Общедоступная версия в создание или обновление индекса (2024-07-01). Полезно для сценариев, когда производительность памяти и вычислений имеет решающее значение, и где жертвуя некоторой точностью является приемлемой. Часто приводит к более быстрому времени запроса и сокращению объема памяти по сравнению с Float32, хотя с небольшой точностью. Тип Float16 можно назначить индексировать Float32 внедрения как Float16. Вы также можете использовать Float16 для внедрения моделей или пользовательских процессов квантизации, которые Float16 изначально.
Collection(Edm.Int16) Int16 16-разрядное целое число со знаком. Общедоступная версия в создание или обновление индекса (2024-07-01). Обеспечивает сокращение объема памяти по сравнению с Float32 и поддержкой методов квантизации с более высокой точностью, сохраняя достаточную точность для многих приложений. Подходит для случаев, когда важна эффективность памяти. Требуется, чтобы у вас была настраиваемая квантизация, которая выводит векторы в виде Int16.
Collection(Edm.SByte) Int8 8-разрядное целое число со знаком. Общедоступная версия в создание или обновление индекса (2024-07-01). Обеспечивает значительный рост эффективности памяти и вычислений по сравнению с 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 с точностью submillisecond, возвращаемое значение округляется до миллисекунда (например, 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 (известный текст) и простых стандартах доступа к функциям 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 [начальная точка].

См. также