Konfigurace vektorizátoru v indexu vyhledávání
V Azure AI Search je vektorizátor , který provádí vektorizaci pomocí nasazeného modelu vkládání ve službě Azure OpenAI nebo Azure AI Vision. Během provádění dotazu převede 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 o integrované vektorizaci. Pro předdefinovanou vektorizaci během indexování můžete nakonfigurovat indexer a sadu dovedností, která volá vložený model pro nezpracovaný text nebo obsah obrázku.
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 katalogu modelů Azure AI Foundry 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í (viz další část).
Oprávnění k použití modelu vkládání V Azure OpenAI musí volající 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ů.
Podporované modely vkládání
Následující tabulka uvádí modely vkládání, které lze použít s vektorizátorem. Vzhledem k tomu, že pro indexování a dotazy musíte použít stejný model vkládání, vektorizátory se spárují s dovednostmi, které během indexování generují vkládání. V tabulce je uvedena dovednost přidružená ke konkrétnímu vektorizátoru.
Druh vektorizátoru | Názvy modelů | Zprostředkovatel modelů | Přidružená dovednost |
---|---|---|---|
azureOpenAI |
text-embedding-ada-002, text-embedding-3 | Azure OpenAI | Dovednost AzureOpenAIEmbedding |
aml |
Facebook-DinoV2-Image-Embeddings, Cohere-embed-v3 | Katalog modelů Azure AI Foundry | Dovednost AML |
aiServicesVision |
Multimodální vkládání 4.0 API | Azure AI Vision (prostřednictvím účtu Azure AI s více službami) | Dovednosti s vícemodálními vkládáními ve službě Azure AI Vision |
customWebApi |
Libovolný model vkládání | Hostované externě | Vlastní dovednosti webového rozhraní API |
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.