Azure OpenAI Embedding skill

Die Azure OpenAI Embedding Fähigkeit verbindet sich mit einem Embedding-Modell, das auf Ihrer Azure OpenAI in Foundry Models Ressource oder Microsoft Foundry bereitgestellt wird, um Embeddings während der Indexierung zu generieren. Ihre Daten werden im Geo verarbeitet, in dem Ihr Modell bereitgestellt wird.

Der Import Data Wizard im Azure-Portal nutzt die Azure OpenAI Embedding-Fähigkeit, um Inhalte zu vektorisieren. Du kannst den Wizard ausführen und das generierte Skillset überprüfen, um zu sehen, wie der Wizard die Fertigkeit für das Einbetten von Modellen aufbaut.

Note

Diese Fähigkeit wird garantiert OpenAI Azure und wird zum OpenAI-Standardpreis Azure OpenAI-Standardpreis berechnet.

Prerequisites

  • Eine Azure OpenAI in Foundry Models oder Foundry Projekt.

    • Ihre Azure OpenAI-Ressource muss eine benutzerdefinierte Subdomäne haben, wie https://<resource-name>.openai.azure.com. Diesen Endpunkt findest du auf der Seite Keys and Endpoint im Azure-Portal und nutzt ihn für die Eigenschaft resourceUri in diesem Skill für die Eigenschaft c1 /.

    • Die übergeordnete Ressource Ihres Foundry-Projekts bietet Zugriff auf mehrere Endpunkte, darunter https://<resource-name>.openai.azure.com, https://<resource-name>.services.ai.azure.com, und https://<resource-name>.cognitiveservices.azure.com. Diese Endpunkte findest du auf der Seite Keys and Endpoint im Azure Portal und nutze jeden von ihnen für die Eigenschaft resourceUri in dieser Fähigkeit.

  • Ein Azure OpenAI-Embedding-Modell, das auf Ihre Ressource oder Ihr Projekt bereitgestellt wird. Für unterstützte Modelle siehe Abschnitt Skill-Parameter .

@odata.type

Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill

Data limits

Die maximale Größe einer Texteingabe sollte 8.000 Token betragen. Wenn die Eingabe das maximal erlaubte Maximum überschreitet, wirft das Modell einen ungültigen Anforderungsfehler. Weitere Informationen finden Sie im Schlüsselkonzept tokens in der Azure OpenAI-Dokumentation. Überlege, die Text-Split-Fähigkeit zu verwenden, wenn du Datenchunking brauchst.

Skill parameters

Die Parameter sind groß- und kleinschreibungssensitiv.

Inputs Description
resourceUri (Erforderlich) Die URI des Modellanbieters. Unterstützte Domains sind:

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

Dieses Feld ist erforderlich, wenn Ihre Ressource hinter einem privaten Endpunkt bereitgestellt wird oder eine virtuelle Netzwerkintegration (VNet) verwendet. Azure API Management Endpunkte werden mit URL https://<resource-name>.azure-api.net unterstützt. Gemeinsame private Links werden für API-Management-Endpunkte nicht unterstützt.

apiKey Der geheime Schlüssel, mit dem man auf das Modell zugegriffen hat. Wenn du einen Schlüssel gibst, lass authIdentity es leer. Wenn du sowohl als auch apiKeyauthIdentityeinstellst, wird die apiKey für die Verbindung verwendet.
deploymentId (Erforderlich) Die ID des bereitgestellten Azure OpenAI-Embedding-Modells. Das ist der Bereitstellungsname, den Sie beim Bereitstellen des Modells angegeben haben.
authIdentity Eine benutzerverwaltete Identität, die vom Suchdienst für die Verbindung verwendet wird. Sie können entweder eine system- oder benutzerverwaltete Identität verwenden. Um eine systemverwaltete Identität zu verwenden, leave apiKey und authIdentity blank. Die systemverwaltete Identität wird automatisch verwendet. Eine verwaltete Identität muss Cognitive Services OpenAI User Berechtigungen haben, um Text an Azure OpenAI zu senden.
modelName (Erforderlich) Der Name des Azure OpenAI-Modells, das unter der angegebenen deploymentId bereitgestellt wurde. Unterstützte Werte sind:

  • text-embedding-ada-002
  • text-embedding-3-large
  • text-embedding-3-small
