Custom Web API ベクターライザー

Note

Azure AI 検索は、Azure ポータルREST APIおよびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

カスタム Web API ベクターライザーを使用すると、クエリ時に埋め込みを生成する Web API エンドポイントを呼び出す検索クエリを構成できます。 エンドポイントに必要な JSON ペイロード構造については、この記事で後述します。 データは、モデルがデプロイされる geography で処理されます。

ベクター化はクエリ時に使用されますが、インデックス定義で指定し、ベクター プロファイルを使用してベクター フィールドで参照します。 詳細については、「 検索インデックスでベクターライザーを構成する」を参照してください。

カスタム Web API ベクターライザーは、REST API で WebApiVectorizer 呼び出されます。 最新の安定バージョンの Indexes - Create (REST API) または機能を提供する Azure SDK パッケージを使用します。

ベクタライザー パラメーター

パラメーターでは大文字と小文字が区別されます。

パラメーター名 説明
uri JSON ペイロードが送信される Web API の URI。 https URI スキームのみが許可されます。 GET を使用してインデックスを取得すると、関数キーの公開を防ぐために、 ?code= クエリ パラメーター値が ?code=<redacted> として返されます。 格納されている URI を変更せずにベクターライザーを更新するには、 uri<unchanged> に設定します。
httpMethod ペイロードの送信に使用されるメソッド。 使用できるメソッドは、 PUT または POSTです。
httpHeaders キーがヘッダー名であり、値が Web API に送信されるキーと値のペアのコレクション。 次のヘッダーは禁止されています: AcceptAccept-CharsetAccept-EncodingContent-LengthContent-TypeCookieHostTEUpgrade、および Via。 GET は、すべてのヘッダー値に対して <redacted> センチネル値を返します。 更新の要件については、 GET 後のヘッダー値の更新に関するページを参照してください。
authResourceId (省略可能)設定されている場合、このベクターライザーがコードをホストする関数またはアプリへの接続にマネージド ID を使用することを示す文字列。 このプロパティは、api://<appId><appId>/.defaultapi://<appId>/.defaultのいずれかの形式で、Microsoft Entra IDのアプリケーション (クライアント) ID またはアプリの登録を受け取ります。 この値は、クエリ パイプラインによって取得され、カスタム Web API 要求と共に関数またはアプリに送信される認証トークンのスコープを設定します。 このプロパティを設定するには、search serviceがマネージド ID 用に構成されておりAzure関数アプリが Microsoft Entra サインイン用に構成である必要があります。
authIdentity (省略可能)コードをホストする関数またはアプリに接続するためにsearch serviceによって使用されるユーザーマネージド ID。 システムマネージド ID またはユーザーマネージド ID を使用できます。 システム マネージド ID を使用するには、 authIdentity 空白のままにします。
timeout (省略可能) API 呼び出しを行う HTTP クライアントのタイムアウト。 XSD dayTimeDuration 値 ( ISO 8601 期間 値の制限されたサブセット) として書式設定する必要があります。 たとえば、 PT60S は 60 秒を意味します。 設定しない場合、既定値は 30 秒です。 タイムアウトは 1 ~ 230 秒です。

サポートされているベクター クエリの種類

Custom Web API ベクタライザーでは、textimageUrlimageBinary ベクター クエリがサポートされます。

定義例

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

GET 後にヘッダー値を更新する

インデックス定義を取得すると、サービスはカスタム Web API ベクタライザー内のすべての<redacted>値に対して sentinel httpHeadersを返します。 例えば次が挙げられます。

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

格納されている api-key 値を再利用するには、同じ namekindで同じ既存のベクターライザーを更新し、その uri を変更せずに、一致するヘッダー名の Sentinel を再送信します。

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

変更されていない uriでは、保持されているヘッダー値の <redacted> と、他の既存のヘッダーの実際の置換値を混在させることができます。 センチネルは同じベクターライザー上の同じ名前の既存のヘッダーにのみ適用されるため、追加または名前が変更されたヘッダーごとに実際の値を指定します。

uriを変更する場合は、同じ更新プログラムのすべてのhttpHeadersエントリに実際の値を指定します。 サービスは、保存されている値を別の 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
    }
}

資格情報が使用できず、 uriを変更する必要がある場合は、外部エンドポイントでローテーションまたは再生成します。 次に、新しい uri とヘッダーの値を一緒に送信します。

<redacted>値は、資格情報ではなくサービス センチネルです。 ベクタライザーを作成したり、別のベクターライザーに格納されているヘッダー値を取得したり再利用したりすることはできません。

JSON ペイロードの構造

カスタム Web API ベクターライザーで使用されるエンドポイントに必要な JSON ペイロード構造は、カスタム Web API スキルで使用される構造と同じです。 詳細については、 スキルのドキュメントを参照してください

カスタム Web API ベクターライザーの Web API エンドポイントを実装する場合は、次の考慮事項に注意してください。

  • ベクターライザーは、エンドポイントに要求を行う場合、values 配列に一度に 1 つのレコードのみを送信します。

  • ベクターライザーは、要求ペイロードにおける data JSON オブジェクト内の特定のキーでベクター化されるデータを渡します。 そのキーは、textimageUrl、または imageBinary で、要求されたベクター クエリの種類に依存します。

  • ベクターライザーは、結果の埋め込みを応答ペイロードにおける vector JSON オブジェクト内の data キーの下に含めることを期待します。

  • vectorizer は、エンドポイントによって返されたエラーまたは警告を無視します。 これらのエラーと警告は、クエリ時のデバッグには使用できません。

  • imageBinary ベクター クエリが要求された場合、エンドポイントに送信される要求ペイロードは次のようになります。

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

関連項目