Anpassad webb-API-vektoriserare

Note

Azure AI-sökning är tillgängligt via Azure-portalen, REST-API:er och Azure-SDK:er. Den ligger också till grund för Foundry IQ, det hanterade kunskapsskiktet som omvandlar företagsinnehåll till återanvändbara, behörighetsmedvetna kunskapsbaser för agenter i Microsoft Foundry-portalen.

Med custom web API vectorizer kan du konfigurera sökfrågor för att anropa en webb-API-slutpunkt som genererar inbäddningar vid frågetillfället. Den nödvändiga JSON-nyttolaststrukturen för slutpunkten beskrivs senare i den här artikeln. Dina data bearbetas i geography där din modell distribueras.

Även om vektoriserare används vid frågetillfället anger du dem i indexdefinitioner och refererar till dem i vektorfält via en vektorprofil. Mer information finns i Konfigurera en vektoriserare i ett sökindex.

Den anpassade webb-API-vektoriseraren anropas WebApiVectorizer i REST-API:et. Använd den senaste stabila versionen av Indexes – Skapa (REST API) eller ett Azure SDKs-paket som tillhandahåller funktionen.

Vectorizer-parametrar

Parametrar är skiftlägeskänsliga.

Parameternamn beskrivning
uri URI:n för webb-API:et som JSON-nyttolasten skickas till. Endast https-URI-schemat tillåts. När du hämtar indexet med GET returnerar tjänsten värdet för frågeparametern ?code= som ?code=<redacted> för att förhindra att funktionsnycklar exponeras. Om du vill uppdatera vektoriseraren utan att ändra den lagrade URI:n anger du uri till <unchanged>.
httpMethod Den metod som används för att skicka nyttolasten. Tillåtna metoder är PUT eller POST.
httpHeaders En samling nyckel/värde-par där nycklar är rubriknamn och värden skickas till webb-API:et. Följande rubriker är förbjudna: Accept, Accept-Charset, Accept-Encoding, Content-Length, Content-Type, Cookie, Host, TE, , Upgradeoch Via. GET returnerar sentinel-värdet <redacted> för varje rubrikvärde. Information om uppdateringskrav finns i Uppdatera huvudvärden efter GET.
authResourceId (Valfritt) En sträng som, om den anges, anger att den här vektoriseraren använder en hanterad identitet för anslutningen till funktionen eller appen som är värd för koden. Den här egenskapen tar ett applikations-ID (klient-ID) eller appregistrering i Microsoft Entra ID i ett av följande format: api://<appId>, <appId>/.default, api://<appId>/.default. Det här värdet omfattar den autentiseringstoken som hämtas av frågepipelinen och skickas med den anpassade webb-API-begäran till funktionen eller appen. Om du anger den här egenskapen måste din söktjänst vara konfigurerad för hanterad identitet och din Azure-funktionsapp vara konfigurerad för Microsoft Entra-inloggning.
authIdentity (Valfritt) En användarhanterad identitet som används av search service för att ansluta till funktionen eller appen som är värd för koden. Du kan använda antingen en systemhanterad eller användarhanterad identitet. Lämna authIdentity tom om du vill använda en systemhanterad identitet.
timeout (Valfritt) Tidsgränsen för HTTP-klienten som gör API-anropet. Det måste formateras som ett XSD-värde dayTimeDuration (en begränsad delmängd av ett ISO 8601-varaktighetsvärde ). Det innebär till exempel PT60S 60 sekunder. Om det inte anges är standardvärdet 30 sekunder. Tidsgränsen kan vara mellan 1 och 230 sekunder.

Frågetyper för vektorer som stöds

Custom Web API-vektoriseraren stöder text, imageUrloch imageBinary vektorfrågor.

Exempeldefinition

"vectorizers": [
    {
        "name": "my-custom-web-api-vectorizer",
        "kind": "customWebApi",
        "customWebApiParameters": {
            "uri": "https://contoso.embeddings.com",
            "httpMethod": "POST",
            "httpHeaders": {
                "api-key": "<your-header-value>"
            },
            "timeout": "PT60S",
            "authResourceId": null,
            "authIdentity": null
        }
    }
]