dimensions (Optional) Die Dimensionen der Embeddings, die du erzeugen möchtest, vorausgesetzt, das Modell unterstützt einen Dimensionsbereich. Standardmäßig sind die maximalen Abmessungen für jedes Modell. Für Skillsets, die mit REST-API-Versionen vor der Vorschau des 01.10.2023 erstellt wurden, sind die Dimensionen auf 1536 festgelegt. Wenn du die Eigenschaft dimensions in dieser Skill setzt, setze die dimensions Eigenschaft in der Vektorfelddefinition auf denselben Wert.

Unterstützte Dimensionen durch modelName

Die unterstützten Dimensionen für eine Azure OpenAI-Einbettungsfähigkeit hängen vom konfigurierten modelName ab.

modelName Minimum dimensions Maximum dimensions
text-embedding-ada-002 1536 1536
text-embedding-3-large 1 3072
text-embedding-3-small 1 1536

Skill inputs

Input Description
text Der Eingabetext wird vektorisiert. Wenn du Datenchunking verwendest, könnte die Quelle ./document/pages/*

Skill outputs

Output Description
embedding Vektorisierte Einbettung für den Eingabetext.

Sample definition

Betrachten wir einen Datensatz mit folgenden Feldern:

{
    "content": "Microsoft released Windows 10."
}

Dann könnte deine Fertigkeitsdefinition so aussehen:

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://my-demo-openai-eastus.openai.azure.com/",
  "deploymentId": "my-text-embedding-ada-002-model",
  "modelName": "text-embedding-ada-002",
  "dimensions": 1536,
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}

Sample output

Für den gegebenen Eingabetext wird eine vektorisierte Einbettung erzeugt.

{
  "embedding": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... 
        0.021276434883475304,
      ]
}

Die Ausgabe befindet sich im Speicher. Um diese Ausgabe an ein Feld im Suchindex zu senden, musst du ein outputFieldMapping definieren, das die vektorisierte Einbettungsausgabe (die ein Array ist) auf ein Vektorfeld abbildet. Angenommen, die Fertigkeitsausgabe befindet sich im Einbettungsknoten des Dokuments und content_vector das Feld im Suchindex ist, sollte das outputFieldMapping im Indexer wie folgt aussehen:

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/embedding/*",
      "targetFieldName": "content_vector"
    }
  ]

Best practices

Im Folgenden finden Sie einige bewährte Praktiken, die Sie bei der Nutzung dieser Fähigkeit beachten sollten:

  • Wenn du dein Azure OpenAI TPM (Tokens pro Minute)-Limit erreichst, solltest du die Quota-Grenzen in Betracht ziehen, damit du entsprechend umgehen kannst. Weitere Informationen zur Leistung Ihrer Azure OpenAI-Überwachung finden Sie in der Dokumentation Azure OpenAI Monitoring/c0.

  • Die Azure OpenAI-Embeddings-Modellbereitstellung, die du für diese Fähigkeit verwendest, sollte idealerweise von der Bereitstellung für andere Anwendungsfälle getrennt sein, einschließlich des query-Vektorizers. Dadurch kann jede Bereitstellung auf ihren spezifischen Anwendungsfall zugeschnitten werden, was zu optimierter Leistung führt und den Datenverkehr vom Indexer leicht identifiziert und die Indexaufrufe einbetten.

  • Ihre Azure OpenAI-Instanz sollte sich in derselben Region befinden oder zumindest geografisch nahe an der Region, in der Ihr KI-Suchdienst gehostet wird. Dies reduziert die Latenz und verbessert die Geschwindigkeit der Datenübertragung zwischen den Diensten.

  • Um zu vermeiden, dass 429-Fehlercodes häufig auftreten, sollten Sie die Implementierung von Lastverteilung über API-Management in Betracht ziehen, indem Sie ein Gateway [/azure/architecture/ai-ml/guide/azure-openai-gateway-multi-backend] vor mehreren Azure OpenAI-Embedding-Modell-Deployments implementieren.

  • Wenn Sie ein höheres als Standard-Azure OpenAI TPM (Tokens pro Minute)-Limit haben, wie es in der quoten und -limits Dokumentation veröffentlicht ist, eröffnen Sie einen Support Case mit dem Azure KI-Suche Team, damit dies entsprechend angepasst werden kann. Das hilft, dass Ihr Indexierungsprozess nicht unnötig durch das dokumentierte Standard-TPM-Limit verlangsamt wird, falls Sie höhere Limits haben.

  • Beispiele und funktionierende Codebeispiele mit dieser Fähigkeit finden Sie unter den folgenden Links:

Fehler und Warnungen

Condition Result
Null oder ungültige URI Error
Null oder ungültige DeploymentID Error
Der Text ist leer Warning
Der Text ist größer als 8.000 Tokens Error

See also