Konfigurieren einer Vektorisierung in einem Suchindex
In der Azure KI-Suche ist ein Vektorisierer eine Software, die eine Vektorisierung durchführt, wie z. B. ein bereitgestelltes Einbettungsmodell in Azure OpenAI, das Text oder Bilder während der Abfrageausführung in Vektoren umwandelt.
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 (Vorschau). 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 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 Studio-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.
Bereitgestelltes Einbettungsmodell wie text-embedding-ada-002, text-embedding-3-small oder text-embedding-3-large in Azure OpenAI. Es wird verwendet, um eine Abfrage zu vektorisieren. Es muss mit dem für das Vektorfeld verwendete Einbettungsmodell in Ihrem Index identisch sein. Sie können auch Modelle verwenden, die aus dem Azure AI Studio-Modellkatalog oder einem Azure KI Vision-Modell bereitgestellt werden.
Berechtigungen für die Verwendung des Einbettungsmodells. Wenn Sie Azure OpenAI verwenden, 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.
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.