Konfigurowanie wektoryzatora w indeksie wyszukiwania
W usłudze Azure AI Search wektoryzator to oprogramowanie, które wykonuje wektoryzację, takie jak wdrożony model osadzania w usłudze Azure OpenAI, który konwertuje tekst (lub obrazy) na wektory podczas wykonywania zapytania.
Jest on zdefiniowany w indeksie wyszukiwania, ma zastosowanie do pól wektorów z możliwością wyszukiwania i jest używany w czasie zapytania do generowania osadzania dla danych wejściowych zapytania tekstowego lub obrazu. Jeśli zamiast tego musisz wektoryzować zawartość w ramach procesu indeksowania, zapoznaj się z tematem Zintegrowane wektoryzacja (wersja zapoznawcza). W przypadku wbudowanej wektoryzacji podczas indeksowania można skonfigurować indeksator i zestaw umiejętności, który wywołuje model osadzania dla nieprzetworzonej zawartości tekstowej.
Aby dodać wektoryzator do indeksu wyszukiwania, możesz użyć projektanta indeksu w witrynie Azure Portal lub wywołać interfejs API REST tworzenia lub aktualizowania indeksu albo użyć dowolnego pakietu zestawu Azure SDK zaktualizowanego w celu udostępnienia tej funkcji.
Wektoryzatory są teraz ogólnie dostępne, o ile używasz ogólnie dostępnej pary wektoryzatora umiejętności. AzureOpenAIEmbedding vectorizer i AzureOpenAIEmbedding umiejętności są ogólnie dostępne. Niestandardowy wektory interfejsu API sieci Web jest również ogólnie dostępny.
Wektoryzator usługi Azure AI Vision, wektoryzator katalogu modeli usługi Azure AI Studio i ich równoważne umiejętności są nadal w wersji zapoznawczej. Zestaw umiejętności musi określać interfejs API REST 2024-05-01-preview, aby korzystać z umiejętności i wektoryzatorów w wersji zapoznawczej.
Wymagania wstępne
Indeks z polami wektorów z możliwością wyszukiwania w usłudze Azure AI Search.
Wdrożony model osadzania, taki jak osadzanie tekstu-ada-002, osadzanie tekstu-3-small lub osadzanie tekstu-3-large-3-large w usłudze Azure OpenAI. Służy do wektoryzacji zapytania. Musi być identyczny z modelem osadzania używanym dla pola wektorowego w indeksie. Można również używać modeli wdrożonych z katalogu modeli usługi Azure AI Studio lub modelu usługi Azure AI Vision.
Uprawnienia do korzystania z modelu osadzania. Jeśli używasz usługi Azure OpenAI, obiekt wywołujący musi mieć uprawnienia użytkownika openAI usług Cognitive Services. Możesz też podać klucz interfejsu API.
Program Visual Studio Code z klientem REST w celu wysłania zapytania i zaakceptowania odpowiedzi.
Zalecamy włączenie rejestrowania diagnostycznego w usłudze wyszukiwania w celu potwierdzenia wykonania zapytania wektorowego.
Wypróbuj wektoryzator z przykładowymi danymi
Kreator importowania i wektoryzacji danych odczytuje pliki z usługi Azure Blob Storage, tworzy indeks z fragmentowanymi i wektoryzowanymi polami i dodaje wektoryzator. Zgodnie z projektem wektoryzator utworzony przez kreatora jest ustawiony na ten sam model osadzania używany do indeksowania zawartości obiektu blob.
Przekazywanie przykładowych plików danych do kontenera w usłudze Azure Storage. Użyliśmy kilku małych plików tekstowych z książki ziemskiej NASA, aby przetestować te instrukcje w bezpłatnej usłudze wyszukiwania.
Uruchom kreatora Importowanie i wektoryzowanie danych, wybierając kontener obiektów blob dla źródła danych.
Wybierz istniejące wdrożenie osadzania tekstu-ada-002. Ten model generuje osadzanie podczas indeksowania i służy również do konfigurowania wektoryzatora używanego podczas wykonywania zapytań.
Po zakończeniu działania kreatora i zakończeniu całego przetwarzania indeksatora należy mieć indeks z polem wektora z możliwością wyszukiwania. Definicja JSON pola wygląda następująco:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Należy również mieć profil wektorowy i wektoryzator, podobnie jak w poniższym przykładzie:
"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 } ]
Przejdź do przodu, aby przetestować wektoryzator konwersji tekstu na wektor podczas wykonywania zapytania.
Definiowanie wektoryzatora i profilu wektora
W tej sekcji opisano modyfikacje schematu indeksu na potrzeby ręcznego definiowania wektoryzatora.
Użyj polecenia Utwórz lub Zaktualizuj indeks , aby dodać
vectorizers
go do indeksu wyszukiwania.Dodaj następujący kod JSON do definicji indeksu. Sekcja wektoryzatorów zawiera informacje o połączeniu z wdrożonym modelem osadzania. W tym kroku przedstawiono dwa przykłady wektoryzatora, dzięki czemu można porównać model osadzania usługi Azure OpenAI i niestandardowy internetowy interfejs API obok siebie.
"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": " " } } ]
W tym samym indeksie dodaj sekcję profilów wektorów, która określa jeden z wektoryzatorów. Profile wektorów wymagają również algorytmu wyszukiwania wektorowego używanego do tworzenia struktur nawigacji.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Przypisz profil wektora do pola wektorowego. Poniższy przykład przedstawia kolekcję pól z wymaganym polem klucza, polem ciągu tytułu i dwoma polami wektorów z przypisaniem profilu wektorowego.
"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 } ]
Testowanie wektoryzatora
Użyj klienta wyszukiwania, aby wysłać zapytanie za pośrednictwem wektoryzatora. W tym przykładzie założono, że program Visual Studio Code z klientem REST i przykładowym indeksem.
W programie Visual Studio Code podaj punkt końcowy wyszukiwania i klucz interfejsu API zapytania wyszukiwania:
@baseUrl: @queryApiKey: 00000000000000000000000
Wklej żądanie zapytania wektorowego.
### 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 } ] }
Kluczowe kwestie dotyczące zapytania obejmują:
"kind": "text"
informuje aparat wyszukiwania, że dane wejściowe są ciągiem tekstowym i aby użyć wektoryzatora skojarzonego z polem wyszukiwania."text": "what cloud formations exists in the troposphere"
to ciąg tekstowy do wektoryzacji."fields": "vector"
to nazwa pola do przesłaniania zapytania. Jeśli używasz przykładowego indeksu utworzonego przez kreatora, wygenerowane pole wektora ma nazwęvector
.
Wyślij żądanie. Powinny zostać wyświetlone trzy
k
wyniki, w których pierwszy wynik jest najbardziej odpowiedni.
Zwróć uwagę, że nie ma właściwości wektoryzatora do ustawienia w czasie zapytania. Zapytanie odczytuje właściwości wektoryzatora zgodnie z przypisaniem pola profilu wektorowego w indeksie.
Sprawdzanie dzienników
Jeśli włączono rejestrowanie diagnostyczne dla usługi wyszukiwania, uruchom zapytanie Kusto, aby potwierdzić wykonywanie zapytań w polu wektora:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Najlepsze rozwiązania
Jeśli konfigurujesz wektoryzator usługi Azure OpenAI, weź pod uwagę te same najlepsze rozwiązania , które zalecamy w przypadku umiejętności osadzania w usłudze Azure OpenAI.