Udostępnij za pośrednictwem


Obcinanie wymiarów przy użyciu kompresji MRL (wersja zapoznawcza)

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej w ramach dodatkowych warunków użytkowania. Interfejs API REST w wersji zapoznawczej obsługuje tę funkcję.

Ćwiczenie możliwości używania mniejszej liczby wymiarów w modelach osadzania tekstu-3. W usłudze Azure OpenAI modele osadzania tekstu-3 są ponownie trenowane w technice uczenia reprezentacji matryoshka (MRL), która tworzy wiele reprezentacji wektorów na różnych poziomach kompresji. Takie podejście pozwala szybciej wyszukiwać i zmniejszać koszty magazynowania przy minimalnej utracie informacji semantycznych.

W usłudze Azure AI Search język MRL obsługuje uzupełnienie kwantyzacji skalarnej i binarnej. W przypadku użycia jednej z metod kwantyzacji można również określić truncationDimension właściwość w polach wektorów, aby zmniejszyć wymiarowość osadzania tekstu.

Kompresja wielopoziomowa MRL zapisuje w magazynie wektorów i poprawia czas odpowiedzi zapytań dla zapytań wektorowych opartych na osadzaniu tekstu. W usłudze Azure AI Search obsługa języka MRL jest oferowana tylko razem z inną metodą kwantyzacji. Użycie kwantyzacji binarnej z narzędziem MRL zapewnia maksymalną redukcję rozmiaru indeksu wektorowego. Aby osiągnąć maksymalną redukcję magazynu, użyj kwantyzacji binarnej w języku MRL i stored ustaw wartość false.

Ta funkcja jest dostępna w wersji zapoznawczej. Jest ona dostępna w 2024-09-01-preview pakietach zestawu SDK i w wersji beta przeznaczonych dla tej wersji interfejsu API w wersji zapoznawczej.

Wymagania wstępne

  • Modele osadzania tekstu-3, takie jak osadzanie tekstu-3-małe lub osadzanie tekstu-3-duże (tylko zawartość tekstowa).

  • Nowe pola wektorów typu Edm.Half lub Edm.Single (nie można dodać kompresji MRL do istniejącego pola).

  • Hierarchiczny algorytm Navigable Small World (HNSW) (brak obsługi wyczerpującej nazwy KNN w tej wersji zapoznawczej).

  • Kwantyzacja skalarna lub binarna. Obcinane wymiary można ustawić tylko wtedy, gdy skonfigurowano kwantyzację skalarną lub binarną. Zalecamy kwantyzację binarną na potrzeby kompresji MRL.

Obsługiwani klienci

Aby zaimplementować kompresję MRL, możesz użyć interfejsów API REST lub pakietów beta zestawu Azure SDK.

Obecnie nie ma obsługi witryny Azure Portal ani programu Azure AI Studio.

Jak używać osadzania tekstu rozszerzonego mrL

MRL to funkcja wbudowana w model osadzania tekstu, którego już używasz. Aby skorzystać z tych funkcji w usłudze Azure AI Search, wykonaj następujące kroki.

  1. Użyj interfejsu API Tworzenia lub aktualizowania (wersja zapoznawcza) lub równoważnego interfejsu API, aby określić schemat indeksu.

  2. Dodaj pola wektorów do definicji indeksu.

  3. vectorSearch.compressions Określ obiekt w definicji indeksu.

  4. Uwzględnij metodę kwantyzacji, skalarną lub binarną (zalecaną).

  5. Uwzględnij truncationDimension parametr ustawiony na 512 lub nawet 256, jeśli używasz modelu osadzania tekstu-3-duży.

  6. Określ profil wektora, który określa algorytm HNSW i obiekt kompresji wektora.

  7. Przypisz profil wektora do pola wektorowego typu Edm.Half lub Edm.Single w kolekcji pól.

Nie ma żadnych modyfikacji po stronie zapytania dotyczących korzystania z modelu osadzania tekstu z obsługą języka MRL. Zintegrowana wektoryzacja, konwersje tekstu na zapytanie w czasie zapytania, semantyczne klasyfikacje i inne funkcje ulepszenia istotności, takie jak ponowne korbowanie z oryginalnymi wektorami i nadmiernymi próbkowaniami, nie mają wpływu na obsługę języka MRL.

Indeksowanie jest wolniejsze ze względu na dodatkowe kroki, ale zapytania są szybsze.

Przykład konfiguracji wyszukiwania wektorowego obsługującego język MRL

W poniższym przykładzie przedstawiono konfigurację wyszukiwania wektorowego, która spełnia wymagania i zalecenia dotyczące języka MRL.

truncationDimension jest właściwością kompresji. Określa, ile ma zmniejszyć wykres wektorowy w pamięci wraz z metodą kompresji, np. kompresją skalarną lub binarną. Zalecamy użycie wartości 1024 lub nowszej w przypadku truncationDimension kwantyzacji binarnej. Wymiarowość mniejsza niż 1000 obniża jakość wyników wyszukiwania podczas korzystania z języka MRL i kompresji binarnej.

{ 
  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "use-bq-with-mrl", 
        "compression": "use-mrl,use-bq", 
        "algorithm": "use-hnsw" 
      } 
    ],
    "algorithms": [
       {
          "name": "use-hnsw",
          "kind": "hnsw",
          "hnswParameters": {
             "m": 4,
             "efConstruction": 400,
             "efSearch": 500,
             "metric": "cosine"
          }
       }
    ],
    "compressions": [ 
      { 
        "name": "use-mrl", 
        "kind": "truncation", 
        "rerankWithOriginalVectors": true, 
        "defaultOversampling": 10, 
        "truncationDimension": 1024
      }, 
      { 
        "name": "use-bq", 
        "kind": "binaryQuantization", 
        "rerankWithOriginalVectors": true,
        "defaultOversampling": 10
       } 
    ] 
  } 
} 

Oto przykład w pełni określonej definicji pola wektora, która spełnia wymagania dotyczące języka MRL.

Pamiętaj, że pola wektorów muszą być typu Edm.Half lub Edm.Single. Pola wektorowe muszą mieć vectorSearchProfile właściwość, która określa ustawienia algorytmu i kompresji. Pola wektorowe mają właściwość służącą dimensions do określania liczby wymiarów dla wyników oceniania i klasyfikowania. Jego wartość powinna być limitem wymiarów używanego modelu (1536 dla osadzania tekstu-3-small).

{
    "name": "text_vector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "stored": false,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "normalizer": null,
    "dimensions": 1536,
    "vectorSearchProfile": "use-bq-with-mrl",
    "vectorEncoding": null,
    "synonymMaps": []
}