Поддерживаемые типы данных (azure AI Поиск)
В этой статье описываются типы данных, поддерживаемые Поиск ИИ Azure. Поля и значения, используемые в выражениях фильтра, типизируются в соответствии с моделью EDM. Указание типа данных EDM является обязательным требованием для определения поля.
Примечание
Если вы используете индексаторы, дополнительные сведения о том, как индексаторы сопоставляют исходные типы данных с типами данных EDM в индексе поиска, см. в статье Сопоставление типов данных для индексов в Azure AI Поиск.
Типы данных EDM для векторных полей
Тип векторного поля должен быть допустимым для выходных данных модели внедрения. Например, если используется text-embedding-ada-002, выходной формат будет или Float32
Collection(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 [начальная точка].