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 wymagane 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 wektorowego 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 osadzonych. W usłudze EDM tablica jest kolekcją.

Typ danych Typ wektora Opis Zalecane użycie
Collection(Edm.Byte) Binarne 1-bitowy niepodpisany plik binarny. Dostępne począwszy od Twórca lub indeksu aktualizacji (2024-05-01-preview). Obsługuje integrację z modelami, które emitują binarne osadzania, takie jak modele osadzania binarnego Cohere w wersji 3. lub niestandardowa logika kwantyzacji, która emituje 1-bitowe dane wyjściowe binarne bez znaku. W przypadku pól typu Collection(Edm.Byte)zobacz Indeksowanie danych binarnych , aby uzyskać pomoc dotyczącą określania definicji pola i algorytmów wyszukiwania wektorowego dla danych binarnych.
Collection(Edm.Single) Float32 32-bitowy zmiennoprzecinkowa. Dostępne począwszy od Twórca lub indeksu aktualizacji (2023-07-01-Preview). Ten typ danych jest również obsługiwany w nowszych wersjach zapoznawczych i w stabilnej wersji 2023-11-01. Domyślny typ danych w narzędziach firmy Microsoft, które tworzą 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-bitowa zmiennoprzecinkowa o mniejszej precyzji i zakresie. Dostępne począwszy od Twórca lub indeksu aktualizacji (2024-03-01-preview). Przydatne w scenariuszach, w których wydajność pamięci i obliczeń ma kluczowe znaczenie i gdzie poświęcanie pewnej precyzji jest akceptowalne. Często prowadzi do szybszego czasu wykonywania zapytań i mniejszego zużycia pamięci w porównaniu z Float32parametrem , 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 ze znakiem. Dostępne począwszy od Twórca lub indeksu aktualizacji (2024-03-01-preview). Oferuje zmniejszoną ilość pamięci w porównaniu z Float32 i obsługę metod kwantyzacji o wyższej precyzji, zachowując jednocześnie wystarczającą precyzję dla wielu aplikacji. Odpowiednie w przypadkach, gdy wydajność pamięci jest ważna. Wymaga niestandardowej kwantyzacji, która generuje wektory jako Int16.
Collection(Edm.SByte) Int8 8-bitowa liczba całkowita ze znakiem. Dostępne począwszy od Twórca lub indeksu aktualizacji (2024-03-01-preview). Zapewnia znaczne korzyści z pamięci i wydajności obliczeniowej w porównaniu do lub Float32Float16. Jednak prawdopodobnie wymaga to dodatkowych technik (takich jak kwantyzacja i nadmierne próbkowanie), aby odpowiednio zrównoważyć zmniejszenie dokładności i kompletności. Wymaga niestandardowej kwantyzacji, która generuje wektory jako Int8.

Typy danych EDM dla pól niewektorowych

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 przekazujesz DateTimeOffset wartości z dokładnością do 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 plik 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 żądań i odpowiedzi reprezentacja wartości tego typu jest zgodna z formatem typu GeoJSON "Punkt". W przypadku adresów URL usługa OData używa formularza literału opartego na standardzie WKT. Literał punktu jest konstruowany 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 typu 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 z dokumentu przekazanego do indeksu usługi Azure AI Search. Pola kolekcji są automatycznie ustawiane na puste ([] w formacie JSON), gdy zostaną pominięte w dokumencie. Ponadto nie można przechowywać wartości null w polu kolekcji.

W przeciwieństwie do złożonych kolekcji nie ma górnego limitu 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ż tego typu nie można używać w polach dokumentu, można go użyć jako argumentu geo.intersects funkcji. Formularz literału dla adresów URL w protokole OData jest oparty na standardach dostępu do funkcji WKT (dobrze znanego tekstu) i prostych standardach dostępu do funkcji OGC. Literał wielokąta jest konstruowany jako geography'POLYGON((lat lon, lat lon, ...)'.

Ważne

Punkty w wielokącie muszą być w kolejności odwrotnej od ruchu wskazówek zegara. Punkty wielokąta są interpretowane w kolejności odwrotnej do ruchu wskazówek zegara w stosunku do wewnątrz wielokąta. Na przykład: 4-punktowy zamknięty wielokąt wokół Londynu wynosiłby -0,3°W 51,6°N [lewy górny] , -0,3°W 51,4°N [w lewo dolny], 0.0. 1°E 51,4°N [prawy dolny], 0,1°E 51,6°N [prawy górny dół], -0,3°W 51,6°N [punkt początkowy].

Zobacz też