Nem kötelező vektorpéldányok eltávolítása a tárolóból
Az Azure AI Search az adott számítási feladatokban használt vektormezők több példányát tárolja. Ha nem kell támogatnia egy adott viselkedést, például a nyers vektorok lekérdezési válaszban való visszaadását, beállíthatja az index azon tulajdonságait, amelyek kihagyják a tárterületet az adott számítási feladathoz.
Előfeltételek
- Vektormezők egy konfigurációval rendelkező
vectorSearch
keresési indexben a hierarchikus navigálható kisvilágok (HNSW) vagy a teljes K-legközelebbi szomszéd (KNN) algoritmusok és egy új vektorprofil használatával.
Vektormezők tárolása
Minden vektormező esetében három példányban lehet a vektor, mindegyik más célt szolgál:
Példány | Használat | Vezérlés a következő használatával: |
---|---|---|
A dokumentumindexelés során kapott JSON-t tároló forrásvektorok | Növekményes adatfrissítéshez használható a dokumentumindexelés során vagy mergeOrUpload közbenmerge . Akkor is használható, ha "lekért" vektorokat szeretne visszaadni a lekérdezési válaszban. |
stored tulajdonság vektormezőkön |
Eredeti teljes pontosságú vektorok | A meglévő indexekben ezeket a belső indexműveletekhez és a teljes KNN-kereséshez használják. A tömörítést használó vektorok esetében is használható újraszerkesztéshez (ha engedélyezve van) az ANN-keresés által a vektormezőkön végzett, skaláris vagy bináris kvantálási tömörítéssel végzett, túlméretezett találatkészleten. | rescoringOptions.rescoreStorageMethod tulajdonság a következőben: vectorSearch.compressions . Az API-verziókkal és újabb verziókkal 2024-11-01-Preview létrehozott indexek tömörítetlen vektormezői alapértelmezés szerint nem lesznek hatással a keresési tevékenységekre és a minőségre. |
Vektorok a HNSW gráfban a közelítő szomszédok (ANN) kereséséhez | ANN-lekérdezés végrehajtásához használatos. Teljes pontosságú vektorokból (tömörítés nélkül) vagy kvantált vektorokból áll (tömörítés alkalmazásakor) | Csak a HNSW-ra vonatkozik. Ezek az adatstruktúrák szükségesek a hatékony ANN-kereséshez. |
Megadhatja azokat a tulajdonságokat, amelyek véglegesen elvetik az első két példányt a vektortárolóból.
Az ann vektoros lekérdezés végrehajtásához az utolsó példányra (vektorokra és gráfokra) van szükség. Ha bármilyen tömörítési technikát, például skaláris vagy bináris kvantálást használnak, akkor ezek az adatok erre az adatkészletre lesznek alkalmazva. Ha el szeretné helyezni a veszteséges tömörítést, a második példányt meg kell őriznie újraszerkesztés céljából, hogy javítsa az ANN keresési minőségét.
stored
A tulajdonság beállítása
A stored
tulajdonság egy logikai tulajdonság egy vektormező-definícióban, amely meghatározza, hogy a tároló lekérdezhető vektormező-tartalomhoz (a forráspéldányhoz) van-e lefoglalva. A stored
tulajdonság alapértelmezés szerint igaz. Ha nincs szüksége nyers vektortartalomra egy lekérdezési válaszban, mezőnként akár 50 százalékos tárterületet is menthet, ha hamisra vált stored
.
Megfontolandó szempontok a hamis értékre állításhoz stored
:
Mivel a vektorok nem olvashatók az emberek számára, kihagyhatja őket a RAG-forgatókönyvekben az LLM-eknek küldött eredményekből és a keresési oldalon megjelenített eredményekből. Megtarthatja azonban őket, ha vektorokat használ egy vektortartalmat használó alsóbb rétegbeli folyamatban.
Ha azonban az indexelési stratégia részleges dokumentumfrissítéseket( például "egyesítés" vagy "mergeOrUpload") tartalmaz egy meglévő dokumentumon, a beállítás
stored=false
megakadályozza a mezők tartalomfrissítését az egyesítés során. A keresési dokumentum minden egyes "egyesítési" vagy "mergeOrUpload" műveleténél meg kell adnia a vektormezőket teljes egészében, valamint a frissíteni kívánt nem meg nem felelő mezőket, vagy el kell dobni a vektort.
Fontos
A stored=false
hozzárendelés beállítása visszavonhatatlan. Ez a tulajdonság csak az index létrehozásakor állítható be, és csak vektormezőkön engedélyezett. A meglévő indexek új vektormezőkkel való frissítése nem tudja ezt a tulajdonságot a következőre false
állítani: . Ha később beolvasható vektortartalmat szeretne, el kell helyeznie és újra kell építenie az indexet, vagy létre kell hoznia és be kell töltenie egy új mezőt, amely rendelkezik az új hozzárendeléssel.
A keresési index új vektormezőinél állítsa stored
hamis értékre a vektormező beolvasható tárolójának végleges eltávolításához. Az alábbi példa egy vektormező-definíciót mutat be a stored
tulajdonsággal.
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
A főbb pontok összefoglalása
A lemezen lévő tárhelyre, nem a memóriára van hatással, és nincs hatással a lekérdezésekre. A lekérdezés végrehajtása egy külön vektorindexet használ, amelyet a
stored
tulajdonság nem érint, mert a vektor másolatát mindig tárolja a rendszer.A
stored
tulajdonság a vektormezők indexlétrehozása során van beállítva, és visszafordíthatatlan. Ha később lekért tartalmat szeretne, el kell helyeznie és újra kell építenie az indexet, vagy létre kell hoznia és be kell töltenie egy új mezőt, amely rendelkezik az új hozzárendeléssel.Az alapértelmezett értékek igaz értékre és
retrievable
hamis értékre vannakstored
állítva. Az alapértelmezett konfigurációban a rendszer egy lekért példányt tárol, de a rendszer nem adja vissza automatikusan az eredményeket. Hastored
igaz, bármikor válthatretrievable
az igaz és a hamis között anélkül, hogy újra kellene építenie egy indexet. Hastored
hamis, akkor hamisnak kell lennie,retrievable
és nem módosítható.
rescoreStorageMethod
A tulajdonság beállítása
Feljegyzés
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
A rescoreStorageMethod
tulajdonság a tömörítés használatakor szabályozza a teljes pontosságú vektorok tárolását.
Az API-verziókkal és újabb verziókkal 2024-11-01-Preview
létrehozott indexek tömörítetlen vektormezői alapértelmezés szerint nem lesznek hatással a keresési tevékenységekre és a minőségre. Az API-verzió előtt létrehozott meglévő vektormezők esetében nincs lehetőség az adatok másolatának eltávolítására.
Vektortömörítés esetén a rescoreStorageMethod
tulajdonság alapértelmezés szerint be van állítva preserveOriginals
, így a HNSW-gráfon a veszteséges tömörítés hatásának csökkentése érdekében a teljes pontosságú vektorok megmaradnaka túlbélyegzési és újraszerkesztési képességekhez . Ha nem használja ezeket a képességeket, csökkentheti a vektoros tárolást a következő beállítással rescoreStorageMethod
discardOriginals
: .
Fontos
A rescoreStorageMethod
tulajdonság beállítása visszafordíthatatlan, és a tömörítési módszertől függően eltérő keresési minőségi veszteséggel jár. Ez az index létrehozásakor vagy új vektormezők hozzáadásakor létrehozott vagy újabb indexeken 2024-11-01-Preview
állítható be.
Ha skaláris vagy bináris kvantálást szeretne használni, javasoljuk, hogy tartsa meg a rescoreStorageMethod
készletet a keresési minőség maximalizálása érdekében preserveOriginals
.
A tulajdonság beállítása:
Használja az Index létrehozása, az Index 2024-11-01 előzetes verziójú REST API-k létrehozása vagy frissítése, illetve a szolgáltatást biztosító Azure SDK bétacsomag használata.
Adjon hozzá egy szakaszt
vectorSearch
az indexhez profilokkal, algoritmusokkal és tömörítésekkel.A tömörítések alatt adja hozzá
rescoringOptions
igaz értékreenableRescoring
,defaultOversampling
állítsa pozitív egész számra, ésrescoreStorageMethod
állítsa a következőrepreserveOriginals
: .PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null } ] } }