Keskeny adattípusok hozzárendelése vektormezőkhöz az Azure AI Keresésben

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.

A vektorméret csökkentésének egyszerű módja a beágyazások kisebb adatformátumban történő tárolása. A legtöbb beágyazási modell 32 bites lebegőpontos számokat ad ki. Ha azonban kvantálja a vektorokat, vagy olyan beágyazási modellt használ, amely natív módon támogatja a kvantálást, a kimenet lehet float16, int16 vagy int8, amelyek jelentősen kisebbek, mint az float32. Ezeket a kisebb vektorméreteket úgy tudja kezelni, ha egy keskeny adattípust rendel egy vektormezőhöz. A vektorindexben a szűk adattípusok kevesebb tárterületet használnak fel.

Az indexdefiníció mezőihez adattípusokat rendelhet. Használja az Azure Portalt, a Search Service REST API-kat vagy a szolgáltatást biztosító Azure SDK-csomagot.

Előfeltételek

  • Olyan beágyazási modell, amely kis adatformátumokat ad ki, például a text-embedding-3 vagy a Cohere V3 beágyazási modelleket.

Támogatott keskeny adattípusok

  1. Tekintse át a vektormezőkhöz használt adattípusokat az ajánlott használathoz:

    • Collection(Edm.Single): 32 bites lebegőpontos (alapértelmezett)
    • Collection(Edm.Half): 16 bites lebegőpontos (keskeny)
    • Collection(Edm.Int16): 16 bites aláírt egész szám (keskeny)
    • Collection(Edm.SByte): 8 bites aláírt egész szám (keskeny)
    • Collection(Edm.Byte): 8 bites aláíratlan egész szám (csak csomagolt bináris adattípusokkal engedélyezett)
  2. Ebből a listából állapítsa meg, hogy melyik adattípus érvényes a beágyazási modell kimenetére vagy az egyéni kvantáláson átesett vektorokra.

    Az alábbi táblázat több olyan beágyazási modellre mutató hivatkozásokat tartalmaz, amelyek szűk adattípust használhatnak további Collection(Edm.Half)kvantálás nélkül. A Collection(Edm.Half) segítségével a float32 típus float16 típusra leadható további munka nélkül.

    Beágyazási modell Natív kimenet Ilyen típus hozzárendelése az Azure AI Keresésben
    text-embedding-ada-002 Float32 Collection(Edm.Single) vagy Collection(Edm.Half)
    szövegbeágyazás-3-kicsi Float32 Collection(Edm.Single) vagy Collection(Edm.Half)
    szöveg-beágyazás-3-nagy Float32 Collection(Edm.Single) vagy Collection(Edm.Half)
    Cohere V3 beágyazási modellek int8 embedding_type paraméterrel Int8 Collection(Edm.SByte)

    Más keskeny adattípusokat is használhat, ha a modell kisebb adatformátumban bocsát ki beágyazásokat, vagy ha egyéni kvantálással konvertálja a vektorokat kisebb formátumra.

  3. Ismerje meg a szűk adattípusokkal kapcsolatos kompromisszumokat. Collection(Edm.Half) kevesebb információval rendelkezik, ami alacsonyabb felbontást eredményez. Ha az adatok homogének vagy sűrűk, a további részletek vagy árnyalatok elvesztése a lekérdezési időben elfogadhatatlan eredményekhez vezethet, mivel kevesebb részletet lehet használni a közeli vektorok megkülönböztetésére.

Az adattípus hozzárendelése

Index definiálása és létrehozása. Ehhez a lépéshez használhatja az Azure Portalt, az Indexeket – Létrehozás vagy frissítés (REST API) vagy egy Azure SDK-csomagot.

Ez a meződefiníció egy keskeny adattípust használ, amely egy float32 beágyazást fogad el, amely float16 értékként van tárolva. Mint minden vektormező esetében, állítsa be a dimensions és vectorSearchProfile tulajdonságokat. A(z) vectorSearchProfile részletei lényegtelenek az adattípus szempontjából.

Állítsa be retrievable és stored állítsa igazra, ha vizuálisan ellenőrizni szeretné a mező értékeit. Egy későbbi újraépítés során ezeket a tulajdonságokat a csökkentett tárolási követelmények miatt hamisra módosíthatja.

{
    "name": "nameEmbedding",
    "type": "Collection(Edm.Half)",
    "searchable": true,
    "filterable": false,
    "retrievable": true,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "synonymMaps": [],
    "dimensions": 1536,
    "vectorSearchProfile": "myHnswProfile"
}

Ne feledje, hogy a vektormezők nem szűrhetők, rendezhetők és nem kezelhetők. Nem használhatók kulcsként, és nem használhatnak elemzőket vagy szinonimatérképeket.

Éles index használata

A létrehozásukkor adattípusokat rendelhet hozzá az új mezőkhöz. Egy meglévő mező adattípusát nem módosíthatja, és az index újraépítése nélkül nem helyezhet el mezőket. A már éles környezetben lévő indexek esetében gyakori eljárás új mezőket létrehozni a kívánt változatokkal, majd eltávolítani az elavult mezőket egy tervezett index újraépítés során.

Eredmények ellenőrzése

  1. Ellenőrizze, hogy a mező tartalma megegyezik-e az adattípussal. Feltételezve, hogy a vektormező a következőképpen van megjelölve retrievable, használja a Kereséskezelőt vagy a Keresés – POST (REST API) függvényt a vektormező tartalmának visszaadásához.

  2. A vektorindex méretének ellenőrzéséhez tekintse meg a vektorindex méretoszlopát az >Kereséskezelési indexek lapján. Használhat indexeket – Statisztikák lekérése (REST API) vagy egy egyenértékű Azure SDK-metódust is.

Megjegyzés

A mező adattípusa létrehozza a fizikai adatstruktúrát. Ha később módosítani szeretne egy adattípust, állítsa le és építse újra az indexet , vagy hozzon létre egy második mezőt az új definícióval.