Share via


Vektorizáló konfigurálása keresési indexben

Fontos

Ez a funkció nyilvános előzetes verzióban érhető el a kiegészítő használati feltételek alatt. A 2023-10-01-preview REST API támogatja ezt a funkciót.

Az Azure AI Searchben a vektorizáló olyan szoftver, amely vektorizálást végez, például egy üzembe helyezett beágyazási modellt az Azure OpenAI-ban, amely a szövegeket vektorokká alakítja a lekérdezés végrehajtása során.

Ez egy keresési indexben van definiálva, a kereshető vektormezőkre vonatkozik, és a lekérdezési időben használják a szöveges lekérdezési bemenetek beágyazásának létrehozásához. Ha ehelyett az indexelési folyamat részeként kell vektorizálnia a szöveget, tekintse meg az Integrált vektorizálás (előzetes verzió) című témakört. Az indexelés során beépített vektorizáláshoz konfigurálhat egy olyan indexelőt és képességkészletet, amely meghív egy Azure OpenAI-beágyazási modellt a nyers szöveges tartalomhoz.

Ha vektorizálót szeretne hozzáadni az index kereséséhez, használhatja az indextervezőt az Azure Portalon, vagy meghívhatja az Index 2023-10-01-es előzetes verziójú REST API-t, vagy használhatja a szolgáltatás biztosításához frissített Azure béta SDK-csomagokat.

Előfeltételek

  • Az Azure AI Search kereshető vektormezőkkel rendelkező indexe.

  • Üzembe helyezett beágyazási modell, például text-embedding-ada-002 az Azure OpenAI-ban. Lekérdezések vektorizálására szolgál. Ennek meg kell egyeznie az indexbe ágyazott beágyazások létrehozásához használt modellel.

  • A beágyazási modell használatára vonatkozó engedélyek. Ha Azure OpenAI-t használ, a hívónak Cognitive Services OpenAI felhasználói engedélyekkel kell rendelkeznie. Vagy megadhat egy API-kulcsot is.

  • Visual Studio Code REST-ügyféllela lekérdezés elküldéséhez és a válasz elfogadásához.

Javasoljuk, hogy engedélyezze a diagnosztikai naplózást a keresési szolgáltatásban a vektoros lekérdezés végrehajtásának megerősítéséhez.

Vektorizáló kipróbálása mintaadatokkal

Az Adatok importálása és vektorizálása varázsló beolvassa a fájlokat az Azure Blob Storage-ból, létrehoz egy indexet adattömbökkel és vektorizált mezőkkel, és hozzáad egy vektorizálót. A varázsló által létrehozott vektorizáló a blobtartalom indexeléséhez használt beágyazási modellre van beállítva.

  1. Mintaadatfájlok feltöltése egy Azure Storage-tárolóba. A NASA földi könyvéből származó kis szöveges fájlokat használtunk, hogy teszteljük ezeket az utasításokat egy ingyenes keresőszolgáltatásban.

  2. Futtassa az Adatok importálása és vektorizálása varázslót, és válassza ki az adatforrás blobtárolót.

    Képernyőkép az adatoldalhoz való csatlakozásról.

  3. Válassza ki a text-embedding-ada-002 meglévő üzembe helyezését. Ez a modell beágyazásokat hoz létre az indexelés során, és a lekérdezések során használt vektorizáló konfigurálására is használható.

    Képernyőkép az adatok vektorizálásáról és bővítéséről.

  4. Miután a varázsló befejeződött, és az összes indexelő feldolgozása befejeződött, egy kereshető vektormezővel rendelkező indexnek kell lennie. A mező JSON-definíciója így néz ki:

     {
         "name": "vector",
         "type": "Collection(Edm.Single)",
         "searchable": true,
         "retrievable": true,
         "dimensions": 1536,
         "vectorSearchProfile": "vector-nasa-ebook-text-profile"
     }
    
  5. Az alábbi példához hasonló vektorprofillal és vektorizálóval is rendelkeznie kell:

    "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",
           "apiKey": "0000000000000000000000000000000000000",
           "authIdentity": null
         },
         "customWebApiParameters": null
       }
     ]
    
  6. Ugorjon előre, hogy tesztelje a vektorosítót a szöveg-vektor konverzióhoz a lekérdezés végrehajtása során.

