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

Megjegyzés:

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az Azure AI Keresésben a vektorizáló vektorokká alakítja a szöveget vagy képeket a lekérdezés végrehajtása során, így egyszerű szöveges lekérdezéseket küldhet a vektormezőkre anélkül, hogy saját maga is beágyazást végez.

A vektorizáló egy keresési indexben van definiálva, és vektorprofilon keresztül van vektormezőkhöz rendelve. Lekérdezéskor a vektorizáló beágyazási modellt hív meg, hogy vektort hozzon létre a lekérdezés bemenetéből. További információ: Integrált vektorizáció használata lekérdezésekben.

Vektorizáló indexhez való hozzáadásához használja az importálási varázslót vagy az indextervezőt az Azure Portalon, az Indexek – Létrehozás vagy frissítés (REST API) vagy egy Azure SDK-csomagban. Ez a cikk REST-et használ az ábrához.

Jótanács

A vektorizáló kezeli a lekérdezési idő vektorizálását. Ha az indexelés során is vektorizálni szeretné a tartalmat, állítson be egy indexelőt és egy képességkészletet beágyazási képességekkel. További információ: Integrált vektorizáció használata indexelés közben.

Előfeltételek

Támogatott beágyazási modellek

Az Azure AI Keresés többféle vektorizálót kínál, amelyek mindegyike megfelelő szakértelemmel van párosítva. A képesség beágyazásokat hoz létre az indexelés során, míg a vektorizáló beágyazásokat hoz létre a lekérdezési időpontban. Mindkettőhöz ugyanazt a beágyazási modellt kell használnia, ezért válasszon egy vektorizáló–képességpárt, amely ugyanarra a modelltelepítésre mutat.

Az alábbi táblázat felsorolja a vektorizálókat, valamint azok támogatott modelljeit és a hozzájuk tartozó készségeket.

Vektorizáló Támogatott modellek Társított képesség
Azure OpenAI text-embedding-ada-002
szöveg-beágyazás-3-nagy
szöveg-beágyazás-3-kicsi
Azure OpenAI-beágyazás
Microsoft Foundry-modellkatalógus (előzetes verzió) Cohere-embed-v3-english
Cohere-embed-v3-multilingual
Cohere-embed-v4 1
AML
Azure Vision (előzetes verzió) Multimodális beágyazások 4.0 API Azure Vision multimodális beágyazások (előzetes verzió)
Egyéni webes API Bármilyen beágyazási modell (külső üzemeltetésű) Egyéni webes API

1 Csak az embed-v-4-0 vagy a Microsoft Foundry modellkatalógus-vektorizálóján keresztül adhat meg programozott módon, az Azure Portalon keresztül nem. A portálon azonban később kezelheti a képességkészletet vagy a vektorizálót.

Megjegyzés:

A vektorizálók mindaddig általánosan elérhetők, amíg általánosan elérhető képesség–vektorizáló párot használ. A legfrissebb rendelkezésre állási információkért tekintse meg az előző táblázatban szereplő összes vektorizáló és képesség dokumentációját.

Vektorizáló definiálása varázslóval

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