Uppdatera sidhuvudvärden efter GET

När du hämtar en indexdefinition returnerar tjänsten sentinel <redacted> för varje httpHeaders värde i en anpassad webb-API-vektoriserare. Ett exempel:

{
    "name": "my-custom-web-api-vectorizer",
    "kind": "customWebApi",
    "customWebApiParameters": {
        "uri": "https://contoso.embeddings.com",
        "httpMethod": "POST",
        "httpHeaders": {
            "api-key": "<redacted>"
        },
        "timeout": "PT60S",
        "authResourceId": null,
        "authIdentity": null
    }
}

Om du vill återanvända det lagrade api-key värdet uppdaterar du samma befintliga vektoriserare med samma name och kindlämnar dess uri oförändrade och lägger till sentinel igen för det matchande rubriknamnet:

{
    "name": "my-custom-web-api-vectorizer",
    "kind": "customWebApi",
    "customWebApiParameters": {
        "uri": "https://contoso.embeddings.com",
        "httpMethod": "POST",
        "httpHeaders": {
            "api-key": "<redacted>"
        },
        "timeout": "PT60S",
        "authResourceId": null,
        "authIdentity": null
    }
}

Med en oförändrad urikan du blanda <redacted> för behållna rubrikvärden med faktiska ersättningsvärden för andra befintliga rubriker. Ange ett faktiskt värde för varje sidhuvud som har lagts till eller bytt namn eftersom sentinel endast gäller för ett befintligt huvud med samma namn på samma vektoriserare.

Om du ändrar urianger du faktiska värden för varje httpHeaders post i samma uppdatering. Tjänsten återanvänder inte lagrade värden för en annan uri:

{
    "name": "my-custom-web-api-vectorizer",
    "kind": "customWebApi",
    "customWebApiParameters": {
        "uri": "https://new.contoso.embeddings.com",
        "httpMethod": "POST",
        "httpHeaders": {
            "api-key": "<new-header-value>"
        },
        "timeout": "PT60S",
        "authResourceId": null,
        "authIdentity": null
    }
}

Om autentiseringsuppgifterna inte är tillgängliga och du måste ändra uriroterar eller återskapar du dem på den externa slutpunkten. Skicka sedan de nya uri värdena och huvudvärdena tillsammans.

Värdet <redacted> är en tjänst sentinel, inte en autentiseringsuppgift. Det går inte att skapa en vektoriserare eller hämta eller återanvända ett rubrikvärde som lagras för en annan vektoriserare.

JSON-nyttolaststruktur

Den obligatoriska strukturen för JSON-nyttolasten för en slutpunkt som används tillsammans med Custom Web API-vektoriseraren är densamma som den struktur som används av Custom Web API-skill. Mer information finns i kunskapsdokumentationen.

Tänk på följande när du implementerar en webb-API-slutpunkt för Custom Web API-vektoriseraren:

  • Vektoriseraren skickar bara en post i taget i matrisen values när en begäran skickas till slutpunkten.

  • Vektoriseraren skickar data som ska vektoriseras i en specifik nyckel i data JSON-objektet i nyttolasten för begäran. Nyckeln är text, imageUrl, eller imageBinary, beroende på vilken typ av vektorfråga som begärdes.

  • Vektoriseraren förväntar sig att den resulterande inbäddningen ska vara under vector nyckeln i data JSON-objektet i svarsnyttolasten.

  • Vektoriseraren ignorerar eventuella fel eller varningar som returneras av slutpunkten. Dessa fel och varningar är inte tillgängliga för felsökning av frågetid.

  • Om en imageBinary vektorfråga har gjorts är nyttolasten som skickas till slutpunkten följande:

    {
        "values": [
            {
                "recordId": "0",
                "data":
                {
                    "imageBinary": {
                        "data": "<base 64 encoded image binary data>"
                    }
                }
            }
        ]
    }
    

Se även