Udostępnij przez


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 filtrów są wpisywane zgodnie z modelem danych jednostki (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 indeksatorów typów danych specyficznych dla źródła 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. Na przykład, jeśli używasz text-embedding-ada-002, format wyjściowy to Float32 lub Collection(Edm.Single). W tym scenariuszu Int8 nie można przypisać typu danych, ponieważ rzutowanie z float do int elementów pierwotnych jest zabronione. Można jednak rzutować z Float32 do 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ępne w temacie Tworzenie lub aktualizowanie indeksu. Obsługuje integrację z modelami, które emitują osadzanie binarne, takie jak binarne modele osadzania 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. Ogólnie dostępne w temacie Tworzenie lub aktualizowanie indeksu. 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ępne w temacie Tworzenie lub aktualizowanie indeksu. 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 to do krótszych czasów zapytań i zmniejszonego zużycia pamięci w porównaniu do Float32, chociaż z nieco mniejszą dokładnością. Typ do osadzania indeksu Float32 można przypisać Float16 jako Float16. Można go 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ępne w temacie Tworzenie lub aktualizowanie indeksu. Oferuje mniejsze zużycie pamięci w porównaniu z metodami Float32 kwantyzacji o wyższej precyzji i obsługuje je, zachowując jednocześnie wystarczającą precyzję dla wielu zastosowań. Odpowiednie w przypadkach, gdy wydajność pamięci jest ważna. Wymaga niestandardowej kwantyzacji, która wyprowadza wektory jako Int16.
Collection(Edm.SByte) Int8 8-bitowa liczba całkowita ze znakiem. Ogólnie dostępne w temacie Tworzenie lub aktualizowanie indeksu. Zapewnia znaczny wzrost pamięci i wydajności obliczeniowej w porównaniu do 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 wyprowadza 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 DateTimeOffset pól jest ograniczona do milisekund. Jeśli przekazujesz DateTimeOffset wartości z dokładnością submilisekundową, zwracana wartość jest zaokrąglana 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 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ć obiekty zagnieżdżone, ale poziom zagnieżdżenia jest ograniczony. Limity są opisane w sekcji Limity usług.
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 czcionek Edm.ComplexType w dokumencie. Aby uzyskać szczegółowe informacje, zobacz Limity usług .

Wszystkie powyższe typy dopuszczają wartość 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 jako 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 wynoszący 16 MB ma zastosowanie do 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 kuli ziemskiej. Chociaż tego typu nie można używać w polach dokumentu, można go używać jako argumentu geo.intersects funkcji. Literalna forma adresów URL w OData jest oparta na standardach dostępu do prostych funkcji WKT (Well-known text) i OGC. Literał wielokątny jest skonstruowany jako geography'POLYGON((lat lon, lat lon, ...)'.

Ważny

Punkty w wielokącie muszą być ułożone w kolejności przeciwnej do ruchu wskazówek zegara. 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ż