Mintaindex létrehozása vektorizálóval a varázslóval:

  1. Fájlok feltöltése egy tárolóba az Azure Storage-ban. Kis szöveges fájlokat használtunk a NASA Earth at Night e-bookjából, hogy teszteljük ezeket az utasításokat egy ingyenes keresőszolgáltatásban.

  2. Futtassa az Adatok importálása varázslót. Válassza ki az adatforrás blobtárolót.

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

  3. Válasszon vektorizáló típust és adott esetben modelltelepítést. Ez a példa az Azure OpenAI-t és egy text-embedding-ada-002 üzembe helyezést használ.

    Képernyőkép a vektorizáló beágyazási modell konfigurálásához használt vektorizálási és adatnövelési oldalról.

  4. Miután a varázsló befejezte a folyamatot, és az összes indexelő feldolgozása lezárult, rendelkeznie kell egy olyan index-szel, amelynek kereshető vektormezője van. A mező JSON-definíciója így néz ki:

     {
       "name": "text_vector",
       "type": "Collection(Edm.Single)",
       "searchable": true,
       "filterable": false,
       "retrievable": true,
       "stored": true,
       "sortable": false,
       "facetable": false,
       "key": false,
       "dimensions": 1536,
       "vectorSearchProfile": "vector-nasa-ebook-text-profile",
       "synonymMaps": []
     }
    

    Vektorprofillal, vektorkeresési algoritmussal és vektorizálóval is rendelkeznie kell. A JSON-definíciók a következőképpen néznek ki:

     "algorithms": [
       {
         "name": "vector-nasa-ebook-text-algorithm",
         "kind": "hnsw",
         "hnswParameters": {
           "metric": "cosine",
           "m": 4,
           "efConstruction": 400,
           "efSearch": 500
         }
       }
     ],
    "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-azure-openai-resource.openai.azure.com",
           "deploymentId": "text-embedding-ada-002",
           "modelName": "text-embedding-ada-002",
         },
       }
     ]
    

A vektorizáló programozott módon történő definiálása

Ha nem használta a Portál varázslót, vagy vektorosítót szeretne hozzáadni egy meglévő indexhez, programozott módon definiálhat vektorizálót és vektorprofilt. A vektorprofilok egy vektoros mezőt egy vagy több vektormezőhöz kapcsolnak, és meghatározzák a navigációs struktúrákhoz használt vektorkeresési algoritmust.

Vektorizáló és vektorprofil definiálása egy meglévő indexben:

  1. Az indexdefiníció lekérése az Indexek – Get (REST API) használatával. Cserélje le a szolgáltatásnevet, az indexnevet és a hozzáférési jogkivonatot a saját értékeire.

    ### Get index definition
    GET https://my-search-service.search.windows.net/indexes/my-index?api-version=2026-04-01 HTTP/1.1
    Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-admin-api-key>
    

    Warning

    A lekért egyéni Web API-vektorizáló minden httpHeaders értékhez tartalmaz <redacted>-t. Ha ugyanazt a vektorizálót frissíti anélkül, hogy módosítaná a name-ját, kind-ját vagy uri-ját, a <redacted> újra elküldheti a meglévő fejlécnevek egyeztetéséhez. Ha módosítja a(z) uri elemet, minden httpHeaders bejegyzéshez adja meg a tényleges értékeket. További frissítési szabályokért lásd: Custom Web API vectorizer.

  2. Indexek – Létrehozás vagy frissítés (REST API) használata az indexdefiníció frissítéséhez. Illessze be a teljes indexdefiníciót a kérelem törzsébe.

    ### Update index definition
    PUT https://my-search-service.search.windows.net/indexes/my-index?api-version=2026-04-01 HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-admin-api-key>
    
    // Paste your index definition here
    
  3. Adjon hozzá egy vectorizers szakaszt az vectorSearch objektumhoz. Ez a szakasz egy üzembe helyezett beágyazási modell kapcsolati adatait adja meg. Az alábbi példa az Azure OpenAI-t és a Custom Web API-t is tartalmazza összehasonlítás céljából.

    "vectorSearch": {
        "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": "<your-azure-openai-api-key>"
            }
          },
          {
            "name": "my_custom_vectorizer",
            "kind": "customWebApi",
            "customWebApiParameters": {
              "uri": "https://contoso.embeddings.com",
              "httpMethod": "POST",
              "authResourceId": null,
              "authIdentity": null
            }
          }
        ]
      }
    
  4. algorithms rész hozzáadása a vectorSearch-hez. Ez a szakasz a navigációs struktúrákhoz használt vektorkeresési algoritmust határozza meg.

    "algorithms": [
      {
        "name": "my_hnsw_algorithm",
        "kind": "hnsw",
        "hnswParameters": {
          "m": 4,
          "efConstruction": 400,
          "efSearch": 500,
          "metric": "cosine"
        }
      }
    ]
    
  5. profiles Szakasz hozzáadása a fájlhoz vectorSearch Ez a szakasz az előző lépésekben definiált vektoros és vektorkeresési algoritmusra hivatkozik.

    "profiles": [ 
      { 
        "name": "my_vector_profile", 
        "algorithm": "my_hnsw_algorithm", 
        "vectorizer": "my_azure_open_ai_vectorizer" 
      }
    ]
    
  6. A tömbben fields rendelje hozzá a vektorprofilt egy vagy több vektormezőhöz a vectorSearchProfile tulajdonság megadásával.

    "fields": [
        ... // Trimmed for brevity
        {
          "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": 1536,
          "vectorSearchProfile": "my_vector_profile",
          "searchable": true,
          "retrievable": true
        }
    ]
    
  7. Küldje el a PUT kérést az indexdefiníció frissítéséhez. Ha a kérés sikeres, meg kell kapnia egy 204 No Content választ.

  8. A vektorizáló és a vektorprofil ellenőrzéséhez futtassa újra a GET kérést az első lépésből. Erősítse meg, hogy:

    • A vectorSearch.vectorizers tömb tartalmazza a vektorizáló definícióját a megfelelő kind és a kapcsolati paraméterekkel.

    • A vectorSearch.profiles tömb tartalmaz egy profilt, amely név szerint hivatkozik a vektorizálóra.

    • A vectorSearch.algorithms tömb tartalmazza a profil által hivatkozott vektorkeresési algoritmust.

    • A vectorSearchProfile vektormezők tulajdonsága a fields tömbben megegyezik a profil nevével.

