Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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].