Udostępnij za pośrednictwem


Eliminowanie opcjonalnych wystąpień wektorów z magazynu

Usługa Azure AI Search przechowuje wiele kopii pól wektorowych, które są używane w określonych obciążeniach. Jeśli nie musisz obsługiwać określonego zachowania, takiego jak zwracanie nieprzetworzonych wektorów w odpowiedzi na zapytanie, możesz ustawić właściwości w indeksie, który pomija magazyn dla tego obciążenia.

Wymagania wstępne

  • Pola wektorów w indeksie wyszukiwania z konfiguracją vectorSearch przy użyciu hierarchicznych małych światów (HNSW) lub wyczerpujących algorytmów K najbliższych sąsiadów (KNN) i nowego profilu wektora.

Jak są przechowywane pola wektorów

Dla każdego pola wektorowego mogą istnieć trzy kopie wektorów, z których każda obsługuje inny cel:

Wystąpienie Użycie Kontrolowane przy użyciu
Wektory źródłowe, które przechowują kod JSON odebrany podczas indeksowania dokumentów Służy do odświeżania danych przyrostowych za pomocą merge indeksowania dokumentów lub mergeOrUpload podczas ich indeksowania. Jest również używany, jeśli wektory "możliwe do pobrania" są zwracane w odpowiedzi zapytania. stored właściwość w polach wektorów
Oryginalne wektory pełnej precyzji W istniejących indeksach są one używane do operacji indeksu wewnętrznego i wyczerpującego wyszukiwania KNN. W przypadku wektorów korzystających z kompresji jest ona również używana do ponownegokorowania (jeśli jest włączona) w zestawie przeampledowanych wyników z wyszukiwania ANN w polach wektorów przy użyciu kompresji skalarnej lub binarnej kwantyzacji . rescoringOptions.rescoreStorageMethod właściwość w pliku vectorSearch.compressions. W przypadku nieskompresowanych pól wektorów w indeksach utworzonych przy użyciu 2024-11-01-Preview wersji interfejsu API i nowszych te pola zostaną domyślnie pominięte bez wpływu na działania wyszukiwania ani jakość.
Wektory na grafie HNSW dla przybliżonego wyszukiwania najbliższych sąsiadów (ANN) Służy do wykonywania zapytań ANN. Składa się z wektorów pełnej precyzji (gdy nie jest stosowana kompresja) lub kwantyzowanych wektorów (gdy jest stosowana kompresja) Dotyczy tylko HNSW. Te struktury danych są wymagane do wydajnego wyszukiwania ann.

Można ustawić właściwości, które trwale odrzucają pierwsze dwa wystąpienia z magazynu wektorowego.

Ostatnie wystąpienie (wektory i graf) jest wymagane do wykonania zapytania wektora ANN. Jeśli są używane jakiekolwiek techniki kompresji, takie jak kwantyzacja skalarna lub binarna, zostaną zastosowane do tego zestawu danych. Jeśli chcesz zrównoważyć kompresję stratową, należy zachować drugie wystąpienie na potrzeby reskorowania, aby poprawić jakość wyszukiwania ANN.

stored Ustawianie właściwości

Właściwość stored jest właściwością logiczną w definicji pola wektorowego, która określa, czy magazyn jest przydzielany do pobierania zawartości pola wektora (wystąpienie źródłowe). Właściwość stored ma wartość true domyślnie. Jeśli nie potrzebujesz nieprzetworzonej zawartości wektorowej w odpowiedzi na zapytanie, możesz zapisać do 50 procent magazynu na pole, zmieniając wartość stored na false.

Zagadnienia dotyczące ustawiania stored wartości false:

  • Ponieważ wektory nie są czytelne dla człowieka, można pominąć je z wyników wysyłanych do modułów LLM w scenariuszach RAG oraz z wyników renderowanych na stronie wyszukiwania. Zachowaj je jednak, jeśli używasz wektorów w procesie podrzędnym, który zużywa zawartość wektorów.

  • Jeśli jednak strategia indeksowania obejmuje częściowe aktualizacje dokumentów, takie jak "merge" lub "mergeOrUpload" w istniejącym dokumencie, ustawienie stored=false uniemożliwia aktualizowanie zawartości tych pól podczas scalania. Na każdej operacji "merge" lub "mergeOrUpload" do dokumentu wyszukiwania należy podać pola wektorów w całości wraz z polami niewektora, które są aktualizowane, lub wektor jest porzucony.

Ważne

stored=false Ustawienie przypisania jest nieodwracalne. Tę właściwość można ustawić tylko podczas tworzenia indeksu i jest dozwolona tylko w polach wektorowych. Aktualizowanie istniejącego indeksu przy użyciu nowych pól wektorowych nie może ustawić tej właściwości na falsewartość . Jeśli chcesz później pobrać zawartość wektorową, musisz usunąć i ponownie skompilować indeks lub utworzyć i załadować nowe pole, które ma nowe przypisanie.

