Udostępnij za pośrednictwem


Konfigurowanie wektoryzatora w indeksie wyszukiwania

W usłudze Azure AI Search wektoryzator to składnik, który wykonuje wektoryzację przy użyciu wdrożonego modelu osadzania w usłudze Azure OpenAI lub Azure AI Vision. 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ę ze zintegrowanym wektoryzacją. W przypadku wbudowanej wektoryzacji podczas indeksowania można skonfigurować indeksator i zestaw umiejętności, który wywołuje model osadzania dla zawartości nieprzetworzonego tekstu lub obrazu.

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 Foundry i ich równoważne umiejętności są nadal dostępne 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 (zobacz następną sekcję).

  • Uprawnienia do korzystania z modelu osadzania. W usłudze 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 klientemREST w celu wysłania zapytania i zaakceptowania odpowiedzi.

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

Obsługiwane modele osadzania

W poniższej tabeli wymieniono modele osadzania, których można używać z wektoryzatorem. Ponieważ musisz użyć tego samego modelu osadzania do indeksowania i zapytań, wektoryzatory są sparowane z umiejętnościami, które generują osadzanie podczas indeksowania. Tabela zawiera listę umiejętności skojarzonych z określonym wektoryzatorem.

Rodzaj wektoryzatora Nazwy modeli Dostawca modelu Skojarzone umiejętności
azureOpenAI text-embedding-ada-002, text-embedding-3 Azure OpenAI Umiejętności azureOpenAIEmbedding
aml Facebook-DinoV2-Image-Embeddings, Cohere-embed-v3 Katalog modeli usługi Azure AI Foundry Umiejętność AML
aiServicesVision Osadzanie wielomodalne interfejsu API 4.0 Azure AI Vision (za pośrednictwem konta wielosłużytowego usługi Azure AI) Umiejętność osadzania wielomodalnego usługi Azure AI Vision
customWebApi Dowolny model osadzania Hostowane zewnętrznie Niestandardowa umiejętność internetowego interfejsu API

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ż