Azure OpenAI ベクターライザー

メモ

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

Azure OpenAI ベクターライザーは、クエリ時に埋め込みを生成するため、Azure OpenAI in Foundry Models リソースまたは Microsoft Foundry プロジェクトにデプロイされた埋め込みモデルに接続します。 データはモデルがデプロイされる Geo で処理されます。

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

Azure OpenAI ベクター化は、REST API で AzureOpenAIVectorizer と呼ばれます。 最新の安定バージョンの Indexes - Create (REST API) または機能を提供するAzure SDK パッケージを使用します。

メモ

このベクター化は OpenAI Azureにバインドされ、Azure OpenAI Standard 価格で課金されます。

前提 条件

  • Azure OpenAIのFoundry ModelsリソースまたはFoundry project。

    • Azure OpenAIリソースにはcustom subdomain、例えばhttps://<resource-name>.openai.azure.comが必要です。 このエンドポイントはAzureポータルのKeys and Endpointページで見つけられ、このスキルの resourceUriプロパティに使えます。

    • Foundryプロジェクトの 親リソース は、 https://<resource-name>.openai.azure.com、 https://<resource-name>.services.ai.azure.com、 https://<resource-name>.cognitiveservices.azure.comを含む複数のエンドポイントへのアクセスを提供します。 これらのエンドポイントはAzureポータルのKeysとEndpointページで見つけられ、このスキルのresourceUriプロパティに使うことができます。

  • リソースやプロジェクトにデプロイされたAzure OpenAI埋め込みモデル。 サポートされているモデルについては、次のセクションを参照してください。

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

パラメータは大文字・小文字を区別します。

パラメーター名 説明
resourceUri (必須)モデルプロバイダーのURIです。 サポートされているドメインは以下の通りです:

  • openai.azure.com
  • services.ai.azure.com
  • cognitiveservices.azure.com

API Management カスタム ドメインを除き、Azure API Management エンドポイントもサポートされます。 認証、RBAC、オプションのプライベート接続を含むセットアップについては、Azure API Management を Azure OpenAI スキルおよびベクター化機能と共に使用するを参照してください。

apiKey モデルにアクセスするために使われた秘密鍵。 鍵を渡すなら、空 authIdentity にしておきましょう。 apiKeyとauthIdentityの両方を設定すると、apiKeyが接続で使われます。
deploymentId (必須)デプロイされたAzure OpenAI埋め込みモデルのIDです。 これはモデルを展開した際に指定したデプロイメント名です。
authIdentity 検索サービスが接続のために使用するユーザー管理のアイデンティティ。 システム管理IDまたはユーザー管理IDのいずれかを使用できます。 システム管理型アイデンティティを使うには、 apiKey と authIdentity 空欄を残してください。 システム管理IDは自動的に使用されます。 管理型アイデンティティは、Azure OpenAIにテキストを送信するにはCognitive Services OpenAI User 権限を持っていなければなりません。
modelName (必須)指定された deploymentId に展開されたAzure OpenAI モデルの名前です。 サポートされる値は以下の通りです:

  • text-embedding-ada-002
  • text-embedding-3-large
  • text-embedding-3-small

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

Azure OpenAI ベクター化では、text ベクター クエリのみがサポートされます。

予想されるフィールドディメンション

Azure OpenAI ベクターライザーで構成されたフィールドの予想されるフィールド ディメンションは、構成されている modelNameによって異なります。

modelName 最小ディメンション 最大寸法
text-embedding-ada-002 1536 1536
text-embedding-3-large 1 3072
text-embedding-3-small 1 1536

サンプル定義

"vectorizers": [
    {
        "name": "my-openai-vectorizer",
        "kind": "azureOpenAI",
        "azureOpenAIParameters": {
            "resourceUri": "https://my-fake-azure-openai-resource.openai.azure.com",
            "apiKey": "0000000000000000000000000000000000000",
            "deploymentId": "my-ada-002-deployment",
            "authIdentity": null,
            "modelName": "text-embedding-ada-002",
        },
    }
]

パフォーマンスのベスト プラクティス

