Udostępnij za pośrednictwem


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 Entity Data Model (EDM). Określenie typu danych EDM jest wymaganiem dla definicji pola.

Nuta

Jeśli używasz indeksatorów , zobacz Mapa 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 Int8, ponieważ rzutowanie z float do int pierwotnych jest zabronione. Można jednak rzutować z Float32 na Float16 lub (Collection(Edm.Half)).

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

Typ danych Typ wektora Opis Zalecane użycie
Collection(Edm.Byte) Dwójkowy 1-bitowy niepodpisany plik binarny. Ogólnie dostępny w tworzenie lub aktualizowanie indeksu (2024-07-01). Obsługuje integrację z modelami, które emitują osadzanie binarne, takie jak modele osadzania binarnego Cohere w wersji 3. lub niestandardową logikę kwantyzacji, która emituje 1-bitowe niepodpisane dane wyjściowe binarne. Aby uzyskać pomoc dotyczącą pól typu Collection(Edm.Byte), zobacz Indeksowanie danych binarnych, aby uzyskać pomoc dotyczącą określania definicji pola i algorytmów wyszukiwania wektorów dla danych binarnych.
Collection(Edm.Single) Float32 32-bitowy zmiennoprzecinkowa. Ogólnie dostępny w tworzenie lub aktualizowanie indeksu (2024-07-01). 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. Wyrównyuje 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. Ogólnie dostępny w tworzenie lub aktualizowanie indeksu (2024-07-01). Przydatne w przypadku scenariuszy, 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 Float32, chociaż z nieznacznie zmniejszoną dokładnością. Typ Float16 można przypisać do osadzania Float32 indeksu 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. Ogólnie dostępny w tworzenie lub aktualizowanie indeksu (2024-07-01). Oferuje mniejsze zużycie 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. Ogólnie dostępny w tworzenie lub aktualizowanie indeksu (2024-07-01). Zapewnia znaczne wzrosty wydajności pamięci i obliczeń w porównaniu z Float32 lub Float16. Jednak prawdopodobnie wymaga to dodatkowych technik (takich jak kwantyzacja i nadmierna próbkowanie), aby odpowiednio zrównoważyć zmniejszenie dokładności i kompletność. Wymaga niestandardowej kwantyzacji, 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 true/false.
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 DateTimeOffset jest ograniczona do milisekund. Jeśli przekażesz wartości DateTimeOffset z dokładnością podmilisekund, zwracana wartość zostanie zaokrąglona do milisekund (na przykład 2024-04-15T10:30:09.7552052Z jest zwracana jako 2024-04-15T10:30:09.7550000Z). Podczas przekazywania wartości DateTimeOffset 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 chcesz przechowywać informacje o strefie czasowej, dodaj dodatkowe pole do indeksu.
Edm.GeographyPoint Punkt reprezentujący lokalizację geograficzną na świecie. W przypadku treści żądań 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 konstruowany jako geography'POINT(lat lon)'.
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ć zagnieżdżone obiekty, ale poziom zagnieżdżania jest ograniczony. Limity zostały opisane w Service limity.
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ługi.

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 funkcji geo.intersects. Formularz literału dla adresów URL w usłudze OData jest oparty na WKT (dobrze znanym tekście) i prostych standardach dostępu do funkcji OGC. Literał wielokątny jest skonstruowany jako geography'POLYGON((lat lon, lat lon, ...)'.

Ważny

Punkty w wielokątnym muszą być w kolejności odwrotnej. Punkty w wielokącie są interpretowane w kolejności przeciwkrętowej względem wewnątrz wielokąta. Na przykład: zamknięta wielokąt 4-punktowa wokół Londynu wynosiłaby -0,3°W 51,6°N [w lewym górnym rogu], -0,3°W 51,4°N [w lewo od dołu], 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ż