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.
Mi az a félpontosságú vektorindexelés?
A fél pontosságú vektorindexelés lehetővé teszi a vektorbeágyazások tárolását és indexelését a standard 32 bites lebegőpontos számok helyett 16 bites lebegőpontos számokkal. Ez az optimalizálás a memóriahasználat és a tárolási költségek jelentős csökkenéséhez vezet, így megvalósíthatóbb a nagyobb adathalmazok és a magasabb dimenziójú vektorok használata. Emellett az adatsűrűség optimalizálásával számos vektoros keresési forgatókönyvben hozzájárulhat a lekérdezési teljesítmény javításához.
Főbb előnyök
- Nagyobb dimenziójú támogatás: A félpontossággal mostantól akár 4000 dimenzióval is indexelheti a vektorokat (ez az előző 2000-hez képest).
- Csökkentett tárterület-lábnyom: A vektorok 16 bites formátumban való tárolása jelentősen csökkenti a szükséges tárterületet a teljes pontosságú vektorokhoz képest. Ez jelentős költségmegtakarításhoz vezethet, különösen a nagy méretű vektoradatbázisok esetében.
- Konfigurálható teljesítmény és pontosság: A keresési eredmények finomhangolásához túlbélyegző paramétert biztosítunk a lekérdezés végrehajtása során. Ez lehetővé teszi a lekérési sebesség és a kisebb pontosság lehetséges hatásai közötti kompromisszumok szabályozását.
Fél-precíziós vektorindex létrehozása
Ha vektorindexet határoz meg a gyűjteményhez, engedélyezheti a fél pontosságú tömörítést a beállítás megadásával a "compression": "half" gyűjteményen cosmosSearchOptionsbelül.
db.runCommand({
"createIndexes": "<vector_collection_name>",
"indexes": [
{
"key": { "<vector_field_name>": "cosmosSearch" },
"name": "<index_name>",
"cosmosSearchOptions": {
"kind": "vector-hnsw", // or vector-ivf
"similarity": "cos",
"dimensions": integer_value, // max 4000
"compression": "half"
}
}
]
});
A keresés javítása a túlmintavételezéssel
A félig precizitású tömörítést használó vektorindex lekérdezésekor az összesítési szakaszban használhatja a oversampling$search paramétert. Ez a paraméter segít csökkenteni a 16 bites ábrázolás által okozott esetleges pontosságvesztést.
A oversampling tényező lehetővé teszi, hogy több potenciális legközelebbi szomszédot kérjen le a fél pontosságú indexből, mint a kívánt eredmények végleges száma (k). Ezeket a jelölteket ezután az eredeti teljes pontosságú vektorokkal hasonlítják össze, hogy nagyobb pontosságot biztosítsanak a végső rangsorolt eredményekben.
Ha például az első 10 (k=10) legtöbb hasonló vektort szeretné megkapni, érdemes lehet egy oversampling vagy 2,0-s értékre állítani. Ezzel "oversampling": 1.5a rendszerrel először 15 jelöltet kapna a fél pontosságú indexből, majd a teljes pontosságú adatokkal finomítaná a top 10-et.
db.collection.aggregate([
{
"$search": {
"cosmosSearch": {
"vector": query_vector,
"path": path_to_property,
"k": num_results_to_return,
"oversampling": double_value
}
}
},
{
"$project": {
"similarityScore": { "$meta": "searchScore" },
"_id": 0
}
}
]);
Megjegyzés:
A oversampling tényezőnek a minimumértékkel 1.0rendelkező dupla értéknek kell lennie. Ez a tényező csak a következővel "compression": "half"létrehozott vektorindexekre vonatkozik: .
Half-Precision és termékkonkvantizáció
Az Azure DocumentDB esetében mind a Half-Precision, mind pedig a termékkvantálás (PQ) a vektorindexeket tömöríti, azonban eltérnek abban, hogy miként valósítják meg a tömörítést, és hogyan hatnak a keresésre.
| Feature | Félprecíziós | Termékkvantálás (PQ) |
|---|---|---|
| Tömörítési módszer | Az egyes vektordimenziókat 16 bitre csökkenti. | A vektorteret altereire osztja, és mindegyiket kvantálja. |
| Maximális méretek | Legfeljebb 4000 | Legfeljebb 16 000 |
| Pontosság módosítása | Kisebb veszteség az alacsonyabb bitmélység miatt. | Potenciálisan nagyobb veszteség, beállítható pqCompressedDims segítségével. |
| Keresési sebesség | Kisebb index miatt mérsékelt sebességnövekedés. | Jelentős sebességnövekedés a nagymértékben tömörített vektorok miatt. |
| Index felépítési ideje | Viszonylag gyors. | Lehet hosszabb is a centroid betanítás (pqSampleSize) miatt. |
| Indextámogatás | HNSW, IVF. | DiskANN. |
| Configuration | Egyszerűen engedélyezze compression: "half". |
További paraméterek: pqCompressedDims, pqSampleSize. |
| Túlmintavételezés használata | Segít a kisebb precízióvesztés kezelésében. | Nélkülözhetetlen a nagyobb tömörítési pontosság helyreállításához. |
| Ideális használati esetek | Mérsékelt memóriacsökkentés, megnövelt méretek, elfogadható pontosságú kompromisszumok. | Nagy adathalmazok, nagy méretek, gyors keresés rangsorolása, túlméretezéssel felügyelt pontosság. |