Vektorizáló és vektorprofil definiálása

Ez a szakasz az indexséma módosításait ismerteti a vektorizáló manuális definiálásához.

  1. Az Index létrehozása vagy frissítése (előzetes verzió) használatával felveheti vectorizers a keresési indexet.

  2. Adja hozzá a következő JSON-t az indexdefinícióhoz. A vektorizálók szakasz kapcsolati információkat biztosít egy üzembe helyezett beágyazási modellhez. Ez a lépés két vektorizáló példát mutat be, amelyekkel összehasonlíthat egy Azure OpenAI-beágyazási modellt és egy egyéni webes API-t egymás mellett.

      "vectorizers": [
        {
          "name": "my_azure_open_ai_vectorizer",
          "kind": "azureOpenAI",
          "azureOpenAIParameters": {
            "resourceUri": "https://url.openai.azure.com",
            "deploymentId": "text-embedding-ada-002",
            "apiKey": "mytopsecretkey"
          }
        },
        {
          "name": "my_custom_vectorizer",
          "kind": "customWebApi",
          "customVectorizerParameters": {
            "uri": "https://my-endpoint",
            "authResourceId": " ",
            "authIdentity": " "
          }
        }
      ]
    
  3. Ugyanebben az indexben adjon hozzá egy vektorprofilokat tartalmazó szakaszt, amely meghatározza az egyik vektorizálót. A vektorprofilokhoz a navigációs struktúrák létrehozásához használt vektorkeresési algoritmus is szükséges.

    "profiles": [ 
        { 
            "name": "my_vector_profile", 
            "algorithm": "my_hnsw_algorithm", 
            "vectorizer":"my_azure_open_ai_vectorizer" 
        }
    ]
    
  4. Vektorprofil hozzárendelése vektormezőhöz. Az alábbi példa egy mezőgyűjteményt mutat be a szükséges kulcsmezővel, egy címsztringmezővel és két vektormezővel, vektorprofil-hozzárendeléssel.

    "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
            }
    ]
    

Vektorizáló tesztelése

Lekérdezések vektorosítón keresztüli küldéséhez használjon keresőügyfélt. Ez a példa egy REST-ügyféllel és egy mintaindexpel rendelkező Visual Studio Code-ot feltételez.

  1. A Visual Studio Code-ban adjon meg egy keresési végpontot és egy keresési lekérdezési API-kulcsot:

     @baseUrl: 
     @queryApiKey: 00000000000000000000000
    
  2. Beillesztés vektoros lekérdezési kérelembe. Mindenképpen használjon előzetes REST API-verziót.

     ### Run a query
     POST {{baseUrl}}/indexes/vector-nasa-ebook-txt/docs/search?api-version=2023-10-01-preview  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
                 }
             ]
         }
    

    A lekérdezés legfontosabb pontjai a következők:

    • "kind": "text" azt jelzi a keresőmotornak, hogy a bemenet egy szöveges sztring, és a keresőmezőhöz társított vektorizáló használata.

    • "text": "what cloud formations exists in the troposphere" a vektorizálni kívánt szöveges sztring.

    • "fields": "vector" az átkérdezendő mező neve. Ha a varázsló által létrehozott mintaindexet használja, a létrehozott vektormező neve vector.

  3. Küldje el a kérést. Három k eredményt kell kapnia, ahol az első eredmény a legrelevánsabb.

Figyelje meg, hogy a lekérdezési időpontban nincs konfigurálható vektorizáló tulajdonság. A lekérdezés beolvassa a vektorizáló tulajdonságait az index vektorprofil-mező-hozzárendelésének megfelelően.

Naplók ellenőrzése

Ha engedélyezte a keresési szolgáltatás diagnosztikai naplózását, futtasson egy Kusto-lekérdezést a lekérdezés végrehajtásának megerősítéséhez a vektormezőben:

OperationEvent
| where TIMESTAMP > ago(30m)
| where Name == "Query.Search" and AdditionalInfo["QueryMetadata"]["Vectors"] has "TextLength"

Ajánlott eljárások

Ha Azure OpenAI-vektorizálót állít be, vegye figyelembe ugyanazokat az ajánlott eljárásokat , amelyeket az Azure OpenAI beágyazási képességéhez ajánlott.

Lásd még