Konfigurace vektorizátoru v indexu vyhledávání
V Azure AI Search je software, který provádí vektorizaci , jako je nasazený vložený model v Azure OpenAI, který během provádění dotazu převádí text (nebo obrázky) na vektory.
Definuje se v indexu vyhledávání, vztahuje se na prohledávatelná vektorová pole a používá se v době dotazu k vygenerování vkládání pro vstup textového nebo obrázkového dotazu. Pokud místo toho potřebujete vektorizovat obsah v rámci procesu indexování, přečtěte si informace o integrované vektorizaci (Preview). Pro předdefinovanou vektorizaci během indexování můžete nakonfigurovat indexer a sadu dovedností, která volá vložený model pro nezpracovaný textový obsah.
Pokud chcete přidat vektorizátor do indexu vyhledávání, můžete použít návrháře indexu na webu Azure Portal nebo volat rozhraní REST API pro vytvoření nebo aktualizaci indexu nebo použít libovolný balíček sady Azure SDK, který tuto funkci poskytuje.
Vektorizátory jsou nyní obecně dostupné, pokud používáte obecně dostupný pár dovedností vektorizátoru. Vektorizátor AzureOpenAIEmbedding a dovednosti AzureOpenAIEmbedding jsou obecně dostupné. Vlastní vektorizátor webového rozhraní API je také obecně dostupný.
Vektorizátor Azure AI Vision, vektorizátor modelu Azure AI Studio a jejich ekvivalentní dovednosti jsou stále ve verzi Preview. Vaše sada dovedností musí zadat rozhraní REST API verze 2024-05-05-01-preview, aby bylo možné používat dovednosti a vektorizátory verze Preview.
Požadavky
Index s prohledávatelnými vektorovými poli ve službě Azure AI Search
Nasazený model vkládání, například text-embedding-ada-002, text-embedding-3-small nebo text-embedding-3-large v Azure OpenAI. Používá se k vektorizaci dotazu. Musí být identický s modelem vkládání použitým pro vektorové pole v indexu. Můžete také použít modely nasazené z katalogu modelů Azure AI Studio nebo modelu Azure AI Vision.
Oprávnění k použití modelu vkládání Pokud používáte Azure OpenAI, volající musí mít uživatelská oprávnění Cognitive Services OpenAI . Nebo můžete zadat klíč rozhraní API.
Visual Studio Code s klientem REST pro odeslání dotazu a přijetí odpovědi
Doporučujeme povolit protokolování diagnostiky ve vyhledávací službě, abyste potvrdili provádění vektorových dotazů.
Vyzkoušení vektorizátoru s ukázkovými daty
Průvodce importem a vektorizací dat čte soubory ze služby Azure Blob Storage, vytvoří index s blokovanými a vektorizovanými poli a přidá vektorizátor. Vektorizátor vytvořený průvodcem je záměrně nastavený na stejný model vkládání, který se používá k indexování obsahu objektu blob.
Nahrajte ukázkové datové soubory do kontejneru ve službě Azure Storage. K otestování těchto pokynů na bezplatné vyhledávací službě jsme použili několik malých textových souborů z knihy NASA.
Spusťte Průvodce importem a vektorizací dat a vyberte kontejner objektů blob pro zdroj dat.
Zvolte existující nasazení vkládání textu ada-002. Tento model generuje vkládání během indexování a slouží také ke konfiguraci vektorizátoru používaného během dotazů.
Po dokončení průvodce a dokončení veškerého zpracování indexeru byste měli mít index s prohledávatelným vektorovým polem. Definice JSON pole vypadá takto:
{ "name": "vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-nasa-ebook-text-profile" }
Měli byste mít také profil vektoru a vektorizátor, podobně jako v následujícím příkladu:
"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 } ]
Při provádění dotazu přeskočte k otestování vektorizátoru pro převod textu na vektor.
Definování vektorizátoru a profilu vektoru
Tato část vysvětluje úpravy schématu indexu pro ruční definování vektorizátoru.
K přidání
vectorizers
do indexu vyhledávání použijte funkci Vytvořit nebo Aktualizovat index.Do definice indexu přidejte následující KÓD JSON. Oddíl vektorizátorů poskytuje informace o připojení k nasazeného modelu vkládání. Tento krok ukazuje dva příklady vektorizátoru, abyste mohli porovnat model vkládání Azure OpenAI a vlastní webové rozhraní API vedle sebe.
"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": " " } } ]
Do stejného indexu přidejte oddíl vektorových profilů, který určuje jeden z vektorizátorů. Vektorové profily také vyžadují algoritmus vektorového vyhledávání, který se používá k vytváření navigačních struktur.
"profiles": [ { "name": "my_vector_profile", "algorithm": "my_hnsw_algorithm", "vectorizer":"my_azure_open_ai_vectorizer" } ]
Přiřaďte vektorový profil k vektorovým polím. Následující příklad ukazuje kolekci polí s povinným polem klíče, polem řetězce nadpisu a dvěma vektorovými poli s přiřazením vektorového profilu.
"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 } ]
Testování vektorizátoru
Pomocí vyhledávacího klienta odešlete dotaz prostřednictvím vektorizátoru. Tento příklad předpokládá visual Studio Code s klientem REST a ukázkovým indexem.
V editoru Visual Studio Code zadejte koncový bod vyhledávání a klíč rozhraní API vyhledávacího dotazu:
@baseUrl: @queryApiKey: 00000000000000000000000
Vložte požadavek vektorového dotazu.
### 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 } ] }
Mezi klíčové body dotazu patří:
"kind": "text"
říká vyhledávacímu stroji, že vstup je textový řetězec a použít vektorizátor přidružený k vyhledávacímu poli."text": "what cloud formations exists in the troposphere"
je textový řetězec, který se má vektorizovat."fields": "vector"
je název pole, na které se má dotazovat. Pokud použijete ukázkový index vytvořený průvodcem, vygenerované vektorové pole má názevvector
.
Odešlete požadavek. Měli byste získat tři
k
výsledky, kde je první výsledek nejrelevavantnější.
Všimněte si, že v době dotazu nejsou nastaveny žádné vlastnosti vektorizátoru. Dotaz přečte vlastnosti vektorizátoru podle přiřazení pole profilu vektoru v indexu.
Kontrola protokolů
Pokud jste pro vyhledávací službu povolili protokolování diagnostiky, spusťte dotaz Kusto, abyste potvrdili provádění dotazu ve vašem vektorovém poli:
OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"
Osvědčené postupy
Pokud nastavujete vektorizátor Azure OpenAI, zvažte stejné osvědčené postupy , které doporučujeme pro dovednosti vkládání Azure OpenAI.