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
Een index met doorzoekbare vectorvelden in Azure AI Search.
Een geïmplementeerd insluitingsmodel, zoals text-embedding-ada-002, text-embedding-3-small of text-embedding-3-large in Azure OpenAI. Deze wordt gebruikt om een query te vectoriseren. Het moet identiek zijn aan het insluitmodel dat wordt gebruikt voor het vectorveld in uw index. U kunt ook modellen gebruiken die zijn geïmplementeerd vanuit de Azure AI Studio-modelcatalogus of een Azure AI Vision-model.
Machtigingen voor het gebruik van het insluitmodel. Als u Azure OpenAI gebruikt, moet de aanroeper over De gebruikersmachtigingen voor Cognitive Services OpenAI beschikken. U kunt ook een API-sleutel opgeven.
Visual Studio Code met een REST-client om de query te verzenden en een antwoord te accepteren.
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.
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.
Voer de wizard Gegevens importeren en vectoriseren uit en kies de blobcontainer voor de gegevensbron.
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.
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" }
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 } ]
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.
Gebruik Index maken of bijwerken om toe te voegen
vectorizers
aan een zoekindex.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": " " } } ]
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" } ]
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.
Geef in Visual Studio Code een zoekeindpunt en zoekquery-API-sleutel op:
@baseUrl: @queryApiKey: 00000000000000000000000
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 naamvector
.
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.