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 Float32 z 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].