Sdílet prostřednictvím


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

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.

  1. 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.

  2. Spusťte Průvodce importem a vektorizací dat a vyberte kontejner objektů blob pro zdroj dat.

    Snímek obrazovky s připojením k datové stránce

  3. 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ů.

    Snímek obrazovky vektorizace a obohacení datové stránky

  4. 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"
     }
    
  5. 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
       }
     ]
    
  6. 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.

  1. K přidání vectorizers do indexu vyhledávání použijte funkci Vytvořit nebo Aktualizovat index.

  2. 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": " "
          }
        }
      ]
    
  3. 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" 
        }
    ]
    
  4. 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.

  1. V editoru Visual Studio Code zadejte koncový bod vyhledávání a klíč rozhraní API vyhledávacího dotazu:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. 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ázev vector.

  3. 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.

Viz také