Delen via


Een vectorizer configureren in een zoekindex

In Azure AI Search is een vectorizer software die vectorisatie uitvoert, zoals een geïmplementeerd insluitmodel in Azure OpenAI, waarmee tekst (of afbeeldingen) tijdens het uitvoeren van query's naar vectoren worden geconverteerd.

Deze is gedefinieerd in een zoekindex, is van toepassing op doorzoekbare vectorvelden en wordt tijdens de query gebruikt om een insluiting te genereren voor een tekst- of afbeeldingsquery-invoer. Als u in plaats daarvan inhoud moet vectoriseren als onderdeel van het indexeringsproces, raadpleegt u Integrated Vectorization (preview). Voor ingebouwde vectorisatie tijdens het indexeren kunt u een indexeerfunctie en vaardighedenset configureren die een insluitmodel aanroept voor uw onbewerkte tekstinhoud.

Als u een vectorizer wilt toevoegen aan een zoekindex, kunt u de indexontwerper in Azure Portal gebruiken of de REST API voor maken of bijwerken aanroepen, of een Azure SDK-pakket gebruiken dat is bijgewerkt om deze functie te bieden.

Vectorizers zijn nu algemeen beschikbaar zolang u een algemeen beschikbaar skill-vectorizer-paar gebruikt. AzureOpenAIEmbedding vectorizer en AzureOpenAIEmbedding vaardigheid zijn algemeen beschikbaar. De aangepaste web-API-vectorizer is ook algemeen beschikbaar.

Azure AI Vision vectorizer, Azure AI Studio model catalog vectorizer en hun equivalente vaardigheden zijn nog steeds in preview. Uw vaardighedenset moet 2024-05-01-preview REST API opgeven om preview-vaardigheden en vectorizers te gebruiken.

Vereisten

U wordt aangeraden diagnostische logboekregistratie in te schakelen voor uw zoekservice om de uitvoering van vectorquery's te bevestigen.

Een vectorizer proberen met voorbeeldgegevens

De wizard Gegevens importeren en vectoriseren leest bestanden uit Azure Blob Storage, maakt een index met gesegmenteerde en gevectoriseerde velden en voegt een vectorizer toe. De vectorizer die door de wizard is gemaakt, is standaard ingesteld op hetzelfde insluitingsmodel dat wordt gebruikt om de blobinhoud te indexeren.

  1. Voorbeeldgegevensbestanden uploaden naar een container in Azure Storage. We hebben enkele kleine tekstbestanden uit NASA's aardeboek gebruikt om deze instructies te testen op een gratis zoekservice.

  2. Voer de wizard Gegevens importeren en vectoriseren uit en kies de blobcontainer voor de gegevensbron.

    Schermopname van de verbinding met uw gegevenspagina.

  3. Kies een bestaande implementatie van tekst-embedding-ada-002. Dit model genereert insluitingen tijdens het indexeren en wordt ook gebruikt om de vectorizer te configureren die tijdens query's wordt gebruikt.

    Schermopname van de pagina gegevens vectoriseren en verrijken.

  4. Nadat de wizard is voltooid en alle verwerking van de indexeerfunctie is voltooid, moet u een index hebben met een doorzoekbaar vectorveld. De JSON-definitie van het veld ziet er als volgt uit:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. U moet ook een vectorprofiel en een vectorizer hebben, vergelijkbaar met het volgende voorbeeld:

    "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. Ga verder om uw vectorizer te testen voor conversie van tekst-naar-vector tijdens het uitvoeren van query's.

Een vectorizer en vectorprofiel definiëren

In deze sectie worden de wijzigingen in een indexschema uitgelegd voor het handmatig definiëren van een vectorizer.

  1. Gebruik Index maken of bijwerken om toe te voegen vectorizers aan een zoekindex.

  2. Voeg de volgende JSON toe aan uw indexdefinitie. De sectie vectorizers biedt verbindingsgegevens met een geïmplementeerd insluitmodel. In deze stap ziet u twee vectorizervoorbeelden, zodat u een Azure OpenAI-insluitingsmodel en een aangepaste web-API naast elkaar kunt vergelijken.

      "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. Voeg in dezelfde index een sectie vectorprofielen toe waarmee een van uw vectorizers wordt opgegeven. Vectorprofielen vereisen ook een algoritme voor vectorzoekopdrachten dat wordt gebruikt om navigatiestructuren te maken.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Wijs een vectorprofiel toe aan een vectorveld. In het volgende voorbeeld ziet u een verzameling velden met het vereiste sleutelveld, een titeltekenreeksveld en twee vectorvelden met een vectorprofieltoewijzing.

    "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
            }
    ]
    

Een vectorizer testen

Gebruik een zoekclient om een query via een vectorizer te verzenden. In dit voorbeeld wordt ervan uitgegaan dat Visual Studio Code een REST-client en een voorbeeldindex bevat.

  1. Geef in Visual Studio Code een zoekeindpunt en zoekquery-API-sleutel op:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Plak een vectorqueryaanvraag.

     ### 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
                 }
             ]
         }
    

    Belangrijke punten over de query zijn:

    • "kind": "text" geeft aan dat de invoer een tekenreeks is en dat de vectorizer moet worden gebruikt die is gekoppeld aan het zoekveld.

    • "text": "what cloud formations exists in the troposphere" is de tekenreeks die moet worden gevectoraliseerd.

    • "fields": "vector" is de naam van het veld waarvoor een query moet worden uitgevoerd. Als u de voorbeeldindex gebruikt die door de wizard wordt geproduceerd, krijgt het gegenereerde vectorveld de naam vector.

  3. Verzend de aanvraag. U krijgt drie k resultaten, waarbij het eerste resultaat het meest relevant is.

U ziet dat er geen vectorizer-eigenschappen zijn die tijdens de query moeten worden ingesteld. De query leest de vectorizer-eigenschappen op basis van de veldtoewijzing van het vectorprofiel in de index.

Logboeken controleren

Als u diagnostische logboekregistratie voor uw zoekservice hebt ingeschakeld, voert u een Kusto-query uit om de uitvoering van de query op het vectorveld te bevestigen:

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

Aanbevolen procedures

Als u een Azure OpenAI-vectorizer instelt, kunt u dezelfde aanbevolen procedures overwegen als voor de azure OpenAI-insluitingsvaardigheden.

Zie ook