Vektorizáló tesztelése

A vektorosító működésének ellenőrzéséhez küldjön egy vektoros lekérdezést , amely vektor helyett szöveges sztringet ad át. Az alábbi példa egy varázslóval a Vektorizáló definiálása mintaindexet célozza meg, de a mezőnevek és a lekérdezési paraméterek módosításával tesztelheti a saját indexét.

A kérés elküldéséhez használja a Dokumentumok – Keresési bejegyzést (REST API). Cserélje le a szolgáltatásnevet, az indexnevet és a hozzáférési jogkivonatot a saját értékeire.

### Test a vectorizer with a vector query
POST https://my-search-service.search.windows.net/indexes/vector-nasa-ebook-txt/docs/search?api-version=2026-04-01 HTTP/1.1
Content-Type: application/json
Authorization: Bearer <your-access-token> // For API keys, replace this line with api-key: <your-query-api-key>

{
    "count": true,
    "select": "title, chunk",
    "vectorQueries": [
        {
            "kind": "text",
            "text": "what cloud formations exist in the troposphere",
            "fields": "text_vector",
            "k": 3,
            "exhaustive": true
        }
    ]
}

Főbb pontok:

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

  • "text" a vektorizálni kívánt egyszerű nyelvi sztring.

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

  • "exhaustive": true megkerüli a HNSW gráfot, és brutális erővel történő keresést hajt végre az összes vektoron. Ez a beállítás hasznos a pontosság teszteléséhez, de lassabb, mint az alapértelmezett hozzávetőleges keresés. Távolítsa el ezt a paramétert az éles lekérdezésekben a jobb teljesítmény érdekében.

  • A lekérdezés nem állít be vektorizáló tulajdonságokat. A keresőmotor automatikusan beolvassa őket a mezőhöz rendelt vektorprofilból.

Ha a vektorizáló megfelelően van konfigurálva, a válasz hasonlóság szerint rangsorolt egyező dokumentumokat ad vissza. Három eredményt kell kapnia (k: 3), amelyek közül az első a legrelevánsabb.

