Obsługiwane typy danych (azure AI Search)

W tym artykule opisano typy danych obsługiwane przez usługę Azure AI Search. Pola i wartości używane w wyrażeniach filtru są wpisywane zgodnie z modelem danych jednostki (EDM). Określenie typu danych EDM jest wymaganiem dla definicji pola.

Uwaga

Jeśli używasz indeksatorów, zobacz Mapowanie typów danych dla indeksatorów w usłudze Azure AI Search, aby uzyskać więcej informacji na temat sposobu mapowania typów danych specyficznych dla źródła indeksatorów na typy danych EDM w indeksie wyszukiwania.

Typy danych EDM dla pól wektorów

Typ pola wektora musi być prawidłowy dla danych wyjściowych modelu osadzania. Jeśli na przykład używasz funkcji osadzania tekstu-ada-002, format danych wyjściowych to Float32 lub Collection(Edm.Single). W tym scenariuszu nie można przypisać typu danych, ponieważ rzutowanie z float elementu int pierwotnego Int8 jest zabronione. Można jednak rzutować z Float32 do lub Float16(Collection(Edm.Half)).

Pola wektorowe to tablica osadzania. W przypadku EDM tablica jest kolekcją.

Typ danych Typ wektora Opis Zalecane użycie
Collection(Edm.Single) Float32 32-bitowy zmiennoprzecinkowy. Dostępne począwszy od sekcji Tworzenie lub aktualizowanie indeksu (2023-07-01-Preview). Ten typ danych jest również obsługiwany w nowszych wersjach wersji zapoznawczych i w stabilnej wersji 2023-11-01. Domyślny typ danych w narzędziach firmy Microsoft tworzących pola wektorów w Twoim imieniu. Uderza w równowagę między precyzją a wydajnością. Większość modeli osadzania emituje wektory jako Float32.
Collection(Edm.Half) Float16 16-bitowy zmiennoprzecinkowa o mniejszej precyzji i zakresie. Dostępne od utworzenia lub zaktualizowania indeksu (2024-03-01-preview). Przydatne w przypadku scenariuszy, w których wydajność pamięci i obliczeń ma krytyczne znaczenie i gdzie poświęcanie pewnej precyzji jest dopuszczalne. Często prowadzi do szybszego czasu wykonywania zapytań i mniejszego wykorzystania pamięci w porównaniu Float32z wartością , chociaż z nieznaczną dokładnością. Typ można przypisać Float16 do osadzania indeksów Float32 jako Float16. Można również użyć Float16 do osadzania modeli lub niestandardowych procesów kwantyzacji, które emitują Float16 natywnie.
Collection(Edm.Int16) Int16 16-bitowa liczba całkowita podpisana. Dostępne od utworzenia lub zaktualizowania indeksu (2024-03-01-preview). Oferuje zmniejszoną ilość pamięci w porównaniu z Float32 metodami kwantyzacji o wyższej precyzji i obsługą, jednocześnie zachowując wystarczającą precyzję dla wielu aplikacji. Nadaje się do przypadków, w których wydajność pamięci jest ważna. Wymaga, aby mieć niestandardową kwantyzację, która generuje wektory jako Int16.
Collection(Edm.SByte) Int8 Liczba całkowita z podpisem 8-bitowym. Dostępne od utworzenia lub zaktualizowania indeksu (2024-03-01-preview). Zapewnia znaczne zyski w zakresie pamięci i wydajności obliczeniowej w porównaniu z wartościami Float32 lub Float16. Jednak prawdopodobnie wymaga to dodatkowych technik (takich jak kwantyzacja i nadmierne próbkowanie), aby odpowiednio zrównoważyć zmniejszenie dokładności i kompletność. Wymaga, aby mieć niestandardową kwantyzację, która generuje wektory jako Int8.

Typy danych EDM dla pól niewektorów

