Konfigurieren einer Vektorisierung in einem Suchindex
In Azure KI-Suche ist ein Vektorizer eine Komponente, die Vektorisierung mithilfe eines bereitgestellten Einbettungsmodells in Azure OpenAI oder Azure AI Vision durchführt. Er konvertiert Text (oder Bilder) während der Abfrageausführung in Vektoren.
Er ist in einem Suchindex definiert, gilt für durchsuchbare Vektorfelder und wird zur Abfragezeit verwendet, um eine Einbettung für eine Text- oder Bildabfrageeingabe zu erzeugen. Wenn Sie stattdessen Inhalte als Teil des Indizierungsprozesses vektorisieren müssen, lesen Sie Integrierte Vektorisierung. Für die integrierte Vektorisierung während der Indizierung können Sie einen Indexer und ein Skillset konfigurieren, das ein Einbettungsmodell für Ihren Rohtextinhalt oder Ihr Bild aufruft.
Um dem Suchindex eine Vektorisierung hinzuzufügen, können Sie den Index-Designer im Azure-Portal verwenden, die REST-API Erstellen oder Aktualisieren des Indexes aufrufen oder ein beliebiges Azure SDK-Paket verwenden, das aktualisiert wurde, um dieses Feature bereitzustellen.
Vektorisierungen sind jetzt allgemein verfügbar, solange Sie ein allgemein verfügbares Skill-Vektorisierungs-Paar verwenden. Die AzureOpenAIEmbedding-Vektorisierung und der AzureOpenAIEmbedding-Skill sind allgemein verfügbar. Die benutzerdefinierte Web-API-Vektorisierung ist ebenfalls allgemein verfügbar.
Azure KI Vision-Vektorisierung, Vektorisierung des Azure KI Foundry-Modellkatalogs und ihre entsprechenden Skills befinden sich noch in der Vorschauphase. Ihr Skillset muss die REST-API „2024-05-01-preview“ angeben, damit Vorschauskills und -vektorisierungen verwendet werden können.
Voraussetzungen
Ein Index mit durchsuchbaren Vektorfeldern in Azure KI-Suche.
Ein bereitgestelltes Einbettungsmodell (siehe nächster Abschnitt).
Berechtigungen für die Verwendung des Einbettungsmodells. In Azure OpenAI muss die aufrufende Funktion über Berechtigungen vom Typ Cognitive Services OpenAI-Benutzer verfügen. Sie können auch einen API-Schlüssel bereitstellen.
Visual Studio Code mit einem REST-Client, um die Abfrage zu senden und eine Antwort zu akzeptieren.
Es wird empfohlen, die Diagnoseprotokollierung für Ihren Suchdienst zu aktivieren, um die Ausführung von Vektorabfragen zu bestätigen.
Unterstützte Einbettungsmodelle
In der folgenden Tabelle sind die Einbettungsmodelle aufgeführt, die mit einem Vektorizer verwendet werden können. Da Sie dasselbe Einbettungsmodell für die Indizierung und Abfragen verwenden müssen, werden Vektorizer mit Fähigkeiten gekoppelt, die während der Indizierung Einbettungen generieren. In der Tabelle sind die Fähigkeiten aufgeführt, die einem bestimmten Vektorizer zugeordnet sind.
Art des Vektorizers | Modellnamen | Modellanbieter | Zugeordnete Fähigkeiten |
---|---|---|---|
azureOpenAI |
text-embedding-ada-002, text-embedding-3 | Azure OpenAI | AzureOpenAIEmbedding-Qualifikation |
aml |
Facebook-DinoV2-Image-Embeddings, Cohere-embed-v3 | Modellkatalog von Azure KI Foundry | AML-Skill |
aiServicesVision |
Multimodale Einbettungen 4.0 API | Azure KI Vision (über ein Azure KI Multi-Service-Konto) | Azure KI Vision – Skill „Multimodale-Einbettung“ |
customWebApi |
Jedes Einbettungsmodell | Extern gehostet | Benutzerdefinierter Web-API-Skill |
Testen einer Vektorisierung mit Beispieldaten
Der Assistent zum Importieren und Vektorisieren von Daten liest Dateien aus Azure Blob Storage, erstellt einen Index mit geblockten und vektorisierten Feldern und fügt eine Vektorisierung hinzu. Standardmäßig wird die vom Assistenten erstellte Vektorisierung auf dasselbe Einbettungsmodell festgelegt, das zum Indizieren des BLOB-Inhalts verwendet wird.
Laden Sie Beispieldatendateien in einen Container in Azure Storage hoch. Wir haben einige kleine Textdateien aus dem Erdbuch der NASA verwendet, um diese Anweisungen auf einem kostenlosen Suchdienst zu testen.
Führen Sie den Assistenten zum Importieren und Vektorisieren von Daten aus, und wählen Sie den BLOB-Container für die Datenquelle aus.
Wählen Sie eine vorhandene Bereitstellung von text-embedding-ada-002 aus. Dieses Modell erzeugt Einbettungen während der Indizierung und wird auch zur Konfiguration der Vektorisierung bei Abfragen verwendet.
Nach Beendigung des Assistenten und der Indexerstellung sollten Sie einen Index mit einem durchsuchbaren Vektorfeld haben. Die JSON-Definition des Felds sieht wie folgt aus:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Sie sollten auch ein Vektorprofil und eine Vektorisierung haben, ähnlich wie im folgenden Beispiel:
"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 } ]
Fahren Sie fort, um Ihre Vektorisierung für die Text-zu-Vektor-Konvertierung während der Abfrageausführung zu testen.
Definieren Sie eine Vektorisierung und ein Vektorprofil
In diesem Abschnitt werden die Änderungen an einem Indexschema zur manuellen Definition einer Vektorisierung erläutert.
Verwenden Sie Erstellen oder Aktualisieren eines Indexes, um
vectorizers
zu einem Suchindex hinzuzufügen.Fügen Sie der Indexdefinition den folgenden JSON-Code hinzu. Der Abschnitt „Vektorisierung“ liefert Verbindungsinformationen zu einem eingesetzten Einbettungsmodell. In diesem Schritt werden zwei Beispiele für Vektorisierung gezeigt, damit Sie ein Azure OpenAI-Einbettungsmodell und eine benutzerdefinierte Web-API nebeneinander vergleichen können.
"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": " " } } ]
Fügen Sie in denselben Index einen Abschnitt für Vektorprofile ein, der eine Ihrer Vektorisierungen angibt. Vektorprofile erfordern auch einen Vektorsuchalgorithmus, der zum Erstellen von Navigationsstrukturen verwendet wird.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Weisen Sie einem Vektorfeld ein Vektorprofil zu. Das folgende Beispiel zeigt eine Feldsammlung mit dem erforderlichen Schlüsselfeld, einem Feld für die Titelzeichenfolge und zwei Vektorfeldern mit einer Vektorprofilzuweisung.
"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 } ]
Testen einer Vektorisierung
Verwenden Sie einen Suchclient, um eine Anfrage durch eine Vektorisierung zu senden. Dieses Beispiel setzt Visual Studio Code mit einem REST-Client und einem Beispielindex voraus.
Geben Sie in Visual Studio Code einen Endpunkt für die Suche und einen API-Schlüssel für die Suchabfrage an:
@baseUrl: @queryApiKey: 00000000000000000000000
Fügen Sie eine Vektorabfrageanforderung ein.
### 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 } ] }
Wichtige Punkte zur Abfrage sind:
"kind": "text"
teilt der Suchmaschine mit, dass es sich bei der Eingabe um eine Textzeichenfolge handelt und die dem Suchfeld zugeordnete Vektorisierung verwendet werden soll."text": "what cloud formations exists in the troposphere"
ist die zu vektorisierende Textzeichenfolge."fields": "vector"
ist der Name des zu abfragenden Felds. Wenn Sie den vom Assistenten erstellten Beispielindex verwenden, wird das generierte Vektorfeldvector
benannt.
Senden Sie die Anforderung. Sie sollten drei
k
-Ergebnisse erhalten, wobei das erste Ergebnis das relevanteste ist.
Beachten Sie, dass zur Abfragezeit keine Vektorisierungseigenschaften festgelegt werden müssen. Die Abfrage liest die Vektorisierungseigenschaften gemäß der Vektorprofilfeldzuordnung im Index.
Überprüfen der Protokolle
Wenn Sie die Diagnoseprotokollierung für Ihren Suchdienst aktiviert haben, führen Sie eine Kusto-Abfrage aus, um die Abfrageausführung in Ihrem Vektorfeld zu bestätigen:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Bewährte Methoden
Wenn Sie eine Azure OpenAI-Vektorisierung einrichten, sollten Sie die gleichen bewährten Methoden berücksichtigen, die wir für die Azure OpenAI-Einbettungskompetenz empfehlen.