{
    "@odata.count": 3,
    "value": [
        {
            "@search.score": 0.66195244,
            "chunk": "Cloud Shadow\tGermany\nIn November 2012, the Earth Observing...",
            "title": "page-25.txt"
        },
        ... // Trimmed for brevity
    ]
}

Hibaelhárítás

Ha a vektorizáló nem a várt módon működik, kezdje a gyakori hibatáblával, majd tekintse meg részletesebben a diagnosztikai naplókat.

Gyakori hibák

Az alábbi táblázat a vektorizáló gyakori hibáit és azok megoldásának módját sorolja fel.

Error Oka Rezolúció
Hitelesítési hiba (401/403) Érvénytelen API-kulcs vagy hiányzó RBAC-szerepkör-hozzárendelés a beágyazási modellhez. Ellenőrizze az API-kulcsot, vagy győződjön meg arról, hogy a keresési szolgáltatás identitása rendelkezik a Cognitive Services OpenAI User szerepkörével az Azure OpenAI-erőforrásban.
Dimenzióeltérés A vektorizáló modell más dimenziószámú beágyazásokat hoz létre, mint amennyit a vektormező elvár. Győződjön meg arról, hogy a dimensions vektormező tulajdonsága megegyezik a beágyazási modell kimeneti dimenzióival (például 1536).text-embedding-ada-002
Sebességkorlátozás (429) A beágyazási modell szolgáltatója korlátozza a kéréseket. ** Tekintse át az Azure OpenAI kvótakorlátjait, majd fontolja meg a percenkénti tokenek (TPM) mennyiségének növelését, vagy csökkentse a feldolgozási köteg méretét.
A vektorizáló nem található A vektorprofil egy olyan vektoros névre hivatkozik, amely nem létezik az indexben. Győződjön meg arról, hogy a vectorizer vektorprofil tulajdonsága megegyezik a name tömb egyik vektorizálójának tulajdonságával vectorizers .
Nincs eredmény A szöveg–vektor átalakítás sikeres volt, de a lekérdezés nem ad vissza egyezést. Ellenőrizze, hogy a fields vektoros lekérdezés paramétere megegyezik-e egy kereshető vektormező nevével. Növelje a k további eredmények visszaadásához.

Naplók ellenőrzése

Ha engedélyezte a keresési szolgáltatás diagnosztikai naplózását, futtassa az alábbi Kusto-lekérdezést a lekérdezés végrehajtásának megerősítéséhez a vektormezőn.

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

Ajánlott eljárások

  • Használjon felügyelt identitást API-kulcsok helyett az éles környezetben. A felügyelt identitások biztonságosabbak, és elkerülik a kulcsforgatás többletterhelését. További információ: Keresési szolgáltatás konfigurálása felügyelt identitással való csatlakozáshoz.

  • Helyezze üzembe a beágyazási modellt ugyanabban a régióban, mint a keresési szolgáltatás. A közös elhelyezés csökkenti a késést, és javítja a szolgáltatások közötti adatátvitel sebességét. A vektorizálók minden olyan régióban elérhetők, ahol az Azure AI Keresés elérhető, de a modell rendelkezésre állása szolgáltatónként eltérő.

  • Az indexeléshez és a lekérdezésekhez használjon ugyanazon beágyazási modell különálló üzembe helyezését. A dedikált üzembe helyezések lehetővé teszik a TPM-kvóta független kiosztását az egyes számítási feladatokhoz, és megkönnyítik a forgalmi források azonosítását.

  • Az Azure OpenAI TPM-kvóta figyelése. Ha eléri a TPM-korlátot, tekintse át a kvótakorlátokat , és fontolja meg a magasabb korlát kérését egy támogatási eseten keresztül.

  • Tekintse át az Azure OpenAI beágyazási készségeinek ajánlott eljárásait . Ugyanez az útmutató az Azure OpenAI-vektorizálóra is vonatkozik.