Typ danych Opis
Edm.String Dane tekstowe.
Edm.Boolean Zawiera wartości prawda/fałsz.
Edm.Int32 32-bitowe wartości całkowite.
Edm.Int64 64-bitowe wartości całkowite.
Edm.Double Podwójna precyzja wartości zmiennoprzecinkowych IEEE 754.
Edm.DateTimeOffset Wartości daty i godziny reprezentowane w formacie OData V4: yyyy-MM-ddTHH:mm:ss.fffZ lub yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm. Precyzja pól jest ograniczona DateTimeOffset do milisekund. Jeśli przekażesz DateTimeOffset wartości z dokładnością podmilisekund, zwracana wartość jest zaokrąglona w górę do milisekund (na przykład 2024-04-15T10:30:09.7552052Z jest zwracana jako 2024-04-15T10:30:09.7550000Z). Podczas przekazywania DateTimeOffset wartości z informacjami o strefie czasowej do indeksu usługa Azure AI Search normalizuje te wartości do czasu UTC. Na przykład 2024-01-13T14:03:00-08:00 jest przechowywany jako 2024-01-13T22:03:00Z. Jeśli musisz przechowywać informacje o strefie czasowej, dodaj dodatkowe pole do indeksu.
Edm.GeographyPoint Punkt przedstawiający lokalizację geograficzną na świecie. W przypadku treści żądania i odpowiedzi reprezentacja wartości tego typu jest zgodna z formatem typu GeoJSON "Point". W przypadku adresów URL usługa OData używa formularza literału opartego na standardzie WKT. Literał punktu jest skonstruowany jako geography'POINT(lat)'.
Edm.ComplexType Obiekty, których właściwości są mapowania na pola podrzędne, które mogą być dowolnego innego obsługiwanego typu danych. Ten typ umożliwia indeksowanie ustrukturyzowanych danych hierarchicznych, takich jak JSON. Obiekty w polu typu Edm.ComplexType mogą zawierać obiekty zagnieżdżone, ale poziom zagnieżdżania jest ograniczony. Limity są opisane w temacie Limity usługi.
Collection(Edm.String) Lista ciągów.
Collection(Edm.Boolean) Lista wartości logicznych.
Collection(Edm.Int32) Lista 32-bitowych wartości całkowitych.
Collection(Edm.Int64) Lista 64-bitowych wartości całkowitych.
Collection(Edm.Double) Lista wartości liczbowych o podwójnej precyzji.
Collection(Edm.DateTimeOffset) Lista wartości daty i godziny.
Collection(Edm.GeographyPoint) Lista punktów reprezentujących lokalizacje geograficzne.
Collection(Edm.ComplexType) Lista obiektów typu Edm.ComplexType. Istnieje limit maksymalnej liczby elementów we wszystkich kolekcjach typów Edm.ComplexType w dokumencie. Aby uzyskać szczegółowe informacje , zobacz Limity usług .

Wszystkie powyższe typy są dopuszczane do wartości null, z wyjątkiem kolekcji typów pierwotnych i złożonych, na przykład Collection(Edm.String). Pola dopuszczane do wartości null można jawnie ustawić na wartość null. Są one automatycznie ustawiane na wartość null po pominięciu dokumentu przekazanego do indeksu usługi Azure AI Search. Pola kolekcji są automatycznie ustawiane na puste ([] w formacie JSON), gdy zostaną pominięte z dokumentu. Ponadto nie można przechowywać wartości null w polu kolekcji.

W przeciwieństwie do złożonych kolekcji nie ma górnego limitu dotyczącego liczby elementów w kolekcji typów pierwotnych, ale górny limit rozmiaru ładunku 16 MB dotyczy wszystkich części dokumentów, w tym kolekcji.

Typ danych geoprzestrzennych używany w wyrażeniach filtru

W usłudze Azure AI Search wyszukiwanie geoprzestrzenne jest wyrażane jako filtr.

Edm.GeographyPolygon to wielokąt reprezentujący region geograficzny na świecie. Chociaż ten typ nie może być używany w polach dokumentu, można go użyć jako argumentu geo.intersects dla funkcji. Formularz literału adresów URL w usłudze OData jest oparty na standardach dostępu do funkcji WKT (dobrze znany tekst) i prostych standardach dostępu do funkcji usługi OGC. Literał wielokąta jest skonstruowany jako geography'POLYGON((lat lon, lat lon, ...)'.

Ważne

Punkty w wielokącie muszą być w porządku odwrotnym. Punkty w wielokącie są interpretowane w kolejności odwrotnej względem wewnątrz wielokąta. Na przykład: zamknięty wielokąt 4-punktowy wokół Londynu wynosiłby -0,3°W 51,6°N [w lewym górnym rogu], -0,3°W 51,4°N [w lewo od dołu], 0. 1°E 51,4°N [prawy dolny], 0,1°E 51,6°N [prawy górny], -0,3°W 51,6°N [punkt początkowy].

Zobacz też