W przypadku nowych pól wektorów w indeksie wyszukiwania ustaw stored wartość false, aby trwale usunąć magazyn, który można pobrać dla pola wektora. W poniższym przykładzie przedstawiono definicję pola wektora z właściwością stored .

PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01 
  Content-Type: application/json  
  api-key: [admin key]  

    { 
      "name": "demo-index", 
      "fields": [ 
        { 
          "name": "vectorContent", 
          "type": "Collection(Edm.Single)", 
          "retrievable": false, 
          "stored": false, 
          "dimensions": 1536, 
          "vectorSearchProfile": "vectorProfile" 
        } 
      ] 
    } 

Podsumowanie kluczowych punktów

  • Dotyczy pól o typie danych wektorowych.

  • Wpływa na magazyn na dysku, a nie na pamięć i nie ma wpływu na zapytania. Wykonanie zapytania używa oddzielnego indeksu wektora, którego nie dotyczy stored właściwość, ponieważ kopia wektora jest zawsze przechowywana.

  • Właściwość stored jest ustawiana podczas tworzenia indeksu w polach wektorów i jest nieodwracalna. Jeśli chcesz później pobrać zawartość, musisz usunąć i ponownie skompilować indeks lub utworzyć i załadować nowe pole, które ma nowe przypisanie.

  • Wartości domyślne są stored ustawione na true i retrievable mają wartość false. W konfiguracji domyślnej jest przechowywana kopia do pobrania, ale nie jest ona automatycznie zwracana w wynikach. Jeśli stored wartość ma wartość true, możesz przełączać retrievable się między wartościami true i false w dowolnym momencie bez konieczności ponownego kompilowania indeksu. Jeśli stored wartość jest fałsz, retrievable musi być fałsz i nie można jej zmienić.

rescoreStorageMethod Ustawianie właściwości

Uwaga

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Właściwość rescoreStorageMethod steruje magazynem wektorów o pełnej precyzji, gdy jest używana kompresja.

W przypadku nieskompresowanych pól wektorów w indeksach utworzonych przy użyciu 2024-11-01-Preview wersji interfejsu API i nowszych te pola zostaną domyślnie pominięte bez wpływu na działania wyszukiwania ani jakość. W przypadku istniejących pól wektorów utworzonych przed tą wersją interfejsu API nie ma możliwości usunięcia tej kopii danych.

W przypadku kompresji rescoreStorageMethod wektorów właściwość jest domyślnie ustawiona na preserveOriginals wartość , która zachowuje wektory pełnej precyzji dlamożliwości oversampling i rescoring w celu zmniejszenia wpływu kompresji strat na graf HNSW. Jeśli nie używasz tych funkcji, możesz zmniejszyć magazyn wektorów, ustawiając wartość rescoreStorageMethod .discardOriginals

Ważne

rescoreStorageMethod Ustawienie właściwości jest nieodwracalne i będzie miało różne poziomy utraty jakości wyszukiwania w zależności od metody kompresji. Można to ustawić dla indeksów utworzonych za pomocą 2024-11-01-Preview lub nowszych podczas tworzenia indeksu lub dodawania nowych pól wektorowych.

Jeśli zamierzasz używać kwantyzacji skalarnych lub binarnych, zalecamy zachowanie rescoreStorageMethod zestawu w celu preserveOriginals zmaksymalizowania jakości wyszukiwania.

Aby ustawić tę właściwość:

  1. Użyj opcji Create Index (Tworzenie indeksu ) lub Update Index 2024-11-01-preview REST API (tworzenie lub aktualizowanie indeksu 2024-11-01-preview ) lub pakiet beta zestawu Azure SDK zapewniający tę funkcję.

  2. Dodaj sekcję do indeksu vectorSearch przy użyciu profilów, algorytmów i kompresji.

  3. W obszarze kompresje dodaj rescoringOptions wartość z enableRescoring ustawioną wartością true, defaultOversampling ustaw wartość dodatnią liczbę całkowitą i rescoreStorageMethod ustaw wartość .preserveOriginals

    PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview
    
    {
        "name": "demo-index",
        "fields": [. . . ],
        . . .
        "vectorSearch": {
            "profiles": [
                {
                "name": "myVectorProfile",
                "algorithm": "myHnsw",
                "compression": "myScalarQuantization"
                }
            ],
            "algorithms": [
              {
                "name": "myHnsw",
                "kind": "hnsw",
                "hnswParameters": {
                  "metric": "cosine",
                  "m": 4,
                  "efConstruction": 400,
                  "efSearch": 500
                },
                "exhaustiveKnnParameters": null
              }
            ],
            "compressions": [
                {
                    "name": "myScalarQuantization",
                    "kind": "scalarQuantization",
                    "rescoringOptions": {
                        "enableRescoring": true,
                        "defaultOversampling": 10,
                        "rescoreStorageMethod": "preserveOriginals"
                    },
                    "scalarQuantizationParameters": {
                        "quantizedDataType": "int8"
                    },
                    "truncationDimension": null
                }
            ]
        }
    }