Megosztás a következőn keresztül:


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

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 (vagy képeket) vektorokká alakítja a lekérdezés végrehajtása során.

Egy keresési indexben van definiálva, a kereshető vektormezőkre vonatkozik, és a lekérdezési időben használják egy szöveg- vagy képbemenet beágyazásához. Ha ehelyett az indexelési folyamat részeként kell vektorizálnia a tartalmat, 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 indexelőt és egy képességkészletet, amely beágyazási modellt hív meg 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, meghívhatja az Index létrehozása vagy frissítése REST API-t, vagy bármely frissített Azure SDK-csomag használatával biztosíthatja ezt a funkciót.

A vektorizálók mostantól általánosan elérhetők mindaddig, amíg általánosan elérhető képességvektor-párokat használ. Az AzureOpenAIEmbedding vectorizer és az AzureOpenAIEmbedding skill általánosan elérhető. Általánosan elérhető az egyéni webes API-vektorizáló is.

Az Azure AI Vision vektorizáló, az Azure AI Studio modellkatalógus-vektorizálója és az azzal egyenértékű képességeik továbbra is előzetes verzióban érhetők el. A képességkészletnek meg kell adnia a 2024-05-01-preview REST API-t az előzetes verziójú készségek és vektorizálók használatához.

Előfeltételek

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",
           "modelName": "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. Index létrehozása vagy frissítése keresési indexhez való hozzáadásához vectorizers .

  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",
            "modelName": "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.

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

    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