このベクター化を使用する際に考慮する必要があるベスト プラクティスを次に示します。

  • もしAzure OpenAIのTPM(トークン数/分)の上限に達しているなら、quota limits advisoryを考慮して対応できるようにしてください。 Azure OpenAIインスタンスのパフォーマンスについては、Azure OpenAIモニタリングドキュメントを参照してください。

  • このベクター化に使用する Azure OpenAI 埋め込みモデル デプロイは、embedding スキルなど、他のユース ケースに使用されるデプロイとは理想的に分離する必要があります。 これにより、各デプロイメントは特定のユースケースに合わせてカスタマイズされ、パフォーマンスの最適化やインデクサーおよびインデックス埋め込みコールからのトラフィックの識別が容易になります。

  • Azure OpenAIのインスタンスは、AI検索サービスがホストされている地域と同じ地域、あるいは地理的に近い場所にあるべきです。 これにより遅延が減少し、サービス間のデータ転送速度が向上します。

  • 頻繁に発生する 429 エラー コードを回避するには、複数の Azure OpenAI 埋め込みモデルデプロイの前に負荷分散ゲートウェイを実装することで、API Management による負荷分散を実装することを検討してください。

  • quotas and limitsドキュメントで公開されているOpenAI TPM(トークン/分)のデフォルトAzure上限を上回っている場合は、Azure AI 検索チームにsupportケースを開設し、適切に調整してください。 これにより、基準値が高い場合、ドキュメント化されたデフォルトのTPM制限によってインデックス作成のプロセスが不必要に遅くなるのを防ぐことができます。

マネージド ID 認証のセキュリティに関する考慮事項

Azure OpenAI ベクターライザーがマネージド ID 認証を使用する場合、Azure AI 検索 Foundry Tools 対象ユーザー (https://cognitiveservices.azure.com) のMicrosoft Entra アクセス トークンを取得し、resourceUriによって指定されたエンドポイントに送信された要求に含めます。 マネージド ID 認証は、 authIdentityを設定するとき、または apiKey と authIdentity の両方が空で、サービスがシステム割り当て ID を使用する場合に適用されます。

resourceUriによって参照されるエンドポイントは、独自の Azure OpenAI または Foundry Tools リソースである必要があります。 サポートされているドメインは以下の通りです:

  • openai.azure.com
  • cognitiveservices.azure.com
  • services.ai.azure.com

Azure API Management (APIM) エンドポイント (*.azure-api.net) もサポートされています。 APIM ホスト名は名前だけでは検証できないため、Azure AI 検索は、ドメインマッチングではなく、構成時にライブ接続チェックを使用してこれらのエンドポイントを検証します。 APIM エンドポイントとその背後にある Azure OpenAI または Foundry Tools リソースの間の関係を構成し、維持する責任があります。

メモ

Foundry Tools 対象ユーザーに対して発行されたマネージド ID トークンは、Foundry Tools または ID が承認されている OpenAI リソースAzureに対して有効です。 信頼されていないエンドポイントに送信すると、トークンが公開される可能性があります。

セキュリティで保護されたデプロイを維持するには、次のプラクティスに従います。

  • resourceUriは、自分が所有し、信頼するエンドポイントのみに設定します。 前に示した Foundry Tools ドメインを優先します。 APIM エンドポイントを使用する場合は、マネージド ID を有効にする前に、独自のリソースの前に置くことを確認します。 信頼できる見た目のホスト名は、所有権の証明ではありません。
  • 検索サービスで使用されるマネージド ID に最小特権の原則を適用します。 Azure OpenAI ベクター化には、ターゲット リソースに対する Cognitive Services OpenAI ユーザー ロールのみが必要です。 より広範なロールの付与は避けてください。
  • ネットワーク セキュリティ境界 (NSP) とプライベート エンドポイントまたは VNet 統合を使用して、検索サービスが到達できるエンドポイントと、ターゲット リソースが要求を受け入れるソースを制限します。
  • APIM エンドポイントを使用する場合は、ゲートウェイが受信要求を検証し、目的のバックエンドにのみ転送することを確認します。 また、アクセス ポリシーも定期的に確認する必要があります。
  • apiKeyよりもマネージド ID を優先します。 apiKeyを使用する場合は、安全に保存して回転させ、ソース管理に埋め込むことはありません。 サービスは、 apiKey と authIdentityの両方を設定する構成を拒否します。
  • インデックス定義、マネージド ID ロールの割り当て、APIM 構成を定期的に確認して、 resourceUri 値、アクセス制御、および ID アクセス許可が最新かつ適切であることを確認します。 確立された変更管理プロセスとセキュリティ レビュー プロセスを通じて、構成の変更を確認します。
  • OpenAI と Foundry Tools Azureサインイン ログ、認証イベント、およびアクセス ログで、予期しないアクティビティまたは未承認のアクティビティを監視します。
  • 不要になった未使用のベクターライザー、エンドポイント、ロールの割り当て、API キーを削除します。

インデックスとベクター化の構成へのアクセスを制限する

インデックス定義を作成または変更できるユーザーは、ターゲット エンドポイント (resourceUri) とベクターライザーで使用される認証構成の両方を制御します。 Vectorizer は Foundry Tools 対象ユーザーのマネージド ID トークンをそのエンドポイントに送信するため、これらのアクセス許可を信頼された管理者に制限し、マネージド ID 対応ベクターライザーを構成するときに、標準の変更管理およびセキュリティ レビュー プロセスに従います。

関連項目