Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure AI Keresés támogatja a skaláris és bináris kvantálást a vektorok méretének csökkentéséhez a keresési indexben. A kvantálás azért ajánlott, mert csökkenti a float16 és lebegőpontos 32 beágyazások memória- és lemeztárolását is. A veszteséges tömörítés hatásainak ellensúlyozásához hozzáadhat túlmintavételezést és újraértékelést.
A beépített kvantálás használatához kövesse az alábbi lépéseket:
- Kezdje vektormezőkkel és egy konfigurációval
vectorSearchegy index számára -
vectorSearch.compressionshozzáadása - Adjon hozzá egy
scalarQuantizationvagybinaryQuantizationkonfigurációt, és adjon neki nevet - Választható tulajdonságok beállítása a veszteséges indexelés hatásainak mérsékléséhez
- Hozzon létre egy új vektorprofilt, amely a nevesített konfigurációt használja
- Új vektormező létrehozása az új vektorprofillal
- Az index betöltése float32 vagy float16 adatokkal, amelyek számszerűsítve lesznek az indexelés során a megadott konfigurációval
- Igény szerint kvantált adatokat kérdezhet le a túlméretezési paraméterrel. Ha a vektormező nem ad meg túlsamplinget a definíciójában, akkor a lekérdezési időpontban is hozzáadhatja.
Jótanács
Azure AI Keresés: A vektorköltségek csökkentése akár 92,5% új tömörítési technikákkal összehasonlítja a tömörítési stratégiákat, és elmagyarázza a tárolási és költségmegtakarításokat. Emellett metrikákat is tartalmaz a relevancia normalizált diszkontált összesített nyereségen (NDCG) alapuló méréséhez, amely azt mutatja, hogy a keresési minőség feláldozása nélkül tömörítheti az adatokat.
Előfeltételek
-
Vektormezők a keresési indexben, ahol a konfiguráció meghatározza, hogy a Hierarchikus Navigálható Kis Világok (HNSW) vagy a Kimerítő K-Legközelebbi Szomszéd (KNN) algoritmust, valamint egy új vektorprofilt tartalmaz
vectorSearch.
Támogatott kvantálási technikák
A kvantálás lebegőpontos típusú vektorokat fogadó vektormezőkre vonatkozik. A cikkben szereplő példákban a mező adattípusa a bejövő float32-beágyazásokhoz tartozik Collection(Edm.Single) , de a float16 is támogatott. Ha a vektorok tömörítéssel konfigurált mezőre érkeznek, a motor kvantálást végez a vektoradatok memóriabeli és lemezbeli lábnyomának csökkentése érdekében.
Kétféle kvantálás támogatott:
A skaláris kvantálás szűkebb adattípusokba tömöríti az lebegőpontos értékeket. Az AI Search jelenleg az int8-at támogatja, amely 8 bites, így négyszeresére csökkenti a vektorindex méretét.
A bináris kvantálás lebegőpontos számokat alakít bináris bitekké, ez 1 bitet foglal el. Ez akár 28-szor kisebb vektorindex-méretet eredményez.
Feljegyzés
Bár az ingyenes szolgáltatások támogatják a kvantálást, a korlátozott tárterületkvóta miatt nem mutatják be a teljes tárterület-megtakarítást.
A skaláris kvantálás működése az Azure AI Keresésben
A skaláris kvantálás csökkenti az egyes számok felbontását az egyes vektorok beágyazásán belül. Az egyes számokat nem 16 bites vagy 32 bites lebegőpontos számként írja le, hanem egy 8 bites egész számot használ. Azonosítja a számtartományt (általában a 99. percentilis minimumot és a maximumot), és véges számú szintre vagy tárolóra osztja őket, és mindegyik tárolóhoz azonosítót rendel. Az 8 bites skaláris kvantálásban 2^8, vagyis 256 lehetséges rekesz található.
A vektor minden összetevője a legközelebbi reprezentatív értékre van leképezve ebben a kvantálási szintek készletében egy folyamat során, amely egy valós számot a legközelebbi egész számra kerekít. A kvantált 8 bites vektorban az azonosítószám az eredeti érték helyett áll. A kvantálás után az egyes vektorokat az összetevőket tartalmazó tárolók azonosítóinak tömbje jelöli. Ezek a kvantált vektorok sokkal kevesebb bit tárolását igénylik az eredeti vektorhoz képest, ami csökkenti a tárolási követelményeket és a memóriaigényt.
A bináris kvantálás működése az Azure AI Keresésben
A bináris kvantálás úgy tömöríti a nagy dimenziójú vektorokat, hogy minden összetevőt egyetlen bitként jelöl, akár 0, akár 1. Ez a módszer jelentősen csökkenti a memóriaigényt, és felgyorsítja a vektor-összehasonlító műveleteket, amelyek kulcsfontosságúak a keresési és lekérési feladatokhoz. A teljesítménytesztek akár 96%-os csökkenést is mutatnak a vektorindex méretében.
Különösen hatékony az 1024-nél nagyobb méretű beágyazásokhoz. Kisebb méretek esetén javasoljuk, hogy tesztelje a bináris kvantálás minőségét, vagy próbálja inkább a skalárt. Azt is megállapítottuk, hogy a bináris kvantálás nagyon jól működik, ha a beágyazások nulla körül vannak. Az OpenAI, a Cohere és a Mistral által kínált legnépszerűbb beágyazási modellek középpontja nulla.
Támogatott újrabecslési technikák
A rescoring egy opcionális technika, amellyel a vektorkvantizálás miatti adatvesztés eltolható. A lekérdezés végrehajtása során túlmintavételezést alkalmaz a további vektorok kiválasztására, valamint kiegészítő információkat használ az elsődleges eredmények újbóli értékelésére, amelyeket a lekérdezés talált. A kiegészítő információk vagy tömörítetlen, eredeti, teljes pontosságú vektorok, vagy – amennyiben csak a bináris kvantálás lehetséges – lehetőség van arra, hogy a bináris kvantált dokumentumjelölteket ismételten pontozza a lekérdezésvektor alapján.
Csak a HNSW-gráfok engedélyezik az újraértékelést. A teljes körű KNN nem támogatja az újraszámlálást, mert definíció szerint az összes vektort a lekérdezés időpontjában ellenőrzi a rendszer, ami irrelevánssá teszi az újraszámlálást és a túlmintavételezést.
A rescoring beállítások az indexben vannak megadva, de a túlmintavételezési lekérdezési paraméter hozzáadásával lekérdezéskor is meghívhatja az újrasorolást.
| Objektum | Tulajdonságok |
|---|---|
| Index | Adja hozzá RescoringOptions a vektortömörítések szakaszához. A cikkben szereplő példák a következőt használják RescoringOptions: |
| Query | Adja hozzá oversamplingRawVectorQuery vagy VectorizableTextQuery definíciók nevében. A oversampling hozzáadása pontozás újbóli kiszámítását idézi elő lekérdezéskor. |
Feljegyzés
Az újraskálázási paraméternevek az elmúlt néhány kiadás során megváltoztak. Ha régebbi előzetes verziójú API-t használ, tekintse át a kompatibilitástörő változások kezelésére vonatkozó frissítési utasításokat .
Az újraszámolás általános folyamata a következő:
- A vektorlekérdezés tömörített vektormezőkön fut.
- A vektoros lekérdezés visszaadja a túlmintavételezett k legjobb jelöltet.
- A túl mintavételezett k-jelölteket újraértékelik, akár a skalár kvantálás tömörítetlen eredeti vektorai alapján, akár a bináris kvantálás pontszorzata alapján.
- A rekcoring után a rendszer úgy módosítja az eredményeket, hogy a relevánsabb találatok jelenjenek meg először.
A skaláris kvantált vektorok túlméretezéséhez szükség van az eredeti teljes pontosságú vektorok rendelkezésre állására. A bináris kvantált vektorok túlméretezése teljes pontosságú vektorokat (preserveOriginals) vagy a bináris vektor (discardOriginals) pont szorzatát használhatja. Ha a vektoros tárolást optimalizálja, mindenképpen tartsa meg a teljes pontosságú vektorokat az indexben, ha újraszerkesztéshez szüksége van rájuk. További információ: Az opcionális vektorpéldányok eltávolítása a tárolóból.
"Tömörítések" hozzáadása keresési indexhez
Ez a szakasz az index egy vectorsSearch.compressions szakaszának megadását ismerteti. Az alábbi példa egy részleges indexdefiníciót mutat be egy vektormezőt tartalmazó mezőgyűjteménysel.
A tömörítési példa tartalmazza mind a scalarQuantization, mind a binaryQuantization. A szükséges számú tömörítési konfigurációt megadhatja, majd hozzárendelheti a kívánt konfigurációkat egy vektorprofilhoz.
vectorSearch.Compressions A szintaxis a stabil és az előzetes REST API-k között változik, az előzetes verzió további tárolási optimalizálási lehetőségeket ad hozzá, valamint a meglévő szintaxis módosításait. A visszamenőleges kompatibilitás belső API-leképezésekkel megmarad, de javasoljuk, hogy a 2024-11-01-es verziójú és a jövőbeli verziókra vonatkozó kódban alkalmazza az újabb tulajdonságokat.
A tömörítési beállítások konfigurálásához használja az Index létrehozása vagy az Index létrehozása vagy frissítése REST API-t.
POST https://[servicename].search.windows.net/indexes?api-version=2025-09-01
{
"name": "my-index",
"description": "This is a description of this index",
"fields": [
{ "name": "Id", "type": "Edm.String", "key": true, "retrievable": true, "searchable": true, "filterable": true },
{ "name": "content", "type": "Edm.String", "retrievable": true, "searchable": true },
{ "name": "vectorContent", "type": "Collection(Edm.Single)", "retrievable": false, "searchable": true, "dimensions": 1536,"vectorSearchProfile": "vector-profile-1"},
],
"vectorSearch": {
"profiles": [
{
"name": "vector-profile-1",
"algorithm": "use-hnsw",
"compression": "use-scalar"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": { },
"exhaustiveKnnParameters": null
}
],
"compressions": [
{
"scalarQuantizationParameters": {
"quantizedDataType": "int8"
},
"name": "mySQ8",
"kind": "scalarQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "preserveOriginals"
},
"truncationDimension": 2
},
{
"name": "myBQC",
"kind": "binaryQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "discardOriginals"
},
"truncationDimension": 2
}
]
},
}
Főbb pontok:
kindbeállításnak kell lennie a következőre:scalarQuantizationvagybinaryQuantization.rescoringOptionsolyan tulajdonságok gyűjteménye, amelyek a veszteséges tömörítés eltolására szolgálnak a lekérdezési eredményeknek a kvantálás előtt létező eredeti teljes pontosságú vektorok használatával történő ismételt rögzítése révén. Ahhoz, hogy az utóértékelés működjön, rendelkeznie kell a tartalmat biztosító vektorpéldánnyal.rescoreStorageMethodbeállításadiscardOriginals-re megakadályozza aenableRescoringésdefaultOversamplinghasználatát. A vektoros tárolásról további információt a nem kötelező vektorpéldányok kizárása a tárolóból című témakörben talál."rescoreStorageMethod": "preserveOriginals"A rescores vektorkeresési eredmények az eredeti teljes pontosságú vektorokkal a keresési pontszám és a rangsor módosításához vezethetnek, így elősegítve a rescoring lépés által meghatározott relevánsabb találatokat. Bináris kvantálás esetén a minőség csökkentése nélkül beállíthatjarescoreStorageMethod-tdiscardOriginals, hogy tovább csökkentse a tárolást. A bináris kvantáláshoz nincs szükség eredeti vektorokra.defaultOversamplinga lehetséges eredmények szélesebb halmazát veszi figyelembe, hogy ellensúlyozza a kvantálásból származó információk csökkenését. A lehetséges eredmények képlete aklekérdezésben található, túlbélyegző szorzóval. Ha például a lekérdezés 5-öt ad megk, és a mintavételezés 20, akkor a lekérdezés 100 dokumentumot kér le az újrarangsoroláshoz, az eredeti tömörítetlen vektor használatával erre a célra. A rendszer csak a legjobbankújrarangsorolt eredményeket adja vissza. Ez a tulajdonság opcionális. Az alapértelmezett érték 4.quantizedDataTypenem kötelező, és csak a skaláris kvantálásra vonatkozik. Ha hozzáadja, aztint8-ra kell beállítani. Jelenleg ez az egyetlen primitív adattípus, amelyet a skaláris kvantálás támogat. Az alapértelmezett szint aint8.truncationDimensiona text-embedding-3 modellek belső képességeire koppintva "különböző részletességű információkat kódol, és lehetővé teszi, hogy egyetlen beágyazás alkalmazkodjon az alsóbb rétegbeli feladatok számítási korlátaihoz" (lásd : Matryoshka Representation Learning). Csonkolt dimenziókat újraszámítási beállításokkal vagy anélkül is használhatja. A szolgáltatás Azure AI Keresésben való implementálásával kapcsolatos további információkért lásd : Truncate dimenziók MRL-tömörítéssel.
A vektorkeresési algoritmus hozzáadása
A HNSW- vagy eKNN-algoritmust a 2024-11-01-es előzetes verziójú REST API-ban vagy újabb verzióban használhatja. A stabil verzióhoz csak a HNSW-t használja. Ha újraindítást szeretne, a HNSW-t kell választania.
"vectorSearch": {
"profiles": [ ],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [ <see previous section>]
}
Új vektorprofil létrehozása és hozzárendelése
Új kvantálási konfiguráció használatához létre kell hoznia egy új vektorprofilt. A tömörített indexek memóriabeli létrehozásához új vektorprofil létrehozása szükséges. Az új profil a HNSW-t használja.
Ugyanebben az indexdefinícióban hozzon létre egy új vektorprofilt, és adjon hozzá egy tömörítési tulajdonságot és egy algoritmust. Íme két profil, egy minden kvantálási megközelítéshez.
"vectorSearch": { "profiles": [ { "name": "vector-profile-hnsw-scalar", "compression": "use-scalar", "algorithm": "use-hnsw", "vectorizer": null }, { "name": "vector-profile-hnsw-binary", "compression": "use-binary", "algorithm": "use-hnsw", "vectorizer": null } ], "algorithms": [ <see previous section> ], "compressions": [ <see previous section> ] }Vektorprofil hozzárendelése új vektormezőhöz. A mező adattípusa float32 vagy float16.
Az Azure AI Keresésben a float32 és float16 típusok entitásadat-modell (EDM) megfelelői rendre
Collection(Edm.Single)ésCollection(Edm.Half).{ "name": "vectorContent", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "vector-profile-hnsw-scalar", }Töltse be az indexet indexelőkkel a lekéréses modellek indexeléséhez, vagy API-k használatával a leküldéses modellek indexelését.
Kvantált vektormező lekérdezése túlméretezés használatával
A tömörített vagy kvantált vektormezők lekérdezési szintaxisa megegyezik a nem tömörített vektormezőkével, kivéve, ha felül szeretné bírálni a túlméretezéshez és az ismételt javításhoz társított paramétereket. Hozzáadhat egy oversampling paramétert a túlmintavételezés és újraértékelés lekérdezési időpontban történő meghívásához.
A kéréshez használja a Keresési dokumentumok parancsot .
Ne feledje, hogy az index vektortömörítési definíciója a , enableRescoringés rescoreStorageMethod a veszteséges tömörítés hatásainak mérséklésére szolgáló beállításokkal defaultOversamplingrendelkezik. Az alapértelmezett értékeket felülbírálhatja, hogy a lekérdezési időpontban eltérő legyen a viselkedés. Ha például defaultOversampling 10.0, a lekérdezési kérelemben másra is módosíthatja.
A túlmintavételi paramétert akkor is beállíthatja, ha az index nem rendelkezik explicit módon a javítási lehetőségekkel vagy defaultOversampling definíciókkal. A lekérdezési időpont megadása oversampling felülbírálja a lekérdezés indexbeállításait, és a lekérdezést az igaz értékekkel enableRescoring hajtja végre.
POST https://[service-name].search.windows.net/indexes/demo-index/docs/search?api-version=2025-09-01
{
"vectorQueries": [
{
"kind": "vector",
"vector": [8, 2, 3, 4, 3, 5, 2, 1],
"fields": "myvector",
"oversampling": 12.0,
"k": 5
}
]
}
Főbb pontok:
A túlmintavétel a vektormezőkre vonatkozik, amelyek vektortömörítésen mennek keresztül a vektorprofil-hozzárendelés szerint.
A lekérdezésben a túlmintavételezés felülbírálja az
defaultOversamplingindex értékét, vagy a lekérdezési időpontban meghívja a túlmintavételezést és az újrarangsorolást, még akkor is, ha az index tömörítési konfigurációja nem adott meg túlmintavételi vagy újrarangsorolási beállításokat.