Поддерживаемые типы данных (azure AI Поиск)

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

Примечание

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

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

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

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

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

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

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

В azure AI Поиск геопространственный поиск выражается в виде фильтра.

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 [начальная точка].

См. также раздел