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 Float32 parametrem , 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 Float32 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ś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].