Udostępnij za pośrednictwem


Konfigurowanie wektoryzatora w indeksie wyszukiwania

W usłudze Azure AI Search wektoryzator to oprogramowanie, które wykonuje wektoryzację, takie jak wdrożony model osadzania w usłudze Azure OpenAI, który konwertuje tekst (lub obrazy) na wektory podczas wykonywania zapytania.

Jest on zdefiniowany w indeksie wyszukiwania, ma zastosowanie do pól wektorów z możliwością wyszukiwania i jest używany w czasie zapytania do generowania osadzania dla danych wejściowych zapytania tekstowego lub obrazu. Jeśli zamiast tego musisz wektoryzować zawartość w ramach procesu indeksowania, zapoznaj się z tematem Zintegrowane wektoryzacja (wersja zapoznawcza). W przypadku wbudowanej wektoryzacji podczas indeksowania można skonfigurować indeksator i zestaw umiejętności, który wywołuje model osadzania dla nieprzetworzonej zawartości tekstowej.

Aby dodać wektoryzator do indeksu wyszukiwania, możesz użyć projektanta indeksu w witrynie Azure Portal lub wywołać interfejs API REST tworzenia lub aktualizowania indeksu albo użyć dowolnego pakietu zestawu Azure SDK zaktualizowanego w celu udostępnienia tej funkcji.

Wektoryzatory są teraz ogólnie dostępne, o ile używasz ogólnie dostępnej pary wektoryzatora umiejętności. AzureOpenAIEmbedding vectorizer i AzureOpenAIEmbedding umiejętności są ogólnie dostępne. Niestandardowy wektory interfejsu API sieci Web jest również ogólnie dostępny.

Wektoryzator usługi Azure AI Vision, wektoryzator katalogu modeli usługi Azure AI Studio i ich równoważne umiejętności są nadal w wersji zapoznawczej. Zestaw umiejętności musi określać interfejs API REST 2024-05-01-preview, aby korzystać z umiejętności i wektoryzatorów w wersji zapoznawczej.

Wymagania wstępne

  • Indeks z polami wektorów z możliwością wyszukiwania w usłudze Azure AI Search.

  • Wdrożony model osadzania, taki jak osadzanie tekstu-ada-002, osadzanie tekstu-3-small lub osadzanie tekstu-3-large-3-large w usłudze Azure OpenAI. Służy do wektoryzacji zapytania. Musi być identyczny z modelem osadzania używanym dla pola wektorowego w indeksie. Można również używać modeli wdrożonych z katalogu modeli usługi Azure AI Studio lub modelu usługi Azure AI Vision.

  • Uprawnienia do korzystania z modelu osadzania. Jeśli używasz usługi Azure OpenAI, obiekt wywołujący musi mieć uprawnienia użytkownika openAI usług Cognitive Services. Możesz też podać klucz interfejsu API.

  • Program Visual Studio Code z klientem REST w celu wysłania zapytania i zaakceptowania odpowiedzi.

Zalecamy włączenie rejestrowania diagnostycznego w usłudze wyszukiwania w celu potwierdzenia wykonania zapytania wektorowego.

Wypróbuj wektoryzator z przykładowymi danymi

Kreator importowania i wektoryzacji danych odczytuje pliki z usługi Azure Blob Storage, tworzy indeks z fragmentowanymi i wektoryzowanymi polami i dodaje wektoryzator. Zgodnie z projektem wektoryzator utworzony przez kreatora jest ustawiony na ten sam model osadzania używany do indeksowania zawartości obiektu blob.

  1. Przekazywanie przykładowych plików danych do kontenera w usłudze Azure Storage. Użyliśmy kilku małych plików tekstowych z książki ziemskiej NASA, aby przetestować te instrukcje w bezpłatnej usłudze wyszukiwania.

  2. Uruchom kreatora Importowanie i wektoryzowanie danych, wybierając kontener obiektów blob dla źródła danych.

    Zrzut ekranu przedstawiający stronę nawiązywania połączenia z danymi.

  3. Wybierz istniejące wdrożenie osadzania tekstu-ada-002. Ten model generuje osadzanie podczas indeksowania i służy również do konfigurowania wektoryzatora używanego podczas wykonywania zapytań.

    Zrzut ekranu przedstawiający stronę wektoryzacji i wzbogacania danych.

  4. Po zakończeniu działania kreatora i zakończeniu całego przetwarzania indeksatora należy mieć indeks z polem wektora z możliwością wyszukiwania. Definicja JSON pola wygląda następująco:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. Należy również mieć profil wektorowy i wektoryzator, podobnie jak w poniższym przykładzie:

    "profiles": [
       {
         "name": "vector-nasa-ebook-text-profile",
         "algorithm": "vector-nasa-ebook-text-algorithm",
         "vectorizer": "vector-nasa-ebook-text-vectorizer"
       }
     ],
     "vectorizers": [
       {
         "name": "vector-nasa-ebook-text-vectorizer",
         "kind": "azureOpenAI",
         "azureOpenAIParameters": {
           "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "modelName": "text-embedding-ada-002",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Przejdź do przodu, aby przetestować wektoryzator konwersji tekstu na wektor podczas wykonywania zapytania.

Definiowanie wektoryzatora i profilu wektora

W tej sekcji opisano modyfikacje schematu indeksu na potrzeby ręcznego definiowania wektoryzatora.

  1. Użyj polecenia Utwórz lub Zaktualizuj indeks , aby dodać vectorizers go do indeksu wyszukiwania.

  2. Dodaj następujący kod JSON do definicji indeksu. Sekcja wektoryzatorów zawiera informacje o połączeniu z wdrożonym modelem osadzania. W tym kroku przedstawiono dwa przykłady wektoryzatora, dzięki czemu można porównać model osadzania usługi Azure OpenAI i niestandardowy internetowy interfejs API obok siebie.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "modelName": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. W tym samym indeksie dodaj sekcję profilów wektorów, która określa jeden z wektoryzatorów. Profile wektorów wymagają również algorytmu wyszukiwania wektorowego używanego do tworzenia struktur nawigacji.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Przypisz profil wektora do pola wektorowego. Poniższy przykład przedstawia kolekcję pól z wymaganym polem klucza, polem ciągu tytułu i dwoma polami wektorów z przypisaniem profilu wektorowego.

    "fields": [ 
            { 
                "name": "ID", 
                "type": "Edm.String", 
                "key": true, 
                "sortable": true, 
                "analyzer": "keyword" 
            }, 
            { 
                "name": "title", 
                "type": "Edm.String"
            }, 
            { 
                "name": "vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1536, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }, 
            { 
                "name": "my-second-vector", 
                "type": "Collection(Edm.Single)", 
                "dimensions": 1024, 
                "vectorSearchProfile": "my_vector_profile", 
                "searchable": true, 
                "retrievable": true
            }
    ]
    

Testowanie wektoryzatora

Użyj klienta wyszukiwania, aby wysłać zapytanie za pośrednictwem wektoryzatora. W tym przykładzie założono, że program Visual Studio Code z klientem REST i przykładowym indeksem.

  1. W programie Visual Studio Code podaj punkt końcowy wyszukiwania i klucz interfejsu API zapytania wyszukiwania:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Wklej żądanie zapytania wektorowego.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2024-07-01 HTTP/1.1
         Content-Type: application/json
         api-key: {{queryApiKey}}
    
         {
             "count": true,
             "select": "title,chunk",
             "vectorQueries": [
                 {
                     "kind": "text",
                     "text": "what cloud formations exists in the troposphere",
                     "fields": "vector",
                     "k": 3,
                     "exhaustive": true
                 }
             ]
         }
    

    Kluczowe kwestie dotyczące zapytania obejmują:

    • "kind": "text" informuje aparat wyszukiwania, że dane wejściowe są ciągiem tekstowym i aby użyć wektoryzatora skojarzonego z polem wyszukiwania.

    • "text": "what cloud formations exists in the troposphere" to ciąg tekstowy do wektoryzacji.

    • "fields": "vector" to nazwa pola do przesłaniania zapytania. Jeśli używasz przykładowego indeksu utworzonego przez kreatora, wygenerowane pole wektora ma nazwę vector.

  3. Wyślij żądanie. Powinny zostać wyświetlone trzy k wyniki, w których pierwszy wynik jest najbardziej odpowiedni.

Zwróć uwagę, że nie ma właściwości wektoryzatora do ustawienia w czasie zapytania. Zapytanie odczytuje właściwości wektoryzatora zgodnie z przypisaniem pola profilu wektorowego w indeksie.

Sprawdzanie dzienników

Jeśli włączono rejestrowanie diagnostyczne dla usługi wyszukiwania, uruchom zapytanie Kusto, aby potwierdzić wykonywanie zapytań w polu wektora:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

Najlepsze rozwiązania

Jeśli konfigurujesz wektoryzator usługi Azure OpenAI, weź pod uwagę te same najlepsze rozwiązania , które zalecamy w przypadku umiejętności osadzania w usłudze Azure OpenAI.

Zobacz też