Konfigurera en vektoriserare i ett sökindex
I Azure AI Search är en vektoriserare programvara som utför vektorisering, till exempel en distribuerad inbäddningsmodell i Azure OpenAI, som konverterar text (eller bilder) till vektorer under frågekörningen.
Det definieras i ett sökindex, det gäller sökbara vektorfält och används vid frågetillfället för att generera en inbäddning för en text- eller bildfrågasinmatning. Om du i stället behöver vektorisera innehåll som en del av indexeringsprocessen kan du läsa Integrerad vektorisering (förhandsversion). För inbyggd vektorisering under indexering kan du konfigurera en indexerare och kompetensuppsättning som anropar en inbäddningsmodell för ditt råtextinnehåll.
Om du vill lägga till en vektoriserare för att söka efter index kan du använda indexdesignern i Azure-portalen, anropa REST-API:et för skapa eller uppdatera index eller använda ett Azure SDK-paket som har uppdaterats för att tillhandahålla den här funktionen.
Vektoriserare är nu allmänt tillgängliga så länge du använder ett allmänt tillgängligt skill-vectorizer-par. AzureOpenAIEmbedding vectorizer och AzureOpenAIEmbedding-kunskaper är allmänt tillgängliga. Den anpassade webb-API-vektoriseraren är också allmänt tillgänglig.
Azure AI Vision-vektoriserare, Katalogvektoriserare för Azure AI Studio-modell och motsvarande kunskaper finns fortfarande i förhandsversion. Din kompetensuppsättning måste ange REST API för förhandsversion 2024-05-01 för att kunna använda förhandsversionskunskaper och vektoriserare.
Förutsättningar
Ett index med sökbara vektorfält i Azure AI Search.
En distribuerad inbäddningsmodell, till exempel textinbäddning-ada-002, textinbäddning-3-small eller text-embedding-3-large på Azure OpenAI. Den används för att vektorisera en fråga. Den måste vara identisk med den inbäddningsmodell som används för vektorfältet i ditt index. Du kan också använda modeller som distribuerats från Azure AI Studio-modellkatalogen eller en Azure AI Vision-modell.
Behörigheter för att använda inbäddningsmodellen. Om du använder Azure OpenAI måste anroparen ha Behörigheter för Cognitive Services OpenAI-användare . Eller så kan du ange en API-nyckel.
Visual Studio Code med en REST-klient för att skicka frågan och acceptera ett svar.
Vi rekommenderar att du aktiverar diagnostikloggning på söktjänsten för att bekräfta körningen av vektorfrågor.
Prova en vektoriserare med exempeldata
Guiden Importera och vektorisera data läser filer från Azure Blob Storage, skapar ett index med segmenterade och vektoriserade fält och lägger till en vektoriserare. Vektoriseraren som skapas av guiden är avsiktligt inställd på samma inbäddningsmodell som används för att indexera blobinnehållet.
Ladda upp exempeldatafiler till en container i Azure Storage. Vi använde några små textfiler från NASA:s jordbok för att testa dessa instruktioner på en kostnadsfri söktjänst.
Kör guiden Importera och vektorisera data och välj blobcontainern för datakällan.
Välj en befintlig distribution av text-embedding-ada-002. Den här modellen genererar inbäddningar under indexering och används även för att konfigurera den vektoriserare som används under frågor.
När guiden är klar och all indexeringsbearbetning är klar bör du ha ett index med ett sökbart vektorfält. Fältets JSON-definition ser ut så här:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Du bör också ha en vektorprofil och en vektoriserare, ungefär som i följande exempel:
"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 } ]
Hoppa framåt för att testa vektoriseraren för text-till-vektorkonvertering under frågekörningen.
Definiera en vektoriserare och vektorprofil
I det här avsnittet beskrivs ändringarna i ett indexschema för att definiera en vektoriserare manuellt.
Använd Skapa eller uppdatera index för att lägga
vectorizers
till i ett sökindex.Lägg till följande JSON i indexdefinitionen. Avsnittet vectorizers innehåller anslutningsinformation till en distribuerad inbäddningsmodell. Det här steget visar två vektoriserarexempel så att du kan jämföra en Inbäddningsmodell för Azure OpenAI och ett anpassat webb-API sida vid sida.
"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": " " } } ]
I samma index lägger du till ett avsnitt med vektorprofiler som anger en av dina vektoriserare. Vektorprofiler kräver också en algoritm för vektorsökning som används för att skapa navigeringsstrukturer.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Tilldela en vektorprofil till ett vektorfält. I följande exempel visas en fältsamling med det nyckelfält som krävs, ett rubriksträngfält och två vektorfält med en tilldelning av vektorprofiler.
"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 } ]
Testa en vektoriserare
Använd en sökklient för att skicka en fråga via en vektoriserare. I det här exemplet förutsätts Visual Studio Code med en REST-klient och ett exempelindex.
I Visual Studio Code anger du en sökslutpunkt och en API-nyckel för sökfrågor:
@baseUrl: @queryApiKey: 00000000000000000000000
Klistra in en vektorfrågebegäran.
### 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 } ] }
Viktiga punkter om frågan är:
"kind": "text"
talar om för sökmotorn att indata är en textsträng och att använda vektoriseraren som är associerad med sökfältet."text": "what cloud formations exists in the troposphere"
är textsträngen som ska vektoriseras."fields": "vector"
är namnet på det fält som du vill fråga efter. Om du använder exempelindexet som skapas av guiden får det genererade vektorfältet namnetvector
.
Skicka begäran. Du bör få tre
k
resultat, där det första resultatet är det mest relevanta.
Observera att det inte finns några vektoriseraregenskaper att ange vid frågetillfället. Frågan läser vektoriseraregenskaperna enligt tilldelningen av vektorprofilfältet i indexet.
Kontrollera loggar
Om du har aktiverat diagnostikloggning för söktjänsten kör du en Kusto-fråga för att bekräfta frågekörningen i vektorfältet:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Bästa praxis
Om du konfigurerar en Azure OpenAI-vektoriserare bör du överväga samma metodtips som vi rekommenderar för inbäddningsfärdigheten i Azure OpenAI.