Een vectorizer configureren in een zoekindex
In Azure AI Search is een vectorizer een onderdeel dat vectorisatie uitvoert met behulp van een geïmplementeerd insluitingsmodel in Azure OpenAI of Azure AI Vision. Tijdens het uitvoeren van query's wordt tekst (of afbeeldingen) geconverteerd naar vectoren.
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 geïntegreerde vectorisatie. Voor ingebouwde vectorisatie tijdens het indexeren kunt u een indexeerfunctie en vaardighedenset configureren die een insluitmodel aanroept voor uw onbewerkte tekst- of afbeeldingsinhoud.
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 Foundry 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 insluitmodel (zie de volgende sectie).
Machtigingen voor het gebruik van het insluitmodel. In Azure OpenAI moet de aanroeper Over Cognitive Services OpenAI-gebruikersmachtigingen 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.
Ondersteunde insluitingsmodellen
De volgende tabel bevat de insluitmodellen die kunnen worden gebruikt met een vectorizer. Omdat u hetzelfde insluitingsmodel moet gebruiken voor het indexeren en uitvoeren van query's, worden vectorizers gekoppeld aan vaardigheden die insluitingen genereren tijdens het indexeren. De tabel bevat de vaardigheid die is gekoppeld aan een bepaalde vectorizer.
Vectorizer soort | Modelnamen | Modelprovider | Gekoppelde vaardigheid |
---|---|---|---|
azureOpenAI |
text-embedding-ada-002, text-embedding-3 | Azure OpenAI | Vaardigheid AzureOpenAIEmbedding |
aml |
Facebook-DinoV2-Image-Embeddings, Cohere-embed-v3 | Azure AI Foundry-modelcatalogus | AML-vaardigheid |
aiServicesVision |
Multimodale insluitingen 4.0 API | Azure AI Vision (via een Azure AI-account voor meerdere services) | Vaardigheid voor multimodale insluitingen in Azure AI Vision |
customWebApi |
Elk insluitmodel | Extern gehost | Vaardigheid voor aangepaste